test-extdiff.t
198 lines
| 4.1 KiB
| text/troff
|
Tads3Lexer
/ tests / test-extdiff.t
Mads Kiilerich
|
r15442 | $ "$TESTDIR/hghave" symlink execbit || exit 80 | ||
Mads Kiilerich
|
r15441 | |||
Adrian Buehlmann
|
r12304 | $ echo "[extensions]" >> $HGRCPATH | ||
$ echo "extdiff=" >> $HGRCPATH | ||||
$ hg init a | ||||
$ cd a | ||||
$ echo a > a | ||||
$ echo b > b | ||||
$ hg add | ||||
adding a | ||||
adding b | ||||
Should diff cloned directories: | ||||
$ hg extdiff -o -r $opt | ||||
Only in a: a | ||||
Only in a: b | ||||
Matt Mackall
|
r12316 | [1] | ||
Adrian Buehlmann
|
r12304 | |||
$ echo "[extdiff]" >> $HGRCPATH | ||||
$ echo "cmd.falabala=echo" >> $HGRCPATH | ||||
$ echo "opts.falabala=diffing" >> $HGRCPATH | ||||
$ hg falabala | ||||
diffing a.000000000000 a | ||||
Matt Mackall
|
r12316 | [1] | ||
Adrian Buehlmann
|
r12304 | |||
$ hg help falabala | ||||
hg falabala [OPTION]... [FILE]... | ||||
use 'echo' to diff repository (or selected files) | ||||
Show differences between revisions for the specified files, using the | ||||
'echo' program. | ||||
When two revision arguments are given, then changes are shown between | ||||
those revisions. If only one revision is specified then that revision is | ||||
compared to the working directory, and, when no revisions are specified, | ||||
the working directory files are compared to its parent. | ||||
options: | ||||
Matt Mackall
|
r15145 | -o --option OPT [+] pass option to comparison program | ||
-r --rev REV [+] revision | ||||
-c --change REV change made by revision | ||||
-I --include PATTERN [+] include names matching the given patterns | ||||
-X --exclude PATTERN [+] exclude names matching the given patterns | ||||
Adrian Buehlmann
|
r12304 | |||
[+] marked option can be specified multiple times | ||||
Matt Mackall
|
r15202 | use "hg -v help falabala" to show more info | ||
Adrian Buehlmann
|
r12304 | |||
$ hg ci -d '0 0' -mtest1 | ||||
$ echo b >> a | ||||
$ hg ci -d '1 0' -mtest2 | ||||
Should diff cloned files directly: | ||||
$ hg falabala -r 0:1 | ||||
Patrick Mezard
|
r13762 | diffing */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) | ||
Matt Mackall
|
r12316 | [1] | ||
Adrian Buehlmann
|
r12304 | |||
Test diff during merge: | ||||
$ hg update -C 0 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo c >> c | ||||
$ hg add c | ||||
$ hg ci -m "new branch" -d '1 0' | ||||
created new head | ||||
$ hg merge 1 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
Should diff cloned file against wc file: | ||||
Erik Zielke
|
r12587 | $ hg falabala | ||
Patrick Mezard
|
r13762 | diffing */extdiff.*/a.2a13a4d2da36/a */a/a (glob) | ||
Matt Mackall
|
r12316 | [1] | ||
Adrian Buehlmann
|
r12304 | |||
Test --change option: | ||||
$ hg ci -d '2 0' -mtest3 | ||||
$ hg falabala -c 1 | ||||
Patrick Mezard
|
r13762 | diffing */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) | ||
Matt Mackall
|
r12316 | [1] | ||
Adrian Buehlmann
|
r12304 | |||
Check diff are made from the first parent: | ||||
$ hg falabala -c 3 || echo "diff-like tools yield a non-zero exit code" | ||||
Patrick Mezard
|
r13762 | diffing */extdiff.*/a.2a13a4d2da36/a a.46c0e4daeb72/a (glob) | ||
Adrian Buehlmann
|
r12304 | diff-like tools yield a non-zero exit code | ||
Test extdiff of multiple files in tmp dir: | ||||
$ hg update -C 0 > /dev/null | ||||
$ echo changed > a | ||||
$ echo changed > b | ||||
$ chmod +x b | ||||
Diff in working directory, before: | ||||
$ hg diff --git | ||||
diff --git a/a b/a | ||||
--- a/a | ||||
+++ b/a | ||||
@@ -1,1 +1,1 @@ | ||||
-a | ||||
+changed | ||||
diff --git a/b b/b | ||||
old mode 100644 | ||||
new mode 100755 | ||||
--- a/b | ||||
+++ b/b | ||||
@@ -1,1 +1,1 @@ | ||||
-b | ||||
+changed | ||||
Edit with extdiff -p: | ||||
Prepare custom diff/edit tool: | ||||
$ cat > 'diff tool.py' << EOT | ||||
> #!/usr/bin/env python | ||||
> import time | ||||
> time.sleep(1) # avoid unchanged-timestamp problems | ||||
> file('a/a', 'ab').write('edited\n') | ||||
> file('a/b', 'ab').write('edited\n') | ||||
> EOT | ||||
$ chmod +x 'diff tool.py' | ||||
Matt Mackall
|
r12328 | will change to /tmp/extdiff.TMP and populate directories a.TMP and a | ||
and start tool | ||||
Adrian Buehlmann
|
r12304 | $ hg extdiff -p "`pwd`/diff tool.py" | ||
Matt Mackall
|
r12316 | [1] | ||
Adrian Buehlmann
|
r12304 | |||
Diff in working directory, after: | ||||
$ hg diff --git | ||||
diff --git a/a b/a | ||||
--- a/a | ||||
+++ b/a | ||||
@@ -1,1 +1,2 @@ | ||||
-a | ||||
+changed | ||||
+edited | ||||
diff --git a/b b/b | ||||
old mode 100644 | ||||
new mode 100755 | ||||
--- a/b | ||||
+++ b/b | ||||
@@ -1,1 +1,2 @@ | ||||
-b | ||||
+changed | ||||
+edited | ||||
Test extdiff with --option: | ||||
$ hg extdiff -p echo -o this -c 1 | ||||
Patrick Mezard
|
r13762 | this */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) | ||
Matt Mackall
|
r12316 | [1] | ||
Adrian Buehlmann
|
r12304 | |||
$ hg falabala -o this -c 1 | ||||
Patrick Mezard
|
r13762 | diffing this */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) | ||
Matt Mackall
|
r12316 | [1] | ||
Adrian Buehlmann
|
r12304 | |||
David Wolever
|
r13660 | Test with revsets: | ||
$ hg extdif -p echo -c "rev(1)" | ||||
Patrick Mezard
|
r13762 | */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) | ||
Matt Mackall
|
r12316 | [1] | ||
David Wolever
|
r13660 | |||
$ hg extdif -p echo -r "0::1" | ||||
Patrick Mezard
|
r13762 | */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) | ||
David Wolever
|
r13660 | [1] | ||
Thomas Arendsen Hein
|
r14024 | |||
Patrick Mezard
|
r14021 | $ cd .. | ||
Adrian Buehlmann
|
r12304 | |||
Thomas Arendsen Hein
|
r14024 | Test symlinks handling (issue1909) | ||
Patrick Mezard
|
r14021 | $ hg init testsymlinks | ||
$ cd testsymlinks | ||||
$ echo a > a | ||||
$ hg ci -Am adda | ||||
adding a | ||||
$ echo a >> a | ||||
$ ln -s missing linka | ||||
$ hg add linka | ||||
$ hg falabala -r 0 --traceback | ||||
diffing testsymlinks.07f494440405 testsymlinks | ||||
[1] | ||||
$ cd .. | ||||