diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -4577,6 +4577,13 @@ _(b'BRANCH'), ), ( + b'B', + b'bookmark', + [], + _(b"show changesets within the given bookmark"), + _(b'BOOKMARK'), + ), + ( b'P', b'prune', [], diff --git a/mercurial/logcmdutil.py b/mercurial/logcmdutil.py --- a/mercurial/logcmdutil.py +++ b/mercurial/logcmdutil.py @@ -793,6 +793,7 @@ b'_matchfiles': (None, b'_matchfiles(%ps)'), b'date': (b'date(%s)', None), b'branch': (b'branch(%s)', b'%lr'), + b'bookmark': (b'reverse(ancestors(bookmark(%s)))', b'%lr'), b'_patslog': (b'filelog(%s)', b'%lr'), b'keyword': (b'keyword(%s)', b'%lr'), b'prune': (b'ancestors(%s)', b'not %lr'), diff --git a/tests/test-completion.t b/tests/test-completion.t --- a/tests/test-completion.t +++ b/tests/test-completion.t @@ -342,7 +342,7 @@ incoming: force, newest-first, bundle, rev, bookmarks, branch, patch, git, limit, no-merges, stat, graph, style, template, ssh, remotecmd, insecure, subrepos init: ssh, remotecmd, insecure locate: rev, print0, fullpath, include, exclude - log: follow, follow-first, date, copies, keyword, rev, line-range, removed, only-merges, user, only-branch, branch, prune, patch, git, limit, no-merges, stat, graph, style, template, include, exclude + log: follow, follow-first, date, copies, keyword, rev, line-range, removed, only-merges, user, only-branch, branch, bookmark, prune, patch, git, limit, no-merges, stat, graph, style, template, include, exclude manifest: rev, all, template merge: force, rev, preview, abort, tool outgoing: force, rev, newest-first, bookmarks, branch, patch, git, limit, no-merges, stat, graph, style, template, ssh, remotecmd, insecure, subrepos diff --git a/tests/test-log-bookmark.t b/tests/test-log-bookmark.t new file mode 100644 --- /dev/null +++ b/tests/test-log-bookmark.t @@ -0,0 +1,167 @@ +Test 'hg log' with a bookmark + + +Create the repository + + $ hg init Test-D8973 + $ cd Test-D8973 + $ echo "bar" > foo.txt + $ hg add foo.txt + $ hg commit -m "Add foo in 'default'" + + +Add a bookmark for topic X + + $ hg branch -f sebhtml + marked working directory as branch sebhtml + (branches are permanent and global, did you want a bookmark?) + + $ hg bookmark sebhtml/99991-topic-X + $ hg up sebhtml/99991-topic-X + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ echo "X" > x.txt + $ hg add x.txt + $ hg commit -m "Add x.txt in 'sebhtml/99991-topic-X'" + + $ hg log -B sebhtml/99991-topic-X + changeset: 1:29f39dea9bf9 + branch: sebhtml + bookmark: sebhtml/99991-topic-X + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add x.txt in 'sebhtml/99991-topic-X' + + changeset: 0:eaea25376a59 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add foo in 'default' + + +Add a bookmark for topic Y + + $ hg update default + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + (leaving bookmark sebhtml/99991-topic-X) + + $ echo "Y" > y.txt + $ hg add y.txt + $ hg branch -f sebhtml + marked working directory as branch sebhtml + $ hg bookmark sebhtml/99992-topic-Y + $ hg up sebhtml/99992-topic-Y + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg commit -m "Add y.txt in 'sebhtml/99992-topic-Y'" + created new head + + $ hg log -B sebhtml/99992-topic-Y + changeset: 2:11df7969cf8d + branch: sebhtml + bookmark: sebhtml/99992-topic-Y + tag: tip + parent: 0:eaea25376a59 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add y.txt in 'sebhtml/99992-topic-Y' + + changeset: 0:eaea25376a59 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add foo in 'default' + + +The log of topic Y does not interfere with the log of topic X + + $ hg log -B sebhtml/99991-topic-X + changeset: 1:29f39dea9bf9 + branch: sebhtml + bookmark: sebhtml/99991-topic-X + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add x.txt in 'sebhtml/99991-topic-X' + + changeset: 0:eaea25376a59 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add foo in 'default' + + +Merge topics Y and X in the default branch + + $ hg update default + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + (leaving bookmark sebhtml/99992-topic-Y) + + $ hg bookmark + sebhtml/99991-topic-X 1:29f39dea9bf9 + sebhtml/99992-topic-Y 2:11df7969cf8d + + $ hg merge sebhtml/99992-topic-Y + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + + $ hg commit -m "Merge branch 'sebhtml/99992-topic-Y' into 'default'" + + $ hg update default + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ hg merge sebhtml/99991-topic-X + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + + $ hg commit -m "Merge branch 'sebhtml/99991-topic-X' into 'default'" + + +Check the log of topic X, topic Y, and default branch + + $ hg log -B sebhtml/99992-topic-Y + changeset: 2:11df7969cf8d + branch: sebhtml + bookmark: sebhtml/99992-topic-Y + parent: 0:eaea25376a59 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add y.txt in 'sebhtml/99992-topic-Y' + + changeset: 0:eaea25376a59 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add foo in 'default' + + + $ hg log -B sebhtml/99991-topic-X + changeset: 1:29f39dea9bf9 + branch: sebhtml + bookmark: sebhtml/99991-topic-X + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add x.txt in 'sebhtml/99991-topic-X' + + changeset: 0:eaea25376a59 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add foo in 'default' + + + $ hg log -b default + changeset: 4:c26ba8c1e1cb + tag: tip + parent: 3:2189f3fb90d6 + parent: 1:29f39dea9bf9 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Merge branch 'sebhtml/99991-topic-X' into 'default' + + changeset: 3:2189f3fb90d6 + parent: 0:eaea25376a59 + parent: 2:11df7969cf8d + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Merge branch 'sebhtml/99992-topic-Y' into 'default' + + changeset: 0:eaea25376a59 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Add foo in 'default' +