Skip to content

Commit c7dd1c5

Browse files
committed
Merge branch 'rp/p4-filetype-change'
* rp/p4-filetype-change: git-p4.py: add support for filetype change
2 parents 3c80940 + a02b8bc commit c7dd1c5

File tree

2 files changed

+73
-2
lines changed

2 files changed

+73
-2
lines changed

git-p4.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,8 @@ def p4_add(f):
253253
def p4_delete(f):
254254
p4_system(["delete", wildcard_encode(f)])
255255

256-
def p4_edit(f):
257-
p4_system(["edit", wildcard_encode(f)])
256+
def p4_edit(f, *options):
257+
p4_system(["edit"] + list(options) + [wildcard_encode(f)])
258258

259259
def p4_revert(f):
260260
p4_system(["revert", wildcard_encode(f)])
@@ -1554,6 +1554,7 @@ def applyCommit(self, id):
15541554

15551555
diff = read_pipe_lines("git diff-tree -r %s \"%s^\" \"%s\"" % (self.diffOpts, id, id))
15561556
filesToAdd = set()
1557+
filesToChangeType = set()
15571558
filesToDelete = set()
15581559
editedFiles = set()
15591560
pureRenameCopy = set()
@@ -1614,6 +1615,8 @@ def applyCommit(self, id):
16141615
os.unlink(dest)
16151616
filesToDelete.add(src)
16161617
editedFiles.add(dest)
1618+
elif modifier == "T":
1619+
filesToChangeType.add(path)
16171620
else:
16181621
die("unknown modifier %s for %s" % (modifier, path))
16191622

@@ -1673,6 +1676,8 @@ def applyCommit(self, id):
16731676
#
16741677
system(applyPatchCmd)
16751678

1679+
for f in filesToChangeType:
1680+
p4_edit(f, "-t", "auto")
16761681
for f in filesToAdd:
16771682
p4_add(f)
16781683
for f in filesToDelete:

t/t9827-git-p4-change-filetype.sh

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#!/bin/sh
2+
3+
test_description='git p4 support for file type change'
4+
5+
. ./lib-git-p4.sh
6+
7+
test_expect_success 'start p4d' '
8+
start_p4d
9+
'
10+
11+
test_expect_success 'create files' '
12+
(
13+
cd "$cli" &&
14+
p4 client -o | sed "/LineEnd/s/:.*/:unix/" | p4 client -i &&
15+
cat >file1 <<-EOF &&
16+
text without any funny substitution business
17+
EOF
18+
cat >file2 <<-EOF &&
19+
second file whose type will change
20+
EOF
21+
p4 add file1 file2 &&
22+
p4 submit -d "add files"
23+
)
24+
'
25+
26+
test_expect_success SYMLINKS 'change file to symbolic link' '
27+
git p4 clone --dest="$git" //depot@all &&
28+
test_when_finished cleanup_git &&
29+
(
30+
cd "$git" &&
31+
git config git-p4.skipSubmitEdit true &&
32+
33+
rm file2 &&
34+
ln -s file1 file2 &&
35+
git add file2 &&
36+
git commit -m "symlink file1 to file2" &&
37+
git p4 submit &&
38+
p4 filelog -m 1 //depot/file2 >filelog &&
39+
grep "(symlink)" filelog
40+
)
41+
'
42+
43+
test_expect_success SYMLINKS 'change symbolic link to file' '
44+
git p4 clone --dest="$git" //depot@all &&
45+
test_when_finished cleanup_git &&
46+
(
47+
cd "$git" &&
48+
git config git-p4.skipSubmitEdit true &&
49+
50+
rm file2 &&
51+
cat >file2 <<-EOF &&
52+
This is another content for the second file.
53+
EOF
54+
git add file2 &&
55+
git commit -m "re-write file2" &&
56+
git p4 submit &&
57+
p4 filelog -m 1 //depot/file2 >filelog &&
58+
grep "(text)" filelog
59+
)
60+
'
61+
62+
test_expect_success 'kill p4d' '
63+
kill_p4d
64+
'
65+
66+
test_done

0 commit comments

Comments
 (0)