-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Handle core.symlinks=false case in merge-recursive.
If the file system does not support symbolic links (core.symlinks=false), merge-recursive must write the merged symbolic link text into a regular file. While we are here, fix a tiny memory leak in the if-branch that writes real symbolic links. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at> Signed-off-by: Junio C Hamano <junkio@cox.net>
- Loading branch information
Johannes Sixt
authored and
Junio C Hamano
committed
Mar 4, 2007
1 parent
78a8d64
commit 723024d
Showing
2 changed files
with
64 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
#!/bin/sh | ||
# | ||
# Copyright (c) 2007 Johannes Sixt | ||
# | ||
|
||
test_description='merging symlinks on filesystem w/o symlink support. | ||
This tests that git-merge-recursive writes merge results as plain files | ||
if core.symlinks is false.' | ||
|
||
. ./test-lib.sh | ||
|
||
test_expect_success \ | ||
'setup' ' | ||
git-config core.symlinks false && | ||
> file && | ||
git-add file && | ||
git-commit -m initial && | ||
git-branch b-symlink && | ||
git-branch b-file && | ||
l=$(echo -n file | git-hash-object -t blob -w --stdin) && | ||
echo "120000 $l symlink" | git-update-index --index-info && | ||
git-commit -m master && | ||
git-checkout b-symlink && | ||
l=$(echo -n file-different | git-hash-object -t blob -w --stdin) && | ||
echo "120000 $l symlink" | git-update-index --index-info && | ||
git-commit -m b-symlink && | ||
git-checkout b-file && | ||
echo plain-file > symlink && | ||
git-add symlink && | ||
git-commit -m b-file' | ||
|
||
test_expect_failure \ | ||
'merge master into b-symlink, which has a different symbolic link' ' | ||
! git-checkout b-symlink || | ||
git-merge master' | ||
|
||
test_expect_success \ | ||
'the merge result must be a file' ' | ||
test -f symlink' | ||
|
||
test_expect_failure \ | ||
'merge master into b-file, which has a file instead of a symbolic link' ' | ||
! (git-reset --hard && | ||
git-checkout b-file) || | ||
git-merge master' | ||
|
||
test_expect_success \ | ||
'the merge result must be a file' ' | ||
test -f symlink' | ||
|
||
test_expect_failure \ | ||
'merge b-file, which has a file instead of a symbolic link, into master' ' | ||
! (git-reset --hard && | ||
git-checkout master) || | ||
git-merge b-file' | ||
|
||
test_expect_success \ | ||
'the merge result must be a file' ' | ||
test -f symlink' | ||
|
||
test_done |