Re: [PATCH v2] git-p4: map a P4 user to Git author name and email address

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]