On 01 Mar 2016, at 11:49, larsxschneider@xxxxxxxxx wrote: > From: Lars Schneider <lars.schneider@xxxxxxxxxxxx> oops ... this should be "larsxschneider@xxxxxxxxx"... sorry - Lars > > 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@xxxxxxxxxxx>". > > Signed-off-by: Lars Schneider <larsxschneider@xxxxxxxxx> > --- > > diff to v1: > > * use '=' instead of '->' to mimic SVN user mapping format (thanks Eric) > * fix ASCII doc formatting (thanks Eric) > * fix broken && chain in test (thanks Eric) > * use more innocuous names for test users (thanks Luke and Torsten) > * make regex accept more blank characters > > Cheers, > Lars > > > Documentation/git-p4.txt | 11 +++++++++ > git-p4.py | 9 +++++++ > t/t9828-git-p4-map-user.sh | 61 ++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 81 insertions(+) > create mode 100755 t/t9828-git-p4-map-user.sh > > diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt > index 738cfde..9f077fd 100644 > --- a/Documentation/git-p4.txt > +++ b/Documentation/git-p4.txt > @@ -553,6 +553,17 @@ git-p4.keepEmptyCommits:: > A changelist that contains only excluded files will be imported > 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@xxxxxxxxxxx>" > +------------- > ++ > +A mapping will override any user information from P4. Mappings for > +multiple P4 user can be defined. > + > Submit variables > ~~~~~~~~~~~~~~~~ > git-p4.detectRenames:: > diff --git a/git-p4.py b/git-p4.py > index c33dece..bac341d 100755 > --- a/git-p4.py > +++ b/git-p4.py > @@ -1160,6 +1160,15 @@ class P4UserMap: > self.users[output["User"]] = output["FullName"] + " <" + output["Email"] + ">" > 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 = '' > for (key, val) in self.users.items(): > diff --git a/t/t9828-git-p4-map-user.sh b/t/t9828-git-p4-map-user.sh > new file mode 100755 > index 0000000..e20395c > --- /dev/null > +++ b/t/t9828-git-p4-map-user.sh > @@ -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@xxxxxxxxxxx> " && > + git config --add git-p4.mapUser " eri=Erika Musterman <erika@xxxxxxxxxxx>" && > + git p4 clone --use-client-spec --destination="$git" //depot@all && > + cat >expect <<-\EOF && > + no <no@client> > + Erika Musterman <erika@xxxxxxxxxxx> > + Max Musterman <max@xxxxxxxxxxx> > + Dr. author <author@xxxxxxxxxxx> > + EOF > + git log --format="%an <%ae>" >actual && > + test_cmp expect actual > + ) > +' > + > +test_expect_success 'kill p4d' ' > + kill_p4d > +' > + > +test_done > -- > 2.5.1 > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html