mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
5322d7b6fe
Summary: When a machine is newly set up, it needs to have the git mapfile available. Generating it from scratch is prohibitively slow for large repos like `configerator`, so instead add a command that can download the entire git metadata from a server that has it. This is a temporary hack while I work on a real fix to upstream to hg-git. A real fix would be - part of hg-git - not send the entire git metadata over, just the bits that are needed based on a common/heads computation - be dependent on bundle2 - (probably) be part of the pull operation, not a separate command - be configurable with an option This isn't part of hg-git, even in a private branch, to emphasize its temporary nature. `gitlookup` might also not be the best fit, but I want to avoid adding yet another extension for a temporary hack. Test Plan: Ran the following commands. Note that the current version of `hg` deployed to devservers is broken, so we need to deploy an updated hg before enabling this. These commands were tested against 1ced7c762592 (in `fbandroid-hg`, with `gitlookup` enabled on both ends and the remotefilelog fix in D1341059) hg gitgetmeta ../fbandroid-from-git Saw that 3 files were written out. hg gitgetmeta ssh://localhost//data/users/sid0/fbandroid-from-git Saw that 3 files were written out. Reviewers: dschleimer, davidsp, akushner, durham, pyd Reviewed By: pyd Differential Revision: https://phabricator.fb.com/D1341166 Tasks: 3751836
41 lines
1.4 KiB
Perl
41 lines
1.4 KiB
Perl
$ echo "[extensions]" >> $HGRCPATH
|
|
$ echo "gitlookup = $TESTDIR/../gitlookup.py" >> $HGRCPATH
|
|
|
|
Set up the hg-git files
|
|
$ hg init repo1
|
|
$ cd repo1/.hg
|
|
$ echo '0000000000000000000000000000000000000000 ffffffffffffffffffffffffffffffffffffffff' > git-mapfile
|
|
$ echo '0000000000000000000000000000000000000000 default/master' > git-remote-refs
|
|
$ echo '0000000000000000000000000000000000000000 0.1' > git-tags
|
|
|
|
|
|
$ cd ../..
|
|
$ hg clone repo1 repo2 -q
|
|
$ cd repo2
|
|
$ hg gitgetmeta -v
|
|
getting git metadata from $TESTTMP/repo1
|
|
writing .hg/git-mapfile
|
|
writing .hg/git-remote-refs
|
|
writing .hg/git-tags
|
|
wrote 3 files (183 bytes)
|
|
|
|
$ cat .hg/git-mapfile
|
|
0000000000000000000000000000000000000000 ffffffffffffffffffffffffffffffffffffffff
|
|
$ cat .hg/git-remote-refs
|
|
0000000000000000000000000000000000000000 default/master
|
|
$ cat .hg/git-tags
|
|
0000000000000000000000000000000000000000 0.1
|
|
|
|
Change a file upstream and see that it gets reflected her
|
|
$ echo '1111111111111111111111111111111111111111 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' >> ../repo1/.hg/git-mapfile
|
|
$ hg gitgetmeta -v
|
|
getting git metadata from $TESTTMP/repo1
|
|
writing .hg/git-mapfile
|
|
writing .hg/git-remote-refs
|
|
writing .hg/git-tags
|
|
wrote 3 files (265 bytes)
|
|
|
|
$ cat .hg/git-mapfile
|
|
0000000000000000000000000000000000000000 ffffffffffffffffffffffffffffffffffffffff
|
|
1111111111111111111111111111111111111111 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
|