Commits

Will Kiefer committed ad8db26

Initial commit.

Comments (0)

Files changed (2)

+#!/usr/bin/env bash
+
+# Try to match the temp dir to a revision, so we can use that as a label
+
+REVISION_REGEX="^[^/]+\.([a-f0-9]{12,12})(/|$)"
+
+if [[ "$1" =~ $REVISION_REGEX ]]; then
+	LABEL1_SUFFIX=" (${BASH_REMATCH[1]})"
+fi
+
+if [[ "$2" =~ $REVISION_REGEX ]]; then
+	LABEL2_SUFFIX=" (${BASH_REMATCH[1]})"
+fi
+
+# If it's not a directory, just forward it to ksdiff
+if [ ! -d "$1" ]; then
+	ksdiff "$1" --label "$1$LABEL1_SUFFIX" "$2" --label "$2$LABEL2_SUFFIX"
+	exit
+fi
+
+OLD_DIR="$1"
+NEW_DIR="$2"
+
+(cd "$OLD_DIR" && find . -print0) | while read -d $'\0' file; do
+	# Don't do anything with directories
+	if [ -d "$OLD_DIR/$file" ]; then
+		continue
+	fi
+
+	# Make sure we have to do with files here
+	if [ ! -f "$OLD_DIR/$file" ]; then
+		echo "I'm not sure what this is, skipping it: $OLD_DIR/$file"
+		continue
+	fi
+
+	if [ -e "$NEW_DIR/$file" ]; then
+		# Diff the old file with the new file
+		ksdiff "$OLD_DIR/$file" --label "$file$LABEL1_SUFFIX" --snapshot "$NEW_DIR/$file" --label "$file$LABEL2_SUFFIX" --snapshot $LABEL2
+	else # File does not exist
+		tempname=`basename $file`
+        TMPFILE=`mktemp -t ${tempname}`
+		EXT=${file##*.}
+		TMPFILEEXT="$TMPFILE.$EXT"
+		mv $TMPFILE $TMPFILEEXT
+		ksdiff "$OLD_DIR/$file" --label "$file (remove)" "$TMPFILEEXT" --label "$file"
+	fi
+done
+
+# We have diffed all existing files in A with the existing files in B.
+# We still have to describe the files that were added in B
+(cd "$NEW_DIR" && find . -print0) | while read -d $'\0' file; do
+	if [ -f "$NEW_DIR/$file" ] && [ ! -e "$OLD_DIR/$file" ]; then
+		tempname=`basename $file`
+        TMPFILE=`mktemp -t ${tempname}`
+		EXT=${file##*.}
+		TMPFILEEXT="$TMPFILE.$EXT" 
+		mv $TMPFILE $TMPFILEEXT
+		ksdiff "$TMPFILEEXT" --label "$file (add)" "$NEW_DIR/$file" --label "$file$LABEL2_SUFFIX"
+	fi
+done
+A mod to the default Mercurial integration script for Kaleidoscope (kaleidoscopeapp.com).
+
+Nothing fancy, this just ensures that you see added and removed files properly when using 'hg ksdiff'. The current behavior is just to print out added/removed filenames to the terminal.
+
+To install:
+ - copy the scripts here (just 'hg' for now) to /Applications/Kaleidoscope.app/Contents/Resources/wrappers