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>

Pete Wyckoff committed Jan 21, 2014 at 18:16 UTC 79467e61aa30342d7fb17232624ec5ade4cbbe6a
2 files changed +25 -2
git-p4.py
+2 -2
@@ -310,8 +310,8 @@ def split_p4_type(p4type):
310 #
311 # return the raw p4 type of a file (text, text+ko, etc)
312 #
313 -def p4_type(file):
314 - results = p4CmdList(["fstat", "-T", "headType", file])
313 +def p4_type(f):
314 + results = p4CmdList(["fstat", "-T", "headType", wildcard_encode(f)])
315 return results[0]['headType']
316
317 #
t/t9812-git-p4-wildcards.sh
+23
@@ -188,6 +188,29 @@ test_expect_success 'p4 deleted a wildcard file' '
188 )
189 '
190
191 +test_expect_success 'wildcard files requiring keyword scrub' '
192 + (
193 + cd "$cli" &&
194 + cat <<-\EOF >scrub@wild &&
195 + $Id$
196 + line2
197 + EOF
198 + p4 add -t text+k -f scrub@wild &&
199 + p4 submit -d "scrub at wild"
200 + ) &&
201 + test_when_finished cleanup_git &&
202 + git p4 clone --dest="$git" //depot &&
203 + (
204 + cd "$git" &&
205 + git config git-p4.skipSubmitEdit true &&
206 + git config git-p4.attemptRCSCleanup true &&
207 + sed "s/^line2/line2 edit/" <scrub@wild >scrub@wild.tmp &&
208 + mv -f scrub@wild.tmp scrub@wild &&
209 + git commit -m "scrub at wild line2 edit" scrub@wild &&
210 + git p4 submit
211 + )
212 +'
213 +
214 test_expect_success 'kill p4d' '
215 kill_p4d
216 '