##// END OF EJS Templates
copies: calculate mergecopies() based on pathcopies()...
copies: calculate mergecopies() based on pathcopies() When copies are stored in changesets, we need a changeset-centric version of mergecopies() just like we have a changeset-centric version of pathcopies(). I think the natural way of thinking about mergecopies() is in terms of pathcopies() from the base to each of the commits. So if we can rewrite mergecopies() based on two such pathcopies() calls, we'll get the changeset-centric version for free. That's what this patch does. A nice bonus is that it ends up being a lot simpler. mergecopies() has accumulated a lot of technical debt over time. One good example is the code for dealing with grafts (the "partial/incomplete/dirty" stuff). Since pathcopies() already deals with backwards renames and ping-pong renames, we get that for free. I've run tests with hard-coded debug logging for "fullcopy" and while I haven't looked at every difference it produces, all the ones I have looked at seemed reasonable to me. I'm a little surprised that no more tests fail when run with '--extra-config-opt experimental.copies.read-from=compatibility' compared to before this patch. This patch also fixes the broken cases in test-annotate.t and test-fastannotate.t. It also enables the part of test-copies.t that was previously disabled exactly because mergecopies() needed to get a changeset-centric version. One drawback of the rewritten code is that we may now make remotefilelog prefetch more files. We used to prefetch files that were unique to either side of the merge compared to the other. We now prefetch files that are unique to either side of the merge compared to the base. This means that if you added the same file to each side, we would not prefetch it before, but we would now. Such cases are probably quite rare, but one likely scenario where they happen is when moving from a commit to its successor (or the other way around). The user will probably already have the files in the cache in such cases, so it's probably not a big deal. Some timings for calculating mergecopies between two revisions (revisions shown on each line, all using the common ancestor as base): In the hg repo: 4.8 4.9: 0.21s -> 0.21s 4.0 4.8: 0.35s -> 0.63s In and old copy of the mozilla-unified repo: FIREFOX_BETA_60_BASE^ FIREFOX_BETA_60_BASE: 0.82s -> 0.82s FIREFOX_NIGHTLY_59_END FIREFOX_BETA_60_BASE: 2.5s -> 2.6s FIREFOX_BETA_59_END FIREFOX_BETA_60_BASE: 3.9s -> 4.1s FIREFOX_AURORA_50_BASE FIREFOX_BETA_60_BASE: 31s -> 33s So it's measurably slower in most cases. The most significant difference is in the hg repo between revisions 4.0 and 4.8. In that case it seems to come from the fact that pathcopies() uses fctx.isintroducedafter() (in _tracefile), while the old mergecopies() used fctx.linkrev() (in _checkcopies()). That results in a single call to filectx._adjustlinkrev(), which is responsible for the entire difference in time (in my repo). So we pay a performance penalty but we get more correct code (see change in test-mv-cp-st-diff.t). Deleting the "== f.filenode()" in _tracefile() recovers the lost performance in the hg repo. There were are few other optimizations in _checkcopies() that I could not measure any impact from. One was from the "seen" set. Another was from a "continue" when the file was not in the destination manifest (corresponding to "am" in _tracefile). Also note that merge copies are not calculated when updating with a clean working copy, which is probably the most common case. I therefore think the much simpler code is worth the slowdown. Differential Revision: https://phab.mercurial-scm.org/D6255

File last commit:

r42408:57203e02 default
r42408:57203e02 default
Show More
test-mv-cp-st-diff.t
1695 lines | 21.9 KiB | text/troff | Tads3Lexer
/ tests / test-mv-cp-st-diff.t
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469
$ add()
> {
> echo $2 >> $1
> }
$ hg init t
$ cd t
set up a boring main branch
$ add a a
$ hg add a
$ mkdir x
$ add x/x x
$ hg add x/x
$ hg ci -m0
$ add a m1
$ hg ci -m1
$ add a m2
$ add x/y y1
$ hg add x/y
$ hg ci -m2
$ cd ..
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 $ show()
> {
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 > echo "# $2:"
> echo
> echo "% hg st -C $1"
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 > hg st -C $1
> echo
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 > echo "% hg diff --git $1"
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 > hg diff --git $1
> echo
> }
$ count=0
make a new branch and get diff/status output
$1 - first commit
$2 - second commit
$3 - working dir action
$ tb()
> {
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 > hg clone -q t t2 ; cd t2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 > hg co -q -C 0
>
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 > echo % add a $count
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 > add a $count
> count=`expr $count + 1`
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 > echo % hg ci -m "t0"
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 > hg ci -m "t0"
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 > echo % $1
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 > $1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 > echo % hg ci -m "t1"
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 > hg ci -m "t1"
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 > echo % $2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 > $2
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 > echo % hg ci -m "t2"
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 > hg ci -m "t2"
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 > echo % $3
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 > $3
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 > echo
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 > show "" "working to parent"
> show "--rev 0" "working to root"
> show "--rev 2" "working to branch"
> show "--rev 0 --rev ." "root to parent"
> show "--rev . --rev 0" "parent to root"
> show "--rev 2 --rev ." "branch to parent"
> show "--rev . --rev 2" "parent to branch"
> echo
> cd ..
> rm -rf t2
> }
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074
rename in working dir
$ tb "add a a1" "add a a2" "hg mv a b"
% add a 0
% hg ci -m t0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 created new head
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % add a a1
% hg ci -m t1
% add a a2
% hg ci -m t2
% hg mv a b
# working to parent:
% hg st -C
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A b
a
R a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/b
rename from a
rename to b
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to root:
% hg st -C --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A b
a
R a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/b
rename from a
rename to b
--- a/a
+++ b/b
@@ -1,1 +1,4 @@
a
+0
+a1
+a2
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to branch:
% hg st -C --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A b
a
R a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/b
rename from a
rename to b
--- a/a
+++ b/b
@@ -1,3 +1,4 @@
a
-m1
-m2
+0
+a1
+a2
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # root to parent:
% hg st -C --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,4 @@
a
+0
+a1
+a2
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to root:
% hg st -C --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,4 +1,1 @@
a
-0
-a1
-a2
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # branch to parent:
% hg st -C --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,3 +1,4 @@
a
-m1
-m2
+0
+a1
+a2
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to branch:
% hg st -C --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,4 +1,3 @@
a
-0
-a1
-a2
+m1
+m2
diff --git a/x/y b/x/y
new file mode 100644
--- /dev/null
+++ b/x/y
@@ -0,0 +1,1 @@
+y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 copy in working dir
$ tb "add a a1" "add a a2" "hg cp a b"
% add a 1
% hg ci -m t0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 created new head
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % add a a1
% hg ci -m t1
% add a a2
% hg ci -m t2
% hg cp a b
# working to parent:
% hg st -C
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A b
a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/b
copy from a
copy to b
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to root:
% hg st -C --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A b
a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,4 @@
a
+1
+a1
+a2
diff --git a/a b/b
copy from a
copy to b
--- a/a
+++ b/b
@@ -1,1 +1,4 @@
a
+1
+a1
+a2
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to branch:
% hg st -C --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A b
a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,3 +1,4 @@
a
-m1
-m2
+1
+a1
+a2
diff --git a/a b/b
copy from a
copy to b
--- a/a
+++ b/b
@@ -1,3 +1,4 @@
a
-m1
-m2
+1
+a1
+a2
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # root to parent:
% hg st -C --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,4 @@
a
+1
+a1
+a2
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to root:
% hg st -C --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,4 +1,1 @@
a
-1
-a1
-a2
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # branch to parent:
% hg st -C --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,3 +1,4 @@
a
-m1
-m2
+1
+a1
+a2
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to branch:
% hg st -C --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,4 +1,3 @@
a
-1
-a1
-a2
+m1
+m2
diff --git a/x/y b/x/y
new file mode 100644
--- /dev/null
+++ b/x/y
@@ -0,0 +1,1 @@
+y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 single rename
$ tb "hg mv a b" "add b b1" "add b w"
% add a 2
% hg ci -m t0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 created new head
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg mv a b
% hg ci -m t1
% add b b1
% hg ci -m t2
% add b w
# working to parent:
% hg st -C
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M b
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/b b/b
--- a/b
+++ b/b
@@ -1,3 +1,4 @@
a
2
b1
+w
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to root:
% hg st -C --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A b
a
R a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/b
rename from a
rename to b
--- a/a
+++ b/b
@@ -1,1 +1,4 @@
a
+2
+b1
+w
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to branch:
% hg st -C --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A b
a
R a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/b
rename from a
rename to b
--- a/a
+++ b/b
@@ -1,3 +1,4 @@
a
-m1
-m2
+2
+b1
+w
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # root to parent:
% hg st -C --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A b
a
R a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/b
rename from a
rename to b
--- a/a
+++ b/b
@@ -1,1 +1,3 @@
a
+2
+b1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to root:
% hg st -C --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A a
b
R b
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/b b/a
rename from b
rename to a
--- a/b
+++ b/a
@@ -1,3 +1,1 @@
a
-2
-b1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # branch to parent:
% hg st -C --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A b
a
R a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/b
rename from a
rename to b
--- a/a
+++ b/b
@@ -1,3 +1,3 @@
a
-m1
-m2
+2
+b1
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to branch:
% hg st -C --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A a
b
A x/y
R b
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/b b/a
rename from b
rename to a
--- a/b
+++ b/a
@@ -1,3 +1,3 @@
a
-2
-b1
+m1
+m2
diff --git a/x/y b/x/y
new file mode 100644
--- /dev/null
+++ b/x/y
@@ -0,0 +1,1 @@
+y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 single copy
$ tb "hg cp a b" "add b b1" "add a w"
% add a 3
% hg ci -m t0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 created new head
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg cp a b
% hg ci -m t1
% add b b1
% hg ci -m t2
% add a w
# working to parent:
% hg st -C
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,2 +1,3 @@
a
3
+w
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to root:
% hg st -C --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A b
a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
a
+3
+w
diff --git a/a b/b
copy from a
copy to b
--- a/a
+++ b/b
@@ -1,1 +1,3 @@
a
+3
+b1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to branch:
% hg st -C --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A b
a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,3 +1,3 @@
a
-m1
-m2
+3
+w
diff --git a/a b/b
copy from a
copy to b
--- a/a
+++ b/b
@@ -1,3 +1,3 @@
a
-m1
-m2
+3
+b1
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # root to parent:
% hg st -C --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A b
a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,2 @@
a
+3
diff --git a/a b/b
copy from a
copy to b
--- a/a
+++ b/b
@@ -1,1 +1,3 @@
a
+3
+b1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to root:
% hg st -C --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
R b
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,2 +1,1 @@
a
-3
diff --git a/b b/b
deleted file mode 100644
--- a/b
+++ /dev/null
@@ -1,3 +0,0 @@
-a
-3
-b1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # branch to parent:
% hg st -C --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A b
a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,3 +1,2 @@
a
-m1
-m2
+3
diff --git a/a b/b
copy from a
copy to b
--- a/a
+++ b/b
@@ -1,3 +1,3 @@
a
-m1
-m2
+3
+b1
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to branch:
% hg st -C --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A x/y
R b
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,2 +1,3 @@
a
-3
+m1
+m2
diff --git a/b b/b
deleted file mode 100644
--- a/b
+++ /dev/null
@@ -1,3 +0,0 @@
-a
-3
-b1
diff --git a/x/y b/x/y
new file mode 100644
--- /dev/null
+++ b/x/y
@@ -0,0 +1,1 @@
+y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 rename chain
$ tb "hg mv a b" "hg mv b c" "hg mv c d"
% add a 4
% hg ci -m t0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 created new head
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg mv a b
% hg ci -m t1
% hg mv b c
% hg ci -m t2
% hg mv c d
# working to parent:
% hg st -C
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A d
c
R c
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/c b/d
rename from c
rename to d
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to root:
% hg st -C --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A d
a
R a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/d
rename from a
rename to d
--- a/a
+++ b/d
@@ -1,1 +1,2 @@
a
+4
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to branch:
% hg st -C --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A d
a
R a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/d
rename from a
rename to d
--- a/a
+++ b/d
@@ -1,3 +1,2 @@
a
-m1
-m2
+4
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # root to parent:
% hg st -C --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A c
a
R a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/c
rename from a
rename to c
--- a/a
+++ b/c
@@ -1,1 +1,2 @@
a
+4
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to root:
% hg st -C --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A a
c
R c
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/c b/a
rename from c
rename to a
--- a/c
+++ b/a
@@ -1,2 +1,1 @@
a
-4
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # branch to parent:
% hg st -C --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A c
a
R a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/c
rename from a
rename to c
--- a/a
+++ b/c
@@ -1,3 +1,2 @@
a
-m1
-m2
+4
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to branch:
% hg st -C --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A a
c
A x/y
R c
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/c b/a
rename from c
rename to a
--- a/c
+++ b/a
@@ -1,2 +1,3 @@
a
-4
+m1
+m2
diff --git a/x/y b/x/y
new file mode 100644
--- /dev/null
+++ b/x/y
@@ -0,0 +1,1 @@
+y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 copy chain
$ tb "hg cp a b" "hg cp b c" "hg cp c d"
% add a 5
% hg ci -m t0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 created new head
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg cp a b
% hg ci -m t1
% hg cp b c
% hg ci -m t2
% hg cp c d
# working to parent:
% hg st -C
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A d
c
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/c b/d
copy from c
copy to d
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to root:
% hg st -C --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A b
a
A c
a
A d
a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,2 @@
a
+5
diff --git a/a b/b
copy from a
copy to b
--- a/a
+++ b/b
@@ -1,1 +1,2 @@
a
+5
diff --git a/a b/c
copy from a
copy to c
--- a/a
+++ b/c
@@ -1,1 +1,2 @@
a
+5
diff --git a/a b/d
copy from a
copy to d
--- a/a
+++ b/d
@@ -1,1 +1,2 @@
a
+5
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to branch:
% hg st -C --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A b
a
A c
a
A d
a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,3 +1,2 @@
a
-m1
-m2
+5
diff --git a/a b/b
copy from a
copy to b
--- a/a
+++ b/b
@@ -1,3 +1,2 @@
a
-m1
-m2
+5
diff --git a/a b/c
copy from a
copy to c
--- a/a
+++ b/c
@@ -1,3 +1,2 @@
a
-m1
-m2
+5
diff --git a/a b/d
copy from a
copy to d
--- a/a
+++ b/d
@@ -1,3 +1,2 @@
a
-m1
-m2
+5
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # root to parent:
% hg st -C --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A b
a
A c
a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,2 @@
a
+5
diff --git a/a b/b
copy from a
copy to b
--- a/a
+++ b/b
@@ -1,1 +1,2 @@
a
+5
diff --git a/a b/c
copy from a
copy to c
--- a/a
+++ b/c
@@ -1,1 +1,2 @@
a
+5
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to root:
% hg st -C --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
R b
R c
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,2 +1,1 @@
a
-5
diff --git a/b b/b
deleted file mode 100644
--- a/b
+++ /dev/null
@@ -1,2 +0,0 @@
-a
-5
diff --git a/c b/c
deleted file mode 100644
--- a/c
+++ /dev/null
@@ -1,2 +0,0 @@
-a
-5
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # branch to parent:
% hg st -C --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A b
a
A c
a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,3 +1,2 @@
a
-m1
-m2
+5
diff --git a/a b/b
copy from a
copy to b
--- a/a
+++ b/b
@@ -1,3 +1,2 @@
a
-m1
-m2
+5
diff --git a/a b/c
copy from a
copy to c
--- a/a
+++ b/c
@@ -1,3 +1,2 @@
a
-m1
-m2
+5
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to branch:
% hg st -C --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A x/y
R b
R c
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,2 +1,3 @@
a
-5
+m1
+m2
diff --git a/b b/b
deleted file mode 100644
--- a/b
+++ /dev/null
@@ -1,2 +0,0 @@
-a
-5
diff --git a/c b/c
deleted file mode 100644
--- a/c
+++ /dev/null
@@ -1,2 +0,0 @@
-a
-5
diff --git a/x/y b/x/y
new file mode 100644
--- /dev/null
+++ b/x/y
@@ -0,0 +1,1 @@
+y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 circular rename
$ tb "add a a1" "hg mv a b" "hg mv b a"
% add a 6
% hg ci -m t0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 created new head
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % add a a1
% hg ci -m t1
% hg mv a b
% hg ci -m t2
% hg mv b a
# working to parent:
% hg st -C
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A a
b
R b
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/b b/a
rename from b
rename to a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to root:
% hg st -C --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
a
+6
+a1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to branch:
% hg st -C --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,3 +1,3 @@
a
-m1
-m2
+6
+a1
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # root to parent:
% hg st -C --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A b
a
R a
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/b
rename from a
rename to b
--- a/a
+++ b/b
@@ -1,1 +1,3 @@
a
+6
+a1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to root:
% hg st -C --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A a
b
R b
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/b b/a
rename from b
rename to a
--- a/b
+++ b/a
@@ -1,3 +1,1 @@
a
-6
-a1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # branch to parent:
% hg st -C --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A b
a
R a
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/b
rename from a
rename to b
--- a/a
+++ b/b
@@ -1,3 +1,3 @@
a
-m1
-m2
+6
+a1
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to branch:
% hg st -C --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 A a
b
A x/y
R b
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/b b/a
rename from b
rename to a
--- a/b
+++ b/a
@@ -1,3 +1,3 @@
a
-6
-a1
+m1
+m2
diff --git a/x/y b/x/y
new file mode 100644
--- /dev/null
+++ b/x/y
@@ -0,0 +1,1 @@
+y1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 directory move
$ tb "hg mv x y" "add y/x x1" "add y/x x2"
% add a 7
% hg ci -m t0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 created new head
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg mv x y
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 moving x/x to y/x
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg ci -m t1
% add y/x x1
% hg ci -m t2
% add y/x x2
# working to parent:
% hg st -C
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M y/x
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/y/x b/y/x
--- a/y/x
+++ b/y/x
@@ -1,2 +1,3 @@
x
x1
+x2
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to root:
% hg st -C --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A y/x
x/x
R x/x
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,2 @@
a
+7
diff --git a/x/x b/y/x
rename from x/x
rename to y/x
--- a/x/x
+++ b/y/x
@@ -1,1 +1,3 @@
x
+x1
+x2
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # working to branch:
% hg st -C --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A y/x
x/x
R x/x
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,3 +1,2 @@
a
-m1
-m2
+7
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
diff --git a/x/x b/y/x
rename from x/x
rename to y/x
--- a/x/x
+++ b/y/x
@@ -1,1 +1,3 @@
x
+x1
+x2
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # root to parent:
% hg st -C --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A y/x
x/x
R x/x
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 0 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,2 @@
a
+7
diff --git a/x/x b/y/x
rename from x/x
rename to y/x
--- a/x/x
+++ b/y/x
@@ -1,1 +1,2 @@
x
+x1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to root:
% hg st -C --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A x/x
y/x
R y/x
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 0
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,2 +1,1 @@
a
-7
diff --git a/y/x b/x/x
rename from y/x
rename to x/x
--- a/y/x
+++ b/x/x
@@ -1,2 +1,1 @@
x
-x1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # branch to parent:
% hg st -C --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A y/x
x/x
R x/x
R x/y
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev 2 --rev .
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,3 +1,2 @@
a
-m1
-m2
+7
diff --git a/x/y b/x/y
deleted file mode 100644
--- a/x/y
+++ /dev/null
@@ -1,1 +0,0 @@
-y1
diff --git a/x/x b/y/x
rename from x/x
rename to y/x
--- a/x/x
+++ b/y/x
@@ -1,1 +1,2 @@
x
+x1
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 # parent to branch:
% hg st -C --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 M a
A x/x
y/x
A x/y
R y/x
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 % hg diff --git --rev . --rev 2
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,2 +1,3 @@
a
-7
+m1
+m2
diff --git a/y/x b/x/x
rename from y/x
rename to x/x
--- a/y/x
+++ b/x/x
@@ -1,2 +1,1 @@
x
-x1
diff --git a/x/y b/x/y
new file mode 100644
--- /dev/null
+++ b/x/y
@@ -0,0 +1,1 @@
+y1
Cannot implement unrelated branch with tb
testing copies with unrelated branch
$ hg init unrelated
$ cd unrelated
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 $ echo a >> a
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 $ hg ci -Am adda
adding a
$ hg mv a b
$ hg ci -m movea
$ hg up -C null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Mads Kiilerich
tests: improve test-mv-cp-st-diff.t readability
r18074 $ echo a >> a
Matt Mackall
tests: unify test-mv-cp-st-diff
r12469 $ hg ci -Am addunrelateda
adding a
created new head
unrelated branch diff
$ hg diff --git -r 2 -r 1
diff --git a/a b/a
deleted file mode 100644
--- a/a
+++ /dev/null
@@ -1,1 +0,0 @@
-a
diff --git a/b b/b
new file mode 100644
--- /dev/null
+++ b/b
@@ -0,0 +1,1 @@
+a
$ cd ..
Mads Kiilerich
diff: search beyond ancestor when detecting renames...
r20294
test for case where we didn't look sufficiently far back to find rename ancestor
$ hg init diffstop
$ cd diffstop
$ echo > f
$ hg ci -qAmf
$ hg mv f g
$ hg ci -m'f->g'
$ hg up -qr0
$ touch x
$ hg ci -qAmx
$ echo f > f
$ hg ci -qmf=f
$ hg merge -q
$ hg ci -mmerge
$ hg log -G --template '{rev} {desc}'
@ 4 merge
|\
| o 3 f=f
| |
| o 2 x
| |
o | 1 f->g
|/
o 0 f
$ hg diff --git -r 2
diff --git a/f b/g
rename from f
rename to g
--- a/f
+++ b/g
@@ -1,1 +1,1 @@
-
+f
$ cd ..
Pierre-Yves David
filectx.parents: enforce changeid of parent to be in own changectx ancestors...
r23702
Additional tricky linkrev case
------------------------------
If the first file revision after the diff base has a linkrev pointing to a
changeset on another branch with a revision lower that the diff base, we can
jump past the copy detection limit and fail to detect the rename.
$ hg init diffstoplinkrev
$ cd diffstoplinkrev
$ touch f
$ hg ci -Aqm 'empty f'
Make a simple change
$ echo change > f
$ hg ci -m 'change f'
Martin von Zweigbergk
tests: slightly modify a linkrev test to prepare for expanding it...
r42397 Make a rename because we want to track renames. It is also important that the
faulty linkrev is not only the "start" commit to ensure the linkrev will be
used.
$ hg mv f renamed
$ hg ci -m renamed
Pierre-Yves David
filectx.parents: enforce changeid of parent to be in own changectx ancestors...
r23702 Make a second branch, we use a named branch to create a simple commit
that does not touch f.
$ hg up -qr 'desc(empty)'
$ hg branch -q dev
$ hg ci -Aqm dev
Martin von Zweigbergk
tests: slightly modify a linkrev test to prepare for expanding it...
r42397 Graft the initial change and the rename. As f was untouched, we reuse the same
entry and the linkrev point to the older branch.
Pierre-Yves David
filectx.parents: enforce changeid of parent to be in own changectx ancestors...
r23702
$ hg graft -q 'desc(change)'
Martin von Zweigbergk
tests: slightly modify a linkrev test to prepare for expanding it...
r42397 $ hg graft -q 'desc(renamed)'
Pierre-Yves David
filectx.parents: enforce changeid of parent to be in own changectx ancestors...
r23702
$ hg log -G -T '{rev} {desc}'
Martin von Zweigbergk
tests: slightly modify a linkrev test to prepare for expanding it...
r42397 @ 5 renamed
|
o 4 change f
Pierre-Yves David
filectx.parents: enforce changeid of parent to be in own changectx ancestors...
r23702 |
Martin von Zweigbergk
tests: slightly modify a linkrev test to prepare for expanding it...
r42397 o 3 dev
Pierre-Yves David
filectx.parents: enforce changeid of parent to be in own changectx ancestors...
r23702 |
Martin von Zweigbergk
tests: slightly modify a linkrev test to prepare for expanding it...
r42397 | o 2 renamed
| |
Pierre-Yves David
filectx.parents: enforce changeid of parent to be in own changectx ancestors...
r23702 | o 1 change f
|/
o 0 empty f
Martin von Zweigbergk
tests: slightly modify a linkrev test to prepare for expanding it...
r42397 The copy tracking should still reach rev 3 (branch creation).
accessing the parent of 5 (renamed) should not jump use to revision 1.
Pierre-Yves David
filectx.parents: enforce changeid of parent to be in own changectx ancestors...
r23702
$ hg diff --git -r 'desc(dev)' -r .
diff --git a/f b/renamed
rename from f
rename to renamed
--- a/f
+++ b/renamed
@@ -0,0 +1,1 @@
+change
Boris Feld
copies: add a devel debug mode to trace what copy tracing does...
r40093 Check debug output for copy tracing
$ hg status --copies --rev 'desc(dev)' --rev . --config devel.debug.copies=yes --debug
Martin von Zweigbergk
tests: slightly modify a linkrev test to prepare for expanding it...
r42397 debug.copies: searching copies from a51f36ab1704 to 1f4aa1fd627b
Boris Feld
copies: add a devel debug mode to trace what copy tracing does...
r40093 debug.copies: search mode: forward
Martin von Zweigbergk
tests: slightly modify a linkrev test to prepare for expanding it...
r42397 debug.copies: looking into rename from a51f36ab1704 to 1f4aa1fd627b
debug.copies: search limit: 3
debug.copies: missing files to search: 1
Boris Feld
copies: add a devel debug mode to trace what copy tracing does...
r40093 debug.copies: tracing file: renamed
debug.copies: rename of: f
Boris Feld
copies: add time information to the debug information
r40094 debug.copies: time: * seconds (glob)
Boris Feld
copies: add a devel debug mode to trace what copy tracing does...
r40093 A renamed
f
R f
Martin von Zweigbergk
test: demonstrate failure to follow rename with shadowed linkrev...
r42398 Check that merging across the rename works
$ echo modified >> renamed
$ hg co -m 4
Martin von Zweigbergk
copies: calculate mergecopies() based on pathcopies()...
r42408 merging renamed and f to f
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
Martin von Zweigbergk
test: demonstrate failure to follow rename with shadowed linkrev...
r42398
Pierre-Yves David
filectx.parents: enforce changeid of parent to be in own changectx ancestors...
r23702 $ cd ..