Merge branch 'master' into next

* master:
  git-p4: test for absolute PWD problem
  git-p4: use absolute directory for PWD env var
  git-p4: submit test for auto-creating clientPath
  git-p4: ensure submit clientPath exists before chdir
This commit is contained in:
Junio C Hamano
2011-12-12 13:49:15 -08:00
3 changed files with 94 additions and 2 deletions

View File

@@ -53,9 +53,10 @@ def p4_build_cmd(cmd):
def chdir(dir):
# P4 uses the PWD environment variable rather than getcwd(). Since we're
# not using the shell, we have to set it ourselves.
os.environ['PWD']=dir
# not using the shell, we have to set it ourselves. This path could
# be relative, so go there first, then figure out where we ended up.
os.chdir(dir)
os.environ['PWD'] = os.getcwd()
def die(msg):
if verbose:
@@ -1116,6 +1117,10 @@ class P4Submit(Command, P4UserMap):
print "Perforce checkout for depot path %s located at %s" % (self.depotPath, self.clientPath)
self.oldWorkingDirectory = os.getcwd()
# ensure the clientPath exists
if not os.path.exists(self.clientPath):
os.makedirs(self.clientPath)
chdir(self.clientPath)
print "Synchronizing p4 checkout..."
p4_sync("...")

38
t/t9807-submit.sh Executable file
View File

@@ -0,0 +1,38 @@
#!/bin/sh
test_description='git-p4 submit'
. ./lib-git-p4.sh
test_expect_success 'start p4d' '
start_p4d
'
test_expect_success 'init depot' '
(
cd "$cli" &&
echo file1 >file1 &&
p4 add file1 &&
p4 submit -d "change 1"
)
'
test_expect_success 'submit with no client dir' '
test_when_finished cleanup_git &&
"$GITP4" clone --dest="$git" //depot &&
(
cd "$git" &&
echo file2 >file2 &&
git add file2 &&
git commit -m "git commit 2" &&
rm -rf "$cli" &&
git config git-p4.skipSubmitEdit true &&
"$GITP4" submit
)
'
test_expect_success 'kill p4d' '
kill_p4d
'
test_done

49
t/t9808-chdir.sh Executable file
View File

@@ -0,0 +1,49 @@
#!/bin/sh
test_description='git-p4 relative chdir'
. ./lib-git-p4.sh
test_expect_success 'start p4d' '
start_p4d
'
test_expect_success 'init depot' '
(
cd "$cli" &&
echo file1 >file1 &&
p4 add file1 &&
p4 submit -d "change 1"
)
'
# P4 reads from P4CONFIG file to find its server params, if the
# environment variable is set
test_expect_success 'P4CONFIG and absolute dir clone' '
printf "P4PORT=$P4PORT\nP4CLIENT=$P4CLIENT\n" >p4config &&
test_when_finished "rm \"$TRASH_DIRECTORY/p4config\"" &&
test_when_finished cleanup_git &&
(
P4CONFIG=p4config && export P4CONFIG &&
unset P4PORT P4CLIENT &&
"$GITP4" clone --verbose --dest="$git" //depot
)
'
# same thing, but with relative directory name, note missing $ on --dest
test_expect_success 'P4CONFIG and relative dir clone' '
printf "P4PORT=$P4PORT\nP4CLIENT=$P4CLIENT\n" >p4config &&
test_when_finished "rm \"$TRASH_DIRECTORY/p4config\"" &&
test_when_finished cleanup_git &&
(
P4CONFIG=p4config && export P4CONFIG &&
unset P4PORT P4CLIENT &&
"$GITP4" clone --verbose --dest="git" //depot
)
'
test_expect_success 'kill p4d' '
kill_p4d
'
test_done