git-p4: map a P4 user to Git author name and email address
Map a P4 user to a specific name and email address in Git with the "git-p4.mapUser" config. The config value must be a string adhering to the format "p4user = First Lastname <email@address.com>". Signed-off-by: Lars Schneider <larsxschneider@gmail.com> Reviewed-by: Luke Diamand <luke@diamand.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
594730e980
commit
10d08a149d
@ -553,6 +553,17 @@ git-p4.keepEmptyCommits::
|
|||||||
A changelist that contains only excluded files will be imported
|
A changelist that contains only excluded files will be imported
|
||||||
as an empty commit if this boolean option is set to true.
|
as an empty commit if this boolean option is set to true.
|
||||||
|
|
||||||
|
git-p4.mapUser::
|
||||||
|
Map a P4 user to a name and email address in Git. Use a string
|
||||||
|
with the following format to create a mapping:
|
||||||
|
+
|
||||||
|
-------------
|
||||||
|
git config --add git-p4.mapUser "p4user = First Last <mail@address.com>"
|
||||||
|
-------------
|
||||||
|
+
|
||||||
|
A mapping will override any user information from P4. Mappings for
|
||||||
|
multiple P4 user can be defined.
|
||||||
|
|
||||||
Submit variables
|
Submit variables
|
||||||
~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~
|
||||||
git-p4.detectRenames::
|
git-p4.detectRenames::
|
||||||
|
@ -1160,6 +1160,15 @@ class P4UserMap:
|
|||||||
self.users[output["User"]] = output["FullName"] + " <" + output["Email"] + ">"
|
self.users[output["User"]] = output["FullName"] + " <" + output["Email"] + ">"
|
||||||
self.emails[output["Email"]] = output["User"]
|
self.emails[output["Email"]] = output["User"]
|
||||||
|
|
||||||
|
mapUserConfigRegex = re.compile(r"^\s*(\S+)\s*=\s*(.+)\s*<(\S+)>\s*$", re.VERBOSE)
|
||||||
|
for mapUserConfig in gitConfigList("git-p4.mapUser"):
|
||||||
|
mapUser = mapUserConfigRegex.findall(mapUserConfig)
|
||||||
|
if mapUser and len(mapUser[0]) == 3:
|
||||||
|
user = mapUser[0][0]
|
||||||
|
fullname = mapUser[0][1]
|
||||||
|
email = mapUser[0][2]
|
||||||
|
self.users[user] = fullname + " <" + email + ">"
|
||||||
|
self.emails[email] = user
|
||||||
|
|
||||||
s = ''
|
s = ''
|
||||||
for (key, val) in self.users.items():
|
for (key, val) in self.users.items():
|
||||||
|
61
t/t9828-git-p4-map-user.sh
Executable file
61
t/t9828-git-p4-map-user.sh
Executable file
@ -0,0 +1,61 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='Clone repositories and map users'
|
||||||
|
|
||||||
|
. ./lib-git-p4.sh
|
||||||
|
|
||||||
|
test_expect_success 'start p4d' '
|
||||||
|
start_p4d
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Create a repo with different users' '
|
||||||
|
client_view "//depot/... //client/..." &&
|
||||||
|
(
|
||||||
|
cd "$cli" &&
|
||||||
|
|
||||||
|
>author.txt &&
|
||||||
|
p4 add author.txt &&
|
||||||
|
p4 submit -d "Add file author\\n" &&
|
||||||
|
|
||||||
|
P4USER=mmax &&
|
||||||
|
>max.txt &&
|
||||||
|
p4 add max.txt &&
|
||||||
|
p4 submit -d "Add file max" &&
|
||||||
|
|
||||||
|
P4USER=eri &&
|
||||||
|
>moritz.txt &&
|
||||||
|
p4 add moritz.txt &&
|
||||||
|
p4 submit -d "Add file moritz" &&
|
||||||
|
|
||||||
|
P4USER=no &&
|
||||||
|
>nobody.txt &&
|
||||||
|
p4 add nobody.txt &&
|
||||||
|
p4 submit -d "Add file nobody"
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Clone repo root path with all history' '
|
||||||
|
client_view "//depot/... //client/..." &&
|
||||||
|
test_when_finished cleanup_git &&
|
||||||
|
(
|
||||||
|
cd "$git" &&
|
||||||
|
git init . &&
|
||||||
|
git config --add git-p4.mapUser "mmax = Max Musterman <max@example.com> " &&
|
||||||
|
git config --add git-p4.mapUser " eri=Erika Musterman <erika@example.com>" &&
|
||||||
|
git p4 clone --use-client-spec --destination="$git" //depot@all &&
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
no <no@client>
|
||||||
|
Erika Musterman <erika@example.com>
|
||||||
|
Max Musterman <max@example.com>
|
||||||
|
Dr. author <author@example.com>
|
||||||
|
EOF
|
||||||
|
git log --format="%an <%ae>" >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'kill p4d' '
|
||||||
|
kill_p4d
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
Loading…
Reference in New Issue
Block a user