|
|
$ HGMERGE=true; export HGMERGE
|
|
|
|
|
|
init
|
|
|
|
|
|
$ hg init repo
|
|
|
$ cd repo
|
|
|
|
|
|
commit
|
|
|
|
|
|
$ echo 'a' > a
|
|
|
$ hg ci -A -m test -u nobody -d '1 0'
|
|
|
adding a
|
|
|
|
|
|
annotate -c
|
|
|
|
|
|
$ hg annotate -c a
|
|
|
8435f90966e4: a
|
|
|
|
|
|
annotate -cl
|
|
|
|
|
|
$ hg annotate -cl a
|
|
|
8435f90966e4:1: a
|
|
|
|
|
|
annotate -d
|
|
|
|
|
|
$ hg annotate -d a
|
|
|
Thu Jan 01 00:00:01 1970 +0000: a
|
|
|
|
|
|
annotate -n
|
|
|
|
|
|
$ hg annotate -n a
|
|
|
0: a
|
|
|
|
|
|
annotate -nl
|
|
|
|
|
|
$ hg annotate -nl a
|
|
|
0:1: a
|
|
|
|
|
|
annotate -u
|
|
|
|
|
|
$ hg annotate -u a
|
|
|
nobody: a
|
|
|
|
|
|
annotate -cdnu
|
|
|
|
|
|
$ hg annotate -cdnu a
|
|
|
nobody 0 8435f90966e4 Thu Jan 01 00:00:01 1970 +0000: a
|
|
|
|
|
|
annotate -cdnul
|
|
|
|
|
|
$ hg annotate -cdnul a
|
|
|
nobody 0 8435f90966e4 Thu Jan 01 00:00:01 1970 +0000:1: a
|
|
|
|
|
|
$ cat <<EOF >>a
|
|
|
> a
|
|
|
> a
|
|
|
> EOF
|
|
|
$ hg ci -ma1 -d '1 0'
|
|
|
$ hg cp a b
|
|
|
$ hg ci -mb -d '1 0'
|
|
|
$ cat <<EOF >> b
|
|
|
> b4
|
|
|
> b5
|
|
|
> b6
|
|
|
> EOF
|
|
|
$ hg ci -mb2 -d '2 0'
|
|
|
|
|
|
annotate -n b
|
|
|
|
|
|
$ hg annotate -n b
|
|
|
0: a
|
|
|
1: a
|
|
|
1: a
|
|
|
3: b4
|
|
|
3: b5
|
|
|
3: b6
|
|
|
|
|
|
annotate --no-follow b
|
|
|
|
|
|
$ hg annotate --no-follow b
|
|
|
2: a
|
|
|
2: a
|
|
|
2: a
|
|
|
3: b4
|
|
|
3: b5
|
|
|
3: b6
|
|
|
|
|
|
annotate -nl b
|
|
|
|
|
|
$ hg annotate -nl b
|
|
|
0:1: a
|
|
|
1:2: a
|
|
|
1:3: a
|
|
|
3:4: b4
|
|
|
3:5: b5
|
|
|
3:6: b6
|
|
|
|
|
|
annotate -nf b
|
|
|
|
|
|
$ hg annotate -nf b
|
|
|
0 a: a
|
|
|
1 a: a
|
|
|
1 a: a
|
|
|
3 b: b4
|
|
|
3 b: b5
|
|
|
3 b: b6
|
|
|
|
|
|
annotate -nlf b
|
|
|
|
|
|
$ hg annotate -nlf b
|
|
|
0 a:1: a
|
|
|
1 a:2: a
|
|
|
1 a:3: a
|
|
|
3 b:4: b4
|
|
|
3 b:5: b5
|
|
|
3 b:6: b6
|
|
|
|
|
|
$ hg up -C 2
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
$ cat <<EOF >> b
|
|
|
> b4
|
|
|
> c
|
|
|
> b5
|
|
|
> EOF
|
|
|
$ hg ci -mb2.1 -d '2 0'
|
|
|
created new head
|
|
|
$ hg merge
|
|
|
merging b
|
|
|
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
|
|
|
(branch merge, don't forget to commit)
|
|
|
$ hg ci -mmergeb -d '3 0'
|
|
|
|
|
|
annotate after merge
|
|
|
|
|
|
$ hg annotate -nf b
|
|
|
0 a: a
|
|
|
1 a: a
|
|
|
1 a: a
|
|
|
3 b: b4
|
|
|
4 b: c
|
|
|
3 b: b5
|
|
|
|
|
|
annotate after merge with -l
|
|
|
|
|
|
$ hg annotate -nlf b
|
|
|
0 a:1: a
|
|
|
1 a:2: a
|
|
|
1 a:3: a
|
|
|
3 b:4: b4
|
|
|
4 b:5: c
|
|
|
3 b:5: b5
|
|
|
|
|
|
$ hg up -C 1
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
$ hg cp a b
|
|
|
$ cat <<EOF > b
|
|
|
> a
|
|
|
> z
|
|
|
> a
|
|
|
> EOF
|
|
|
$ hg ci -mc -d '3 0'
|
|
|
created new head
|
|
|
$ hg merge
|
|
|
merging b
|
|
|
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
|
|
|
(branch merge, don't forget to commit)
|
|
|
$ cat <<EOF >> b
|
|
|
> b4
|
|
|
> c
|
|
|
> b5
|
|
|
> EOF
|
|
|
$ echo d >> b
|
|
|
$ hg ci -mmerge2 -d '4 0'
|
|
|
|
|
|
annotate after rename merge
|
|
|
|
|
|
$ hg annotate -nf b
|
|
|
0 a: a
|
|
|
6 b: z
|
|
|
1 a: a
|
|
|
3 b: b4
|
|
|
4 b: c
|
|
|
3 b: b5
|
|
|
7 b: d
|
|
|
|
|
|
annotate after rename merge with -l
|
|
|
|
|
|
$ hg annotate -nlf b
|
|
|
0 a:1: a
|
|
|
6 b:2: z
|
|
|
1 a:3: a
|
|
|
3 b:4: b4
|
|
|
4 b:5: c
|
|
|
3 b:5: b5
|
|
|
7 b:7: d
|
|
|
|
|
|
Issue2807: alignment of line numbers with -l
|
|
|
|
|
|
$ echo more >> b
|
|
|
$ hg ci -mmore -d '5 0'
|
|
|
$ echo more >> b
|
|
|
$ hg ci -mmore -d '6 0'
|
|
|
$ echo more >> b
|
|
|
$ hg ci -mmore -d '7 0'
|
|
|
$ hg annotate -nlf b
|
|
|
0 a: 1: a
|
|
|
6 b: 2: z
|
|
|
1 a: 3: a
|
|
|
3 b: 4: b4
|
|
|
4 b: 5: c
|
|
|
3 b: 5: b5
|
|
|
7 b: 7: d
|
|
|
8 b: 8: more
|
|
|
9 b: 9: more
|
|
|
10 b:10: more
|
|
|
|
|
|
linkrev vs rev
|
|
|
|
|
|
$ hg annotate -r tip -n a
|
|
|
0: a
|
|
|
1: a
|
|
|
1: a
|
|
|
|
|
|
linkrev vs rev with -l
|
|
|
|
|
|
$ hg annotate -r tip -nl a
|
|
|
0:1: a
|
|
|
1:2: a
|
|
|
1:3: a
|
|
|
|
|
|
Issue589: "undelete" sequence leads to crash
|
|
|
|
|
|
annotate was crashing when trying to --follow something
|
|
|
|
|
|
like A -> B -> A
|
|
|
|
|
|
generate ABA rename configuration
|
|
|
|
|
|
$ echo foo > foo
|
|
|
$ hg add foo
|
|
|
$ hg ci -m addfoo
|
|
|
$ hg rename foo bar
|
|
|
$ hg ci -m renamefoo
|
|
|
$ hg rename bar foo
|
|
|
$ hg ci -m renamebar
|
|
|
|
|
|
annotate after ABA with follow
|
|
|
|
|
|
$ hg annotate --follow foo
|
|
|
foo: foo
|
|
|
|
|
|
missing file
|
|
|
|
|
|
$ hg ann nosuchfile
|
|
|
abort: nosuchfile: no such file in rev e9e6b4fa872f
|
|
|
[255]
|
|
|
|
|
|
annotate file without '\n' on last line
|
|
|
|
|
|
$ printf "" > c
|
|
|
$ hg ci -A -m test -u nobody -d '1 0'
|
|
|
adding c
|
|
|
$ hg annotate c
|
|
|
$ printf "a\nb" > c
|
|
|
$ hg ci -m test
|
|
|
$ hg annotate c
|
|
|
[0-9]+: a (re)
|
|
|
[0-9]+: b (re)
|
|
|
|
|
|
Issue3841: check annotation of the file of which filelog includes
|
|
|
merging between the revision and its ancestor
|
|
|
|
|
|
to reproduce the situation with recent Mercurial, this script uses (1)
|
|
|
"hg debugsetparents" to merge without ancestor check by "hg merge",
|
|
|
and (2) the extension to allow filelog merging between the revision
|
|
|
and its ancestor by overriding "repo._filecommit".
|
|
|
|
|
|
$ cat > ../legacyrepo.py <<EOF
|
|
|
> from mercurial import node, util
|
|
|
> def reposetup(ui, repo):
|
|
|
> class legacyrepo(repo.__class__):
|
|
|
> def _filecommit(self, fctx, manifest1, manifest2,
|
|
|
> linkrev, tr, changelist):
|
|
|
> fname = fctx.path()
|
|
|
> text = fctx.data()
|
|
|
> flog = self.file(fname)
|
|
|
> fparent1 = manifest1.get(fname, node.nullid)
|
|
|
> fparent2 = manifest2.get(fname, node.nullid)
|
|
|
> meta = {}
|
|
|
> copy = fctx.renamed()
|
|
|
> if copy and copy[0] != fname:
|
|
|
> raise util.Abort('copying is not supported')
|
|
|
> if fparent2 != node.nullid:
|
|
|
> changelist.append(fname)
|
|
|
> return flog.add(text, meta, tr, linkrev,
|
|
|
> fparent1, fparent2)
|
|
|
> raise util.Abort('only merging is supported')
|
|
|
> repo.__class__ = legacyrepo
|
|
|
> EOF
|
|
|
|
|
|
$ cat > baz <<EOF
|
|
|
> 1
|
|
|
> 2
|
|
|
> 3
|
|
|
> 4
|
|
|
> 5
|
|
|
> EOF
|
|
|
$ hg add baz
|
|
|
$ hg commit -m "baz:0"
|
|
|
|
|
|
$ cat > baz <<EOF
|
|
|
> 1 baz:1
|
|
|
> 2
|
|
|
> 3
|
|
|
> 4
|
|
|
> 5
|
|
|
> EOF
|
|
|
$ hg commit -m "baz:1"
|
|
|
|
|
|
$ cat > baz <<EOF
|
|
|
> 1 baz:1
|
|
|
> 2 baz:2
|
|
|
> 3
|
|
|
> 4
|
|
|
> 5
|
|
|
> EOF
|
|
|
$ hg debugsetparents 17 17
|
|
|
$ hg --config extensions.legacyrepo=../legacyrepo.py commit -m "baz:2"
|
|
|
$ hg debugindexdot .hg/store/data/baz.i
|
|
|
digraph G {
|
|
|
-1 -> 0
|
|
|
0 -> 1
|
|
|
1 -> 2
|
|
|
1 -> 2
|
|
|
}
|
|
|
$ hg annotate baz
|
|
|
17: 1 baz:1
|
|
|
18: 2 baz:2
|
|
|
16: 3
|
|
|
16: 4
|
|
|
16: 5
|
|
|
|
|
|
$ cat > baz <<EOF
|
|
|
> 1 baz:1
|
|
|
> 2 baz:2
|
|
|
> 3 baz:3
|
|
|
> 4
|
|
|
> 5
|
|
|
> EOF
|
|
|
$ hg commit -m "baz:3"
|
|
|
|
|
|
$ cat > baz <<EOF
|
|
|
> 1 baz:1
|
|
|
> 2 baz:2
|
|
|
> 3 baz:3
|
|
|
> 4 baz:4
|
|
|
> 5
|
|
|
> EOF
|
|
|
$ hg debugsetparents 19 18
|
|
|
$ hg --config extensions.legacyrepo=../legacyrepo.py commit -m "baz:4"
|
|
|
$ hg debugindexdot .hg/store/data/baz.i
|
|
|
digraph G {
|
|
|
-1 -> 0
|
|
|
0 -> 1
|
|
|
1 -> 2
|
|
|
1 -> 2
|
|
|
2 -> 3
|
|
|
3 -> 4
|
|
|
2 -> 4
|
|
|
}
|
|
|
$ hg annotate baz
|
|
|
17: 1 baz:1
|
|
|
18: 2 baz:2
|
|
|
19: 3 baz:3
|
|
|
20: 4 baz:4
|
|
|
16: 5
|
|
|
|
|
|
Test annotate with whitespace options
|
|
|
|
|
|
$ cd ..
|
|
|
$ hg init repo-ws
|
|
|
$ cd repo-ws
|
|
|
$ cat > a <<EOF
|
|
|
> aa
|
|
|
>
|
|
|
> b b
|
|
|
> EOF
|
|
|
$ hg ci -Am "adda"
|
|
|
adding a
|
|
|
$ sed 's/EOL$//g' > a <<EOF
|
|
|
> a a
|
|
|
>
|
|
|
> EOL
|
|
|
> b b
|
|
|
> EOF
|
|
|
$ hg ci -m "changea"
|
|
|
|
|
|
Annotate with no option
|
|
|
|
|
|
$ hg annotate a
|
|
|
1: a a
|
|
|
0:
|
|
|
1:
|
|
|
1: b b
|
|
|
|
|
|
Annotate with --ignore-space-change
|
|
|
|
|
|
$ hg annotate --ignore-space-change a
|
|
|
1: a a
|
|
|
1:
|
|
|
0:
|
|
|
0: b b
|
|
|
|
|
|
Annotate with --ignore-all-space
|
|
|
|
|
|
$ hg annotate --ignore-all-space a
|
|
|
0: a a
|
|
|
0:
|
|
|
1:
|
|
|
0: b b
|
|
|
|
|
|
Annotate with --ignore-blank-lines (similar to no options case)
|
|
|
|
|
|
$ hg annotate --ignore-blank-lines a
|
|
|
1: a a
|
|
|
0:
|
|
|
1:
|
|
|
1: b b
|
|
|
|
|
|
$ cd ..
|
|
|
|