Plan 9 from Bell Labs’s /usr/web/sources/contrib/dho/vcs/diff

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


#!/bin/rc

fn usage {
	echo 'usage: vcs/diff [rev1] [rev2]' >[1=2]
	exit usage
}

fn f { du -a $* | awk '{ print $2 }'   }

if (! ~ $#* 1 2) {
	usage
}

if (test -e .vcs/root) {
	root=`{cat .vcs/root}
}
if not {
	echo 'Can''t find root.' >[1=2]
	exit noroot
}

if (! test -d $root/.commits/$1) {
	echo 'Revision 1 doesn''t exist.' >[1=2]
	exit 'missing rev1'
}

if (! test -d $root/.commits/$2) {
	echo 'Revision 2 doesn''t exist.' >[1=2]
	exit 'missing rev2'
}

rev1dir=`{echo /n/$user^'vcsdiff'^$1
if (~ $#* 2) {
	rev2dir=`{echo /n/$user^'vcsdiff'^$2
}
if not {
	rev2dir=$root
}

vacfs -m $rev1dir $root^'/.commits/'^$1^'/.vac'
if (~$#* 2) {
	vacfs -m $rev2dir $root^'/.commits/'^$2^'/.vac'
}

tmpfile=/tmp/vcsdiff^$user^$1^'to'^$2

for (i in `{f $rev1dir}) {
	file=`{echo $i | sed 's,'^$rev1dir^',,'}
	if (test -e $rev2dir^$file) {
		diff -c $i $rev2dir^$file
	}
	if not {
		echo $i Deleted
	}
	echo $file >> $tmpfile
}

for (i in `{f $rev2dir}) {
	file=`{echo $i | sed 's,'^$rev2dir^',,'}
	grep -s $file $tmpfile
	if (! ~ $status '') {
		# Only new files will match this.
		diff -c /dev/null $i
	}
}

rm -f $tmpfile

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.