git p4: bring back files in deleted client directory
The code to auto-create the client directory, added in 0591cfa
(git-p4: ensure submit clientPath exists before chdir,
2011-12-09), works when the client directory never existed.
But if the directory is summarily removed without telling p4,
the sync operation will not bring back all the files. Always
do "sync -f" if the client directory is newly created.
Reported-by: Gary Gibbons <ggibbons@perforce.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
9768cafe68
commit
8d7ec3629c
12
git-p4.py
12
git-p4.py
@ -135,8 +135,8 @@ def p4_system(cmd):
|
|||||||
def p4_integrate(src, dest):
|
def p4_integrate(src, dest):
|
||||||
p4_system(["integrate", "-Dt", src, dest])
|
p4_system(["integrate", "-Dt", src, dest])
|
||||||
|
|
||||||
def p4_sync(path):
|
def p4_sync(f, *options):
|
||||||
p4_system(["sync", path])
|
p4_system(["sync"] + list(options) + [f])
|
||||||
|
|
||||||
def p4_add(f):
|
def p4_add(f):
|
||||||
p4_system(["add", f])
|
p4_system(["add", f])
|
||||||
@ -1361,12 +1361,18 @@ class P4Submit(Command, P4UserMap):
|
|||||||
self.oldWorkingDirectory = os.getcwd()
|
self.oldWorkingDirectory = os.getcwd()
|
||||||
|
|
||||||
# ensure the clientPath exists
|
# ensure the clientPath exists
|
||||||
|
new_client_dir = False
|
||||||
if not os.path.exists(self.clientPath):
|
if not os.path.exists(self.clientPath):
|
||||||
|
new_client_dir = True
|
||||||
os.makedirs(self.clientPath)
|
os.makedirs(self.clientPath)
|
||||||
|
|
||||||
chdir(self.clientPath)
|
chdir(self.clientPath)
|
||||||
print "Synchronizing p4 checkout..."
|
print "Synchronizing p4 checkout..."
|
||||||
p4_sync("...")
|
if new_client_dir:
|
||||||
|
# old one was destroyed, and maybe nobody told p4
|
||||||
|
p4_sync("...", "-f")
|
||||||
|
else:
|
||||||
|
p4_sync("...")
|
||||||
self.check()
|
self.check()
|
||||||
|
|
||||||
commits = []
|
commits = []
|
||||||
|
@ -28,6 +28,11 @@ test_expect_success 'submit with no client dir' '
|
|||||||
rm -rf "$cli" &&
|
rm -rf "$cli" &&
|
||||||
git config git-p4.skipSubmitEdit true &&
|
git config git-p4.skipSubmitEdit true &&
|
||||||
git p4 submit
|
git p4 submit
|
||||||
|
) &&
|
||||||
|
(
|
||||||
|
cd "$cli" &&
|
||||||
|
test_path_is_file file1 &&
|
||||||
|
test_path_is_file file2
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
@ -44,7 +49,6 @@ test_expect_success 'submit --origin' '
|
|||||||
) &&
|
) &&
|
||||||
(
|
(
|
||||||
cd "$cli" &&
|
cd "$cli" &&
|
||||||
p4 sync &&
|
|
||||||
test_path_is_missing "file3.t" &&
|
test_path_is_missing "file3.t" &&
|
||||||
test_path_is_file "file4.t"
|
test_path_is_file "file4.t"
|
||||||
)
|
)
|
||||||
@ -79,7 +83,6 @@ test_expect_success 'submit with master branch name from argv' '
|
|||||||
) &&
|
) &&
|
||||||
(
|
(
|
||||||
cd "$cli" &&
|
cd "$cli" &&
|
||||||
p4 sync &&
|
|
||||||
test_path_is_file "file6.t" &&
|
test_path_is_file "file6.t" &&
|
||||||
test_path_is_missing "file7.t"
|
test_path_is_missing "file7.t"
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user