mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
f10fc4ae24
This flag makes missing revlog errors to be ignored which allow broken repositories to be fixed by converting them from and to Mercurial.
70 lines
1.1 KiB
Bash
Executable File
70 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
cat >> $HGRCPATH <<EOF
|
|
[extensions]
|
|
convert=
|
|
[convert]
|
|
hg.saverev=False
|
|
EOF
|
|
|
|
hg init orig
|
|
cd orig
|
|
|
|
echo foo > foo
|
|
echo bar > bar
|
|
hg ci -qAm 'add foo bar' -d '0 0'
|
|
|
|
echo >> foo
|
|
hg ci -m 'change foo' -d '1 0'
|
|
|
|
hg up -qC 0
|
|
hg copy --after --force foo bar
|
|
hg copy foo baz
|
|
hg ci -m 'make bar and baz copies of foo' -d '2 0'
|
|
|
|
hg merge
|
|
hg ci -m 'merge local copy' -d '3 0'
|
|
|
|
hg up -C 1
|
|
hg merge 2
|
|
hg ci -m 'merge remote copy' -d '4 0'
|
|
|
|
chmod +x baz
|
|
hg ci -m 'mark baz executable' -d '5 0'
|
|
|
|
cd ..
|
|
hg convert --datesort orig new 2>&1 | grep -v 'subversion python bindings could not be loaded'
|
|
cd new
|
|
hg out ../orig
|
|
cd ..
|
|
|
|
echo % init broken repository
|
|
hg init broken
|
|
cd broken
|
|
echo a >> a
|
|
echo b >> b
|
|
hg ci -qAm init
|
|
echo a >> a
|
|
echo b >> b
|
|
hg copy b c
|
|
hg ci -qAm changeall
|
|
hg up -qC 0
|
|
echo bc >> b
|
|
hg ci -m changebagain
|
|
HGMERGE=internal:local hg -q merge
|
|
hg ci -m merge
|
|
hg mv b d
|
|
hg ci -m moveb
|
|
echo % break it
|
|
rm .hg/store/data/b.*
|
|
cd ..
|
|
|
|
hg --config convert.hg.ignoreerrors=True convert broken fixed
|
|
hg -R fixed verify
|
|
echo '% manifest -r 0'
|
|
hg -R fixed manifest -r 0
|
|
echo '% manifest -r tip'
|
|
hg -R fixed manifest -r tip
|
|
|
|
true
|