Merge branch 'jd/p4-jobs-in-commit'
"git p4" learned to record P4 jobs in Git commit that imports from the history in Perforce. * jd/p4-jobs-in-commit: git-p4: add P4 jobs to git commit message git-p4: clean-up code style in tests
This commit is contained in:
commit
e61f75fe19
12
git-p4.py
12
git-p4.py
@ -2320,6 +2320,15 @@ class P4Sync(Command, P4UserMap):
|
|||||||
fnum = fnum + 1
|
fnum = fnum + 1
|
||||||
return files
|
return files
|
||||||
|
|
||||||
|
def extractJobsFromCommit(self, commit):
|
||||||
|
jobs = []
|
||||||
|
jnum = 0
|
||||||
|
while commit.has_key("job%s" % jnum):
|
||||||
|
job = commit["job%s" % jnum]
|
||||||
|
jobs.append(job)
|
||||||
|
jnum = jnum + 1
|
||||||
|
return jobs
|
||||||
|
|
||||||
def stripRepoPath(self, path, prefixes):
|
def stripRepoPath(self, path, prefixes):
|
||||||
"""When streaming files, this is called to map a p4 depot path
|
"""When streaming files, this is called to map a p4 depot path
|
||||||
to where it should go in git. The prefixes are either
|
to where it should go in git. The prefixes are either
|
||||||
@ -2665,6 +2674,7 @@ class P4Sync(Command, P4UserMap):
|
|||||||
def commit(self, details, files, branch, parent = ""):
|
def commit(self, details, files, branch, parent = ""):
|
||||||
epoch = details["time"]
|
epoch = details["time"]
|
||||||
author = details["user"]
|
author = details["user"]
|
||||||
|
jobs = self.extractJobsFromCommit(details)
|
||||||
|
|
||||||
if self.verbose:
|
if self.verbose:
|
||||||
print('commit into {0}'.format(branch))
|
print('commit into {0}'.format(branch))
|
||||||
@ -2692,6 +2702,8 @@ class P4Sync(Command, P4UserMap):
|
|||||||
|
|
||||||
self.gitStream.write("data <<EOT\n")
|
self.gitStream.write("data <<EOT\n")
|
||||||
self.gitStream.write(details["desc"])
|
self.gitStream.write(details["desc"])
|
||||||
|
if len(jobs) > 0:
|
||||||
|
self.gitStream.write("\nJobs: %s" % (' '.join(jobs)))
|
||||||
self.gitStream.write("\n[git-p4: depot-paths = \"%s\": change = %s" %
|
self.gitStream.write("\n[git-p4: depot-paths = \"%s\": change = %s" %
|
||||||
(','.join(self.branchPrefixes), details["change"]))
|
(','.join(self.branchPrefixes), details["change"]))
|
||||||
if len(details['options']) > 0:
|
if len(details['options']) > 0:
|
||||||
|
@ -160,6 +160,15 @@ p4_add_user() {
|
|||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p4_add_job () {
|
||||||
|
p4 job -f -i <<-EOF
|
||||||
|
Job: $1
|
||||||
|
Status: open
|
||||||
|
User: dummy
|
||||||
|
Description:
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
retry_until_success () {
|
retry_until_success () {
|
||||||
timeout=$(($(time_in_seconds) + $RETRY_TIMEOUT))
|
timeout=$(($(time_in_seconds) + $RETRY_TIMEOUT))
|
||||||
until "$@" 2>/dev/null || test $(time_in_seconds) -gt $timeout
|
until "$@" 2>/dev/null || test $(time_in_seconds) -gt $timeout
|
||||||
|
99
t/t9829-git-p4-jobs.sh
Executable file
99
t/t9829-git-p4-jobs.sh
Executable file
@ -0,0 +1,99 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='git p4 retrieve job info'
|
||||||
|
|
||||||
|
. ./lib-git-p4.sh
|
||||||
|
|
||||||
|
test_expect_success 'start p4d' '
|
||||||
|
start_p4d
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'add p4 jobs' '
|
||||||
|
(
|
||||||
|
p4_add_job TESTJOB-A &&
|
||||||
|
p4_add_job TESTJOB-B
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'add p4 files' '
|
||||||
|
client_view "//depot/... //client/..." &&
|
||||||
|
(
|
||||||
|
cd "$cli" &&
|
||||||
|
>file1 &&
|
||||||
|
p4 add file1 &&
|
||||||
|
p4 submit -d "Add file 1"
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'check log message of changelist with no jobs' '
|
||||||
|
client_view "//depot/... //client/..." &&
|
||||||
|
test_when_finished cleanup_git &&
|
||||||
|
(
|
||||||
|
cd "$git" &&
|
||||||
|
git init . &&
|
||||||
|
git p4 clone --use-client-spec --destination="$git" //depot@all &&
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
Add file 1
|
||||||
|
[git-p4: depot-paths = "//depot/": change = 1]
|
||||||
|
|
||||||
|
EOF
|
||||||
|
git log --format=%B >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'add TESTJOB-A to change 1' '
|
||||||
|
(
|
||||||
|
cd "$cli" &&
|
||||||
|
p4 fix -c 1 TESTJOB-A
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'check log message of changelist with one job' '
|
||||||
|
client_view "//depot/... //client/..." &&
|
||||||
|
test_when_finished cleanup_git &&
|
||||||
|
(
|
||||||
|
cd "$git" &&
|
||||||
|
git init . &&
|
||||||
|
git p4 clone --use-client-spec --destination="$git" //depot@all &&
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
Add file 1
|
||||||
|
Jobs: TESTJOB-A
|
||||||
|
[git-p4: depot-paths = "//depot/": change = 1]
|
||||||
|
|
||||||
|
EOF
|
||||||
|
git log --format=%B >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'add TESTJOB-B to change 1' '
|
||||||
|
(
|
||||||
|
cd "$cli" &&
|
||||||
|
p4 fix -c 1 TESTJOB-B
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'check log message of changelist with more jobs' '
|
||||||
|
client_view "//depot/... //client/..." &&
|
||||||
|
test_when_finished cleanup_git &&
|
||||||
|
(
|
||||||
|
cd "$git" &&
|
||||||
|
git init . &&
|
||||||
|
git p4 clone --use-client-spec --destination="$git" //depot@all &&
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
Add file 1
|
||||||
|
Jobs: TESTJOB-A TESTJOB-B
|
||||||
|
[git-p4: depot-paths = "//depot/": change = 1]
|
||||||
|
|
||||||
|
EOF
|
||||||
|
git log --format=%B >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'kill p4d' '
|
||||||
|
kill_p4d
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
Loading…
Reference in New Issue
Block a user