diff options
author | Pete Wyckoff <pw@padd.com> | 2014-01-21 18:16:45 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-01-22 08:06:19 -0800 |
commit | 79467e61aa30342d7fb17232624ec5ade4cbbe6a (patch) | |
tree | 44913add825355bf24771ea0c0baf50d47ea9e4e | |
parent | 0cf1b72a38e6190a7e614bbc53fbb81704a3d4af (diff) | |
download | git-79467e61aa30342d7fb17232624ec5ade4cbbe6a.tar.gz |
git p4: handle files with wildcards when doing RCS scrubbing
Commit 9d7d446 (git p4: submit files with wildcards, 2012-04-29)
fixed problems with handling files that had p4 wildcard
characters, like "@" and "*". But it missed one case, that of
RCS keyword scrubbing, which uses "p4 fstat" to extract type
information. Fix it by calling wildcard_encode() on the raw
filename.
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | git-p4.py | 4 | ||||
-rwxr-xr-x | t/t9812-git-p4-wildcards.sh | 23 |
2 files changed, 25 insertions, 2 deletions
@@ -310,8 +310,8 @@ def split_p4_type(p4type): # # return the raw p4 type of a file (text, text+ko, etc) # -def p4_type(file): - results = p4CmdList(["fstat", "-T", "headType", file]) +def p4_type(f): + results = p4CmdList(["fstat", "-T", "headType", wildcard_encode(f)]) return results[0]['headType'] # diff --git a/t/t9812-git-p4-wildcards.sh b/t/t9812-git-p4-wildcards.sh index f2ddbc50e7..c7472cbf54 100755 --- a/t/t9812-git-p4-wildcards.sh +++ b/t/t9812-git-p4-wildcards.sh @@ -188,6 +188,29 @@ test_expect_success 'p4 deleted a wildcard file' ' ) ' +test_expect_success 'wildcard files requiring keyword scrub' ' + ( + cd "$cli" && + cat <<-\EOF >scrub@wild && + $Id$ + line2 + EOF + p4 add -t text+k -f scrub@wild && + p4 submit -d "scrub at wild" + ) && + test_when_finished cleanup_git && + git p4 clone --dest="$git" //depot && + ( + cd "$git" && + git config git-p4.skipSubmitEdit true && + git config git-p4.attemptRCSCleanup true && + sed "s/^line2/line2 edit/" <scrub@wild >scrub@wild.tmp && + mv -f scrub@wild.tmp scrub@wild && + git commit -m "scrub at wild line2 edit" scrub@wild && + git p4 submit + ) +' + test_expect_success 'kill p4d' ' kill_p4d ' |