[PATCH] Fix git-pull output message

Subsystems: the rest

DORMANTno replies

3 messages, 2 authors, 2016-06-15 · open the first message on its own page

[PATCH] Fix git-pull output message

From: Robert Watson <hidden>
Date: 2016-06-15 22:42:07

(git)$ git-pull
Fetching refs/heads/master from
http://www.kernel.org/pub/scm/git/git.git using http
* committish: 3cc35e29ec252d0dca1139106fbaa70cb9ad6ef1
  branch 'master' of http://www.kernel.org/pub/scm/git/git
* refs/heads/origin: same as branch 'master' of
http://www.kernel.org/pub/scm/git/git
Already up-to-date. Yeeah!

Notice that the git.git directory is truncated.  It seems the
intension is to truncate at the .git
directory level.  The following patch fixes it.
diff --git a/git-fetch.sh b/git-fetch.sh
--- a/git-fetch.sh
+++ b/git-fetch.sh
@@ -70,7 +70,7 @@ append_fetch_head () {
     *)
        note_="$remote_name of " ;;
     esac
-    remote_1_=$(expr "$remote_" : '\(.*\)\.git/*$') &&
+    remote_1_=$(expr "$remote_" : '\(.*/\)\.git/*$') &&
        remote_="$remote_1_"
     note_="$note_$remote_"

Re: [PATCH] Fix git-pull output message

From: Linus Torvalds <torvalds@osdl.org>
Date: 2016-06-15 22:42:07


On Wed, 28 Sep 2005, Robert Watson wrote:
Notice that the git.git directory is truncated.  It seems the
intension is to truncate at the .git
directory level.  The following patch fixes it.
No, the intention really is to remove the ".git" at the end. At least 
that's how I use it.

I like seeing my merges say

    Merge branch 'for-linus' from master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband

even though the _real_ directory was ".../infiniband.git/", simply because 
the ".git" doesn't really add any extra information when you're already in 
git.

_outside_ of git, the ".git" tells you something: it tells you that you're 
entering a git archive. But when merging in git, that part is kind of 
taken for granted, isn't it?

This also matches what "git-receive-pack" and "git-upload-pack" does:

	...
        /* chdir to the directory. If that fails, try appending ".git" */
        if (chdir(dir) < 0) {
                if (chdir(mkpath("%s.git", dir)) < 0)
                        die("unable to cd to %s", dir);
        }

        /* If we have a ".git" directory, chdir to it */
        chdir(".git");
	...

Note how it _both_ will append ".git" to the directory name (if it can't 
find one without ".git" _and_ will try to chdir to a ".git" directory 
_within_ the directory name.

So if you use the native pack ssh interfaces, you really can say

	git pull master.kernel.org:.../infiniband

because the tools (well, the "native pack" ones - not the http/rsync/scp
ones) will automatically DTRT.

		Linus

Re: [PATCH] Fix git-pull output message

From: Robert Watson <hidden>
Date: 2016-06-15 22:42:07

On 9/28/05, Linus Torvalds [off-list ref] wrote:

On Wed, 28 Sep 2005, Robert Watson wrote:
quoted
Notice that the git.git directory is truncated.  It seems the
intension is to truncate at the .git
directory level.  The following patch fixes it.
No, the intention really is to remove the ".git" at the end. At least
that's how I use it.

I like seeing my merges say

    Merge branch 'for-linus' from master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband

even though the _real_ directory was ".../infiniband.git/", simply because
the ".git" doesn't really add any extra information when you're already in
git.

_outside_ of git, the ".git" tells you something: it tells you that you're
entering a git archive. But when merging in git, that part is kind of
taken for granted, isn't it?

This also matches what "git-receive-pack" and "git-upload-pack" does:

        ...
        /* chdir to the directory. If that fails, try appending ".git" */
        if (chdir(dir) < 0) {
                if (chdir(mkpath("%s.git", dir)) < 0)
                        die("unable to cd to %s", dir);
        }

        /* If we have a ".git" directory, chdir to it */
        chdir(".git");
        ...

Note how it _both_ will append ".git" to the directory name (if it can't
find one without ".git" _and_ will try to chdir to a ".git" directory
_within_ the directory name.

So if you use the native pack ssh interfaces, you really can say

        git pull master.kernel.org:.../infiniband

because the tools (well, the "native pack" ones - not the http/rsync/scp
ones) will automatically DTRT.

                Linus
Now, I understand it.  Thanks Linus and Junio.

Robertoo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help