| handle hg |
| |
| mkdir git |
| cd git |
| |
| env GIT_AUTHOR_NAME='Russ Cox' |
| env GIT_AUTHOR_EMAIL='rsc@golang.org' |
| env GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME |
| env GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL |
| |
| git init |
| |
| at 2018-04-17T15:43:22-04:00 |
| unquote '' |
| cp stdout README |
| git add README |
| git commit -a -m 'empty README' |
| git branch -m master |
| git tag v1.2.3 |
| |
| at 2018-04-17T15:45:48-04:00 |
| git branch v2 |
| git checkout v2 |
| echo 'v2' |
| cp stdout v2 |
| git add v2 |
| git commit -a -m 'v2' |
| git tag v2.3 |
| git tag v2.0.1 |
| git branch v2.3.4 |
| git tag branch-v2.3.4 |
| |
| at 2018-04-17T16:00:19-04:00 |
| echo 'intermediate' |
| cp stdout foo.txt |
| git add foo.txt |
| git commit -a -m 'intermediate' |
| |
| at 2018-04-17T16:00:32-04:00 |
| echo 'another' |
| cp stdout another.txt |
| git add another.txt |
| git commit -a -m 'another' |
| git tag v2.0.2 |
| git tag branch-v2 |
| |
| at 2018-04-17T16:16:52-04:00 |
| git checkout master |
| git branch v3 |
| git checkout v3 |
| mkdir v3/sub/dir |
| echo 'v3/sub/dir/file' |
| cp stdout v3/sub/dir/file.txt |
| git add v3 |
| git commit -a -m 'add v3/sub/dir/file.txt' |
| git tag branch-v3 |
| |
| at 2018-04-17T22:23:00-04:00 |
| git checkout master |
| git tag -a v1.2.4-annotated -m 'v1.2.4-annotated' |
| |
| cd .. |
| |
| hg init |
| hg convert --datesort ./git . |
| rm ./git |
| |
| hg update -C v2 |
| hg branch v2 |
| unquote '' |
| cp stdout dummy |
| hg add dummy |
| hg commit --user 'Russ Cox <rsc@golang.org>' --date '2018-06-27T12:15:24-04:00' -m 'dummy' |
| |
| # 'hg convert' blindly stamps a tag-update commit at the end of whatever branch |
| # happened to contain the last converted commit — in this case, v3. However, the |
| # original vcs-test.golang.org copy of this repo had this commit on the v3 |
| # branch as a descendent of 'add v3/sub/dir/file.txt', so that's where we put it |
| # here. That leaves the convert-repo 'update tags' commit only reachable as the |
| # head of the default branch. |
| hg update -r 4 |
| |
| hg branch v3 |
| unquote '' |
| cp stdout dummy |
| hg add dummy |
| hg commit --user 'Russ Cox <rsc@golang.org>' --date '2018-06-27T12:15:45-04:00' -m 'dummy' |
| |
| hg update v2.3.4 |
| hg branch v2.3.4 |
| unquote '' |
| cp stdout dummy |
| hg add dummy |
| hg commit --user 'Russ Cox <rsc@golang.org>' --date '2018-06-27T12:16:10-04:00' -m 'dummy' |
| |
| hg tag --user 'Russ Cox <rsc@golang.org>' --date '2018-06-27T12:16:30-04:00' -m 'Removed tag branch-v2, branch-v3, branch-v2.3.4' --remove branch-v2 branch-v3 branch-v2.3.4 |
| |
| # Adding commits to the above branches updates both the branch heads and the |
| # corresponding bookmarks. |
| # But apparently at some point it did not do so? The original copy of this repo |
| # had bookmarks pointing to the base of each branch instead of the tip. 🤔 |
| # Either way, force the bookmarks we care about to match the original copy of |
| # the repo. |
| hg book v2 -r 3 --force |
| hg book v2.3.4 -r 1 --force |
| hg book v3 -r 5 --force |
| |
| hg log -G --debug |
| |
| hg tags |
| cmp stdout .hg-tags |
| |
| # 'hg convert' leaves an 'update tags' commit on the default branch, and that |
| # commit always uses the current date (so is not reproducible). Fortunately, |
| # that commit lands on the 'default' branch and is not tagged as 'tip', so it |
| # seems to be mostly harmless. However, because it is nondeterministic we |
| # should avoid listing it here. |
| # |
| # Unfortunately, some of our builders are still running Debian 9 “Stretch”, |
| # which shipped with a version of 'hg' that does not support 'hg branch -r' |
| # to list branches for specific versions. Although Stretch is past its |
| # end-of-life date, we need to keep the builders happy until they can be |
| # turned down (https://go.dev/issue/56414). |
| hg branches |
| ? cmp stdout .hg-branches |
| stdout 'v2\s+6:9a4f43d231ec' |
| stdout 'v2.3.4\s+9:18518c07eb8e' |
| stdout 'v3\s+7:a2cad8a2b1bb' |
| stdout 'default\s+5:' |
| |
| # Likewise, bookmark v3 ends up on the nondeterministic commit. |
| hg bookmarks |
| ? cmp stdout .hg-bookmarks |
| stdout 'master\s+0:41964ddce118' |
| stdout 'v2\s+3:8f49ee7a6ddc' |
| stdout 'v2.3.4\s+1:88fde824ec8b' |
| stdout 'v3\s+5:.*' |
| |
| -- .hg-branches -- |
| v2.3.4 9:18518c07eb8e |
| v3 7:a2cad8a2b1bb |
| v2 6:9a4f43d231ec |
| -- .hg-tags -- |
| tip 9:18518c07eb8e |
| v2.0.2 3:8f49ee7a6ddc |
| v2.3 1:88fde824ec8b |
| v2.0.1 1:88fde824ec8b |
| v1.2.4-annotated 0:41964ddce118 |
| v1.2.3 0:41964ddce118 |
| -- .hg-bookmarks -- |
| master 0:41964ddce118 |
| v2 3:8f49ee7a6ddc |
| v2.3.4 1:88fde824ec8b |