sapling/tests/test-hggit-git-workflow.t
Durham Goode bf3cad3004 hggit: store git hash in hg extras
Summary:
In order to move our hg-git mirroring off of the main hg servers, we
need to make it possible for the hg servers to compute the hg-git mapping
without having the entire git repository available. To do so, let's store the
git hash as an extra in the hg commit.

This breaks bidirectionality, but we've long since not needed that.

Reviewed By: phillco

Differential Revision: D13362980

fbshipit-source-id: 51df709bc5e77d78bb963abf90d0c35bb743d966
2018-12-06 12:35:14 -08:00

138 lines
4.0 KiB
Perl

Load commonly used test logic
$ . "$TESTDIR/hggit/testutil"
$ hg init hgrepo
$ cd hgrepo
$ echo alpha > alpha
$ hg add alpha
$ fn_hg_commit -m "add alpha"
$ hg log --graph --debug | grep -v phase:
@ changeset: 0:0221c246a56712c6aa64e5ee382244d8a471b1e2
tag: tip
parent: -1:0000000000000000000000000000000000000000
parent: -1:0000000000000000000000000000000000000000
manifest: 0:8b8a0e87dfd7a0706c0524afa8ba67e20544cbf0
user: test
date: Mon Jan 01 00:00:10 2007 +0000
files+: alpha
extra: branch=default
description:
add alpha
$ cd ..
configure for use from git
$ hg clone hgrepo gitrepo
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd gitrepo
$ hg book master
$ hg up null | egrep -v '^\(leaving bookmark master\)$'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo "[git]" >> .hg/hgrc
$ echo "intree = True" >> .hg/hgrc
$ hg gexport
do some work
$ git config core.bare false
$ git checkout master
Already on 'master'
$ echo beta > beta
$ git add beta
$ fn_git_commit -m 'add beta'
get things back to hg
$ hg gimport
importing git objects into hg
$ hg log --graph --debug | grep -v phase:
o changeset: 1:d294862c083a2eac3c1b31d3a3bdbdffb49a5b25
| bookmark: master
| tag: tip
| parent: 0:0221c246a56712c6aa64e5ee382244d8a471b1e2
| parent: -1:0000000000000000000000000000000000000000
| manifest: 1:f0bd6fbafbaebe4bb59c35108428f6fce152431d
| user: test <test@example.org>
| date: Mon Jan 01 00:00:11 2007 +0000
| files+: beta
| extra: branch=default
| extra: convert_revision=fef06279bff0022eee567d65729d8e795fd3efe8
| extra: hg-git-rename-source=git
| description:
| add beta
|
|
o changeset: 0:0221c246a56712c6aa64e5ee382244d8a471b1e2
parent: -1:0000000000000000000000000000000000000000
parent: -1:0000000000000000000000000000000000000000
manifest: 0:8b8a0e87dfd7a0706c0524afa8ba67e20544cbf0
user: test
date: Mon Jan 01 00:00:10 2007 +0000
files+: alpha
extra: branch=default
description:
add alpha
gimport should have updated the bookmarks as well
$ hg bookmarks
master 1:d294862c083a
gimport support for git.mindate
$ cat >> .hg/hgrc << EOF
> [git]
> mindate = 2014-01-02 00:00:00 +0000
> EOF
$ echo oldcommit > oldcommit
$ git add oldcommit
$ GIT_AUTHOR_DATE="2014-03-01 00:00:00 +0000" \
> GIT_COMMITTER_DATE="2009-01-01 00:00:00 +0000" \
> git commit -m oldcommit > /dev/null || echo "git commit error"
$ hg gimport
no changes found
$ hg log --graph
o changeset: 1:d294862c083a
| bookmark: master
| tag: tip
| user: test <test@example.org>
| date: Mon Jan 01 00:00:11 2007 +0000
| summary: add beta
|
o changeset: 0:0221c246a567
user: test
date: Mon Jan 01 00:00:10 2007 +0000
summary: add alpha
$ echo newcommit > newcommit
$ git add newcommit
$ GIT_AUTHOR_DATE="2014-01-01 00:00:00 +0000" \
> GIT_COMMITTER_DATE="2014-01-02 00:00:00 +0000" \
> git commit -m newcommit > /dev/null || echo "git commit error"
$ hg gimport
importing git objects into hg
$ hg log --graph
o changeset: 3:3231f2356e13
| bookmark: master
| tag: tip
| user: test <test@example.org>
| date: Wed Jan 01 00:00:00 2014 +0000
| summary: newcommit
|
o changeset: 2:7912581b53bd
| user: test <test@example.org>
| date: Sat Mar 01 00:00:00 2014 +0000
| summary: oldcommit
|
o changeset: 1:d294862c083a
| user: test <test@example.org>
| date: Mon Jan 01 00:00:11 2007 +0000
| summary: add beta
|
o changeset: 0:0221c246a567
user: test
date: Mon Jan 01 00:00:10 2007 +0000
summary: add alpha