merge: store ACTION_KEEP_ABSENT when we are keeping the file absent locally
If a file is not present on the local side, and it's unchanged between other
merge parent and ancestor, we don't use any action, neither we had a if-else
branch for that condition. This leads to bid-merge missing that there is a
such action possible which can be performed.
As test changes demonstrate, we now choose the locally deleted side instead
of choosing the remote one consistently. This is also wrong behavior which is
resulted because of missing possible action. It will be fixed in next patch.
This whole logic is not acurrate as we should prompt user on what to do
when this kind of criss-cross merge is in play.
Differential Revision: https://phab.mercurial-scm.org/D8940
#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