# [PATCH] contacts: allow execution from other directories

2 messages from 2013-09-17 to 2013-09-17. Participants: Thomas Gummerer, Eric Sunshine.
Thread: https://gitlist.dev/t/34947

## Thomas Gummerer, 2013-09-17 12:50

Subject: [PATCH] contacts: allow execution from other directories
Message-ID: <1379422246-12818-1-git-send-email-t.gummerer@gmail.com>
URL: https://gitlist.dev/e/1379422246-12818-1-git-send-email-t.gummerer%40gmail.com

```
Currently git-contacts only works if it is executed from the top level
of the git repository.  Enable the execution in sub directories of that
repository.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
---

I have no experience in perl, so there may be nicer implementations.  It works when tested manually.

 contrib/contacts/git-contacts | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/contrib/contacts/git-contacts b/contrib/contacts/git-contacts
index fb6429b..32f03fc 100755
--- a/contrib/contacts/git-contacts
+++ b/contrib/contacts/git-contacts
@@ -61,6 +61,9 @@ sub import_commits {
 sub get_blame {
 	my ($commits, $source, $from, $ranges) = @_;
 	return unless @$ranges;
+	my $git_dir = `git rev-parse --show-toplevel`;
+	chomp($git_dir);
+	$source = $git_dir . '/' . $source;
 	open my $f, '-|',
 		qw(git blame --porcelain -C),
 		map({"-L$_->[0],+$_->[1]"} @$ranges),
-- 
1.8.4.535.g7b94f8e.dirty

```

## Eric Sunshine, 2013-09-17 16:44

Subject: Re: [PATCH] contacts: allow execution from other directories
Message-ID: <CAPig+cTgfE_Lo2B50fy6rYOmfmb2O9wOZZfasTwt_Lx0k2KOOw@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcTgfE_Lo2B50fy6rYOmfmb2O9wOZZfasTwt_Lx0k2KOOw%40mail.gmail.com
In-Reply-To: <1379422246-12818-1-git-send-email-t.gummerer@gmail.com>

```
On Tue, Sep 17, 2013 at 8:50 AM, Thomas Gummerer <t.gummerer@gmail.com> wrote:
> Currently git-contacts only works if it is executed from the top level
> of the git repository.  Enable the execution in sub directories of that
> repository.

Thanks. This was on my to-do list but fell off my radar when I
accidentally deleted the to-do list (which, oddly, was not under
version control).

I have a patch in my local tree accomplishing the same thing, but in a
less expensive manner. I'll post it a bit later today for review.

> Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
> ---
>
> I have no experience in perl, so there may be nicer implementations.  It works when tested manually.
>
>  contrib/contacts/git-contacts | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/contrib/contacts/git-contacts b/contrib/contacts/git-contacts
> index fb6429b..32f03fc 100755
> --- a/contrib/contacts/git-contacts
> +++ b/contrib/contacts/git-contacts
> @@ -61,6 +61,9 @@ sub import_commits {
>  sub get_blame {
>         my ($commits, $source, $from, $ranges) = @_;
>         return unless @$ranges;
> +       my $git_dir = `git rev-parse --show-toplevel`;
> +       chomp($git_dir);
> +       $source = $git_dir . '/' . $source;
>         open my $f, '-|',
>                 qw(git blame --porcelain -C),
>                 map({"-L$_->[0],+$_->[1]"} @$ranges),
> --
> 1.8.4.535.g7b94f8e.dirty
>

```
