3 # Browse snapshots of a given path and run meld to compare with
5 # $1: path -- into mounted nilfs
6 # $2: [path] -- to compare with
8 ## Prepare for mounting of snapshots
10 mkdir -p $MOUNT || exit 1
12 function exitbrowse() {
13 umount $MOUNT 2>/dev/null
17 trap "exitbrowse" 0 2 9 15
19 DF=( $(df $1 | awk '{d=$1;p=$NF;} END {printf "%s %s", d, p;}') )
27 function snap2iselect() {
28 lscp -r -s $NILFSDEV | while read CNO DATE TIME REST ; do
29 [ $CNO = CNO ] && continue
30 echo " <s:$CNO> [$CNO] ${DATE} ${TIME}"
37 echo "${x}" | sed 's/\(\S\+\s\+\)\{8\}//;s/\s*$//'
42 LEFT="$(cd $DIR0/${1#/} && ls -l)"
43 RIGHT="$(cd $DIR1/${1#/} && ls -l)"
44 SEL="$(diff -W 500 -y --left-column <(echo "$LEFT") <(echo "$RIGHT")| \
46 iselect -n "($CNO ~ $DIR1)" -K -kd -kx -kz -a -t "${1-/}" )"
49 [ -z "$SEL" ] && break
52 ZEL="$(echo "${SEL}" | sed 's/^>\s*//;s/\s*$//')"
53 if [ -z "${ZEL##d*}" ] ; then
55 dirsdiff "$1/$D" || return 1
58 diff -D "$CNO" -N $DIR0/${1#/}/$D $DIR1/${1#/}/$D |\
63 d) # Find next dept-first difference
70 echo "*** ${KEY}:${SEL}"
79 SNAPS="$(snap2iselect)"
80 CNO="$(iselect -n "($DIR1/)" \
81 -t "Snapshots for $NILFSDEV=$NILFSROOT" -p $N -P \
82 "Select snapshot" "$SNAPS")"
83 [ -z "$CNO" ] && break
86 if sudo mount -t nilfs2 -oro,cp=$CNO $NILFSDEV $MOUNT ; then