mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
b7eb2e64e3
Summary: Let's switch to xdiff for its better diff quality and performance! The test changes demonstrate xdiff's better diff quality. Reviewed By: ryanmce Differential Revision: D7135206 fbshipit-source-id: 1775df6fc0f763df074b4f52779835d6ef0f3a4e
136 lines
1.6 KiB
Perl
136 lines
1.6 KiB
Perl
$ hg init
|
|
|
|
Base
|
|
|
|
$ cat << EOF > A
|
|
> S
|
|
> S
|
|
> S
|
|
> S
|
|
> S
|
|
> EOF
|
|
|
|
$ hg ci -m Base -q -A A
|
|
|
|
Other
|
|
|
|
$ cat << EOF > A
|
|
> S
|
|
> S
|
|
> X
|
|
> S
|
|
> S
|
|
> EOF
|
|
|
|
$ hg ci -m Other -q
|
|
$ hg bookmark -qir. other
|
|
|
|
Local
|
|
|
|
$ hg up '.^' -q
|
|
|
|
$ cat << EOF > A
|
|
> S
|
|
> S
|
|
> S
|
|
> X
|
|
> S
|
|
> S
|
|
> S
|
|
> EOF
|
|
|
|
$ hg ci -m Local -q
|
|
|
|
If the diff algorithm tries to group multiple hunks into one. It will cause a
|
|
merge conflict in the middle.
|
|
|
|
$ hg merge other -q -t :merge3
|
|
warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
|
|
[1]
|
|
|
|
$ cat A
|
|
S
|
|
S
|
|
<<<<<<< working copy: 14ce9a1fcd1e - test: Local
|
|
S
|
|
X
|
|
S
|
|
||||||| base
|
|
S
|
|
=======
|
|
X
|
|
>>>>>>> merge rev: 4171d1cf524c other - test: Other
|
|
S
|
|
S
|
|
|
|
In a more complex case, where hunks cannot be grouped together, the result will
|
|
look weird in xdiff's case but okay in bdiff's case where there is no conflict,
|
|
and everything gets auto resolved reasonably.
|
|
|
|
$ rm -rf .hg
|
|
$ hg init
|
|
|
|
$ cat << EOF > A
|
|
> S
|
|
> S
|
|
> Y
|
|
> S
|
|
> Y
|
|
> S
|
|
> S
|
|
> EOF
|
|
|
|
$ hg ci -m Base -q -A A
|
|
|
|
$ cat << EOF > A
|
|
> S
|
|
> S
|
|
> Y
|
|
> X
|
|
> Y
|
|
> S
|
|
> S
|
|
> EOF
|
|
|
|
$ hg ci -m Other -q
|
|
$ hg bookmark -qir. other
|
|
|
|
$ hg up '.^' -q
|
|
|
|
$ cat << EOF > A
|
|
> S
|
|
> S
|
|
> S
|
|
> Y
|
|
> X
|
|
> Y
|
|
> S
|
|
> S
|
|
> S
|
|
> EOF
|
|
|
|
$ hg ci -m Local -q
|
|
|
|
$ hg merge other -q -t :merge3
|
|
warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
|
|
[1]
|
|
|
|
$ cat A
|
|
S
|
|
S
|
|
<<<<<<< working copy: 057fc5d1a99c - test: Local
|
|
S
|
|
||||||| base
|
|
Y
|
|
S
|
|
=======
|
|
Y
|
|
X
|
|
>>>>>>> merge rev: f0ba17ae43c9 other - test: Other
|
|
Y
|
|
X
|
|
Y
|
|
S
|
|
S
|
|
S
|