* [PATCH v1] git-p4: map a P4 user to Git author name and email address
@ 2016-02-28 10:25 larsxschneider
2016-02-28 16:19 ` Eric Sunshine
2016-02-29 5:12 ` Luke Diamand
0 siblings, 2 replies; 6+ messages in thread
From: larsxschneider @ 2016-02-28 10:25 UTC (permalink / raw)
To: git; +Cc: luke, Lars Schneider, Lars Schneider
From: Lars Schneider <lars.schneider@autodesk.com>
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>
---
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..b453e79 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@address.com>"
+-------------
++
+ 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..97e4334 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+)>$", 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..daf2567
--- /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=mo
+ >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 Mustermann <max@muster.com>" &&
+ git config --add git-p4.mapUser "mo -> Moritz Untreu <moritz@untreu.com>" &&
+ git p4 clone --use-client-spec --destination="$git" //depot@all &&
+ cat >expect <<-\EOF &&
+ no <no@client>
+ Moritz Untreu <moritz@untreu.com>
+ Max Mustermann <max@muster.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
--
2.5.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v1] git-p4: map a P4 user to Git author name and email address
2016-02-28 10:25 [PATCH v1] git-p4: map a P4 user to Git author name and email address larsxschneider
@ 2016-02-28 16:19 ` Eric Sunshine
2016-02-28 17:05 ` Lars Schneider
2016-02-29 5:12 ` Luke Diamand
1 sibling, 1 reply; 6+ messages in thread
From: Eric Sunshine @ 2016-02-28 16:19 UTC (permalink / raw)
To: Lars Schneider; +Cc: Git List, Luke Diamand, Lars Schneider
On Sun, Feb 28, 2016 at 5:25 AM, <larsxschneider@gmail.com> wrote:
> 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>".
With the caveat that I'm not a Perforce user, is this arrow "->"
thingy common in the Perforce world, or was it invented with this
patch? If it was invented here, then would it make sense to instead
use a more established format, such as the "authors" mapping file from
git-svn?
p4user = Joe User <user@example.com>
More below...
> Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
> ---
> diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
> @@ -553,6 +553,17 @@ git-p4.keepEmptyCommits::
> +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.
Does this format correctly with Asciidoc, or does the pargraph need to
be left-justified? (I haven't tested it myself.)
> diff --git a/t/t9828-git-p4-map-user.sh 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"
Broken &&-chain.
> + P4USER=mmax
Ditto.
> + >max.txt &&
> + p4 add max.txt &&
> + p4 submit -d "Add file max"
Ditto.
> + P4USER=mo
Ditto.
> + >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 Mustermann <max@muster.com>" &&
> + git config --add git-p4.mapUser "mo -> Moritz Untreu <moritz@untreu.com>" &&
> + git p4 clone --use-client-spec --destination="$git" //depot@all &&
> + cat >expect <<-\EOF &&
> + no <no@client>
> + Moritz Untreu <moritz@untreu.com>
> + Max Mustermann <max@muster.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
> --
> 2.5.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1] git-p4: map a P4 user to Git author name and email address
2016-02-28 16:19 ` Eric Sunshine
@ 2016-02-28 17:05 ` Lars Schneider
2016-02-29 3:53 ` Eric Sunshine
0 siblings, 1 reply; 6+ messages in thread
From: Lars Schneider @ 2016-02-28 17:05 UTC (permalink / raw)
To: Eric Sunshine; +Cc: Git List, Luke Diamand, Lars Schneider
On 28 Feb 2016, at 17:19, Eric Sunshine <sunshine@sunshineco.com> wrote:
> On Sun, Feb 28, 2016 at 5:25 AM, <larsxschneider@gmail.com> wrote:
>> 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>".
>
> With the caveat that I'm not a Perforce user, is this arrow "->"
> thingy common in the Perforce world, or was it invented with this
> patch? If it was invented here, then would it make sense to instead
> use a more established format, such as the "authors" mapping file from
> git-svn?
>
> p4user = Joe User <user@example.com>
I invented "the arrow" here :-)
I didn't know about the SVN format and I agree it makes sense to reuse
an established format. I will fix this in a reroll.
>
> More below...
>
>> Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
>> ---
>> diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
>> @@ -553,6 +553,17 @@ git-p4.keepEmptyCommits::
>> +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.
>
> Does this format correctly with Asciidoc, or does the pargraph need to
> be left-justified? (I haven't tested it myself.)
I am not exactly sure what you mean. The last paragraph is already left
justified, no? Do you know a good tutorial for Asciidoc? How can I/should
I check these things?
>
>> diff --git a/t/t9828-git-p4-map-user.sh 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"
>
> Broken &&-chain.
Oh. You're right. Will fix!
Thanks for the review,
Lars
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1] git-p4: map a P4 user to Git author name and email address
2016-02-28 17:05 ` Lars Schneider
@ 2016-02-29 3:53 ` Eric Sunshine
0 siblings, 0 replies; 6+ messages in thread
From: Eric Sunshine @ 2016-02-29 3:53 UTC (permalink / raw)
To: Lars Schneider; +Cc: Git List, Luke Diamand, Lars Schneider
On Sun, Feb 28, 2016 at 12:05 PM, Lars Schneider
<larsxschneider@gmail.com> wrote:
> On 28 Feb 2016, at 17:19, Eric Sunshine <sunshine@sunshineco.com> wrote:
>> On Sun, Feb 28, 2016 at 5:25 AM, <larsxschneider@gmail.com> wrote:
>>> +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.
>>
>> Does this format correctly with Asciidoc, or does the pargraph need to
>> be left-justified? (I haven't tested it myself.)
> I am not exactly sure what you mean. The last paragraph is already left
> justified, no?
Sorry, I meant "does it need to be flush against the left margin (that
is column 0)?" Just picking a file at random, (say
Documentation/blame-options.txt), you see quickly that while the first
paragraph of an entry is indented, subsequent paragraphs belonging to
that entry are not.
> Do you know a good tutorial for Asciidoc? How can I/should
> I check these things?
I haven't looked at tutorial; I've merely consult the Asciidoc
documentation when needed. Assuming you have the Asciidoc toolchain
installed, the easiest way to check if it formats correctly is to run
"make html" and then look at the built Documentation/git-p4.html in a
browser.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1] git-p4: map a P4 user to Git author name and email address
2016-02-28 10:25 [PATCH v1] git-p4: map a P4 user to Git author name and email address larsxschneider
2016-02-28 16:19 ` Eric Sunshine
@ 2016-02-29 5:12 ` Luke Diamand
2016-02-29 5:31 ` Torsten Bögershausen
1 sibling, 1 reply; 6+ messages in thread
From: Luke Diamand @ 2016-02-29 5:12 UTC (permalink / raw)
To: Lars Schneider; +Cc: Git Users, Lars Schneider
On 28 February 2016 at 10:25, <larsxschneider@gmail.com> wrote:
> From: Lars Schneider <lars.schneider@autodesk.com>
>
> 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>".
Seems generally fine. I agree with Eric's comments about the "->"
format. One comment below:
> +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 Mustermann <max@muster.com>" &&
> + git config --add git-p4.mapUser "mo -> Moritz Untreu <moritz@untreu.com>" &&
Probably better to use more innocuous names. I'm not sure who these
people are, but they might not appreciate being recorded forver in a
git-p4 test script.
Luke
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1] git-p4: map a P4 user to Git author name and email address
2016-02-29 5:12 ` Luke Diamand
@ 2016-02-29 5:31 ` Torsten Bögershausen
0 siblings, 0 replies; 6+ messages in thread
From: Torsten Bögershausen @ 2016-02-29 5:31 UTC (permalink / raw)
To: Luke Diamand, Lars Schneider; +Cc: Git Users, Lars Schneider
+ (
+ cd "$git" &&
+ git init . &&
+ git config --add git-p4.mapUser "mmax -> Max Mustermann <max@muster.com>" &&
+ git config --add git-p4.mapUser "mo -> Moritz Untreu <moritz@untreu.com>" &&
> Probably better to use more innocuous names. I'm not sure who these
> people are, but they might not appreciate being recorded forver in a
> git-p4 test script.
>
>
A better name could be
Max Musterman <max@example.com>
Erika Musterman <erika@example.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-02-29 5:31 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-28 10:25 [PATCH v1] git-p4: map a P4 user to Git author name and email address larsxschneider
2016-02-28 16:19 ` Eric Sunshine
2016-02-28 17:05 ` Lars Schneider
2016-02-29 3:53 ` Eric Sunshine
2016-02-29 5:12 ` Luke Diamand
2016-02-29 5:31 ` Torsten Bögershausen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).