rhg: check that .hg/requires is ASCII
Differential Revision: https://phab.mercurial-scm.org/D9400
#require rust
Define an rhg function that will only run if rhg exists
$ rhg() {
> if [ -f "$RUNTESTDIR/../rust/target/debug/rhg" ]; then
> "$RUNTESTDIR/../rust/target/debug/rhg" "$@"
> else
> echo "skipped: Cannot find rhg. Try to run cargo build in rust/rhg."
> exit 80
> fi
> }
Unimplemented command
$ rhg unimplemented-command
error: Found argument 'unimplemented-command' which wasn't expected, or isn't valid in this context
USAGE:
rhg <SUBCOMMAND>
For more information try --help
[252]
Finding root
$ rhg root
abort: no repository found in '$TESTTMP' (.hg not found)!
[255]
$ hg init repository
$ cd repository
$ rhg root
$TESTTMP/repository
Unwritable file descriptor
$ rhg root > /dev/full
abort: No space left on device (os error 28)
[255]
Deleted repository
$ rm -rf `pwd`
$ rhg root
abort: error getting current working directory: $ENOENT$
[255]
Listing tracked files
$ cd $TESTTMP
$ hg init repository
$ cd repository
$ for i in 1 2 3; do
> echo $i >> file$i
> hg add file$i
> done
> hg commit -m "commit $i" -q
Listing tracked files from root
$ rhg files
file1
file2
file3
Listing tracked files from subdirectory
$ mkdir -p path/to/directory
$ cd path/to/directory
$ rhg files
../../../file1
../../../file2
../../../file3
Listing tracked files through broken pipe
$ rhg files | head -n 1
../../../file1
Debuging data in inline index
$ cd $TESTTMP
$ rm -rf repository
$ hg init repository
$ cd repository
$ for i in 1 2 3; do
> echo $i >> file$i
> hg add file$i
> hg commit -m "commit $i" -q
> done
$ rhg debugdata -c 2
e36fa63d37a576b27a69057598351db6ee5746bd
test
0 0
file3
commit 3 (no-eol)
$ rhg debugdata -m 2
file1\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
file2\x005d9299349fc01ddd25d0070d149b124d8f10411e (esc)
file3\x002661d26c649684b482d10f91960cc3db683c38b4 (esc)
Debuging with full node id
$ rhg debugdata -c `hg log -r 0 -T '{node}'`
c8e64718e1ca0312eeee0f59d37f8dc612793856
test
0 0
file1
commit 1 (no-eol)
Cat files
$ cd $TESTTMP
$ rm -rf repository
$ hg init repository
$ cd repository
$ echo "original content" > original
$ hg add original
$ hg commit -m "add original" original
$ rhg cat -r 0 original
original content
Cat copied file should not display copy metadata
$ hg copy original copy_of_original
$ hg commit -m "add copy of original"
$ rhg cat -r 1 copy_of_original
original content
Requirements
$ rhg debugrequirements
dotencode
fncache
generaldelta
revlogv1
sparserevlog
store
$ echo indoor-pool >> .hg/requires
$ rhg files
[252]
$ rhg cat -r 1 copy_of_original
[252]
$ rhg debugrequirements
dotencode
fncache
generaldelta
revlogv1
sparserevlog
store
indoor-pool
$ echo -e '\xFF' >> .hg/requires
$ rhg debugrequirements
abort: .hg/requires is corrupted
[255]