Re: [ANNOUNCE] Git v1.7.12-rc1

2012-08-03 Thread Jeff King
On Mon, Jul 30, 2012 at 03:06:13PM -0700, Junio C Hamano wrote:

  * git native protocol agents learned to show software version over
the wire, so that the server log can be examined to see the vintage
distribution of clients.

Hmm. Is this true?

I was just flipping through some old topics of mine, and I noticed that
the final patch of jk/version-string never got applied to the topic
branch. It was posted here:

  http://article.gmane.org/gmane.comp.version-control.git/199059

and you picked up the other patches in the series, but not that one. So
I think it was just a simple mistake.

I've been running with it locally for 2 months and haven't seen any
problem.  Unfortunately it's a bit too non-trivial to be appropriate for
1.7.12 at this point in the cycle, so I guess we will have to let it
cook in the next iteration.

Here's a repost for convenience.

-- 8 --
Subject: [PATCH] include agent identifier in capability string

Instead of having the client advertise a particular version
number in the git protocol, we have managed extensions and
backwards compatibility by having clients and servers
advertise capabilities that they support. This is far more
robust than having each side consult a table of
known versions, and provides sufficient information for the
protocol interaction to complete.

However, it does not allow servers to keep statistics on
which client versions are being used. This information is
not necessary to complete the network request (the
capabilities provide enough information for that), but it
may be helpful to conduct a general survey of client
versions in use.

We already send the client version in the user-agent header
for http requests; adding it here allows us to gather
similar statistics for non-http requests.
---
 builtin/fetch-pack.c   |  2 ++
 builtin/receive-pack.c |  6 --
 builtin/send-pack.c|  7 +--
 upload-pack.c  |  7 +--
 version.c  | 21 +
 version.h  |  1 +
 6 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c
index 149db88..fe56596 100644
--- a/builtin/fetch-pack.c
+++ b/builtin/fetch-pack.c
@@ -10,6 +10,7 @@
 #include remote.h
 #include run-command.h
 #include transport.h
+#include version.h
 
 static int transfer_unpack_limit = -1;
 static int fetch_unpack_limit = -1;
@@ -327,6 +328,7 @@ static int find_common(int fd[2], unsigned char 
*result_sha1,
if (args.no_progress)   strbuf_addstr(c,  
no-progress);
if (args.include_tag)   strbuf_addstr(c,  
include-tag);
if (prefer_ofs_delta)   strbuf_addstr(c,  ofs-delta);
+   strbuf_addf(c,  agent=%s, 
git_user_agent_sanitized());
packet_buf_write(req_buf, want %s%s\n, remote_hex, 
c.buf);
strbuf_release(c);
} else
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 0afb8b2..fbfa128 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -12,6 +12,7 @@
 #include string-list.h
 #include sha1-array.h
 #include connected.h
+#include version.h
 
 static const char receive_pack_usage[] = git receive-pack git-dir;
 
@@ -121,10 +122,11 @@ static void show_ref(const char *path, const unsigned 
char *sha1)
if (sent_capabilities)
packet_write(1, %s %s\n, sha1_to_hex(sha1), path);
else
-   packet_write(1, %s %s%c%s%s\n,
+   packet_write(1, %s %s%c%s%s agent=%s\n,
 sha1_to_hex(sha1), path, 0,
  report-status delete-refs side-band-64k quiet,
-prefer_ofs_delta ?  ofs-delta : );
+prefer_ofs_delta ?  ofs-delta : ,
+git_user_agent_sanitized());
sent_capabilities = 1;
 }
 
diff --git a/builtin/send-pack.c b/builtin/send-pack.c
index d5d7105..c4d4211 100644
--- a/builtin/send-pack.c
+++ b/builtin/send-pack.c
@@ -8,6 +8,7 @@
 #include send-pack.h
 #include quote.h
 #include transport.h
+#include version.h
 
 static const char send_pack_usage[] =
 git send-pack [--all | --mirror] [--dry-run] [--force] 
[--receive-pack=git-receive-pack] [--verbose] [--thin] [host:]directory 
[ref...]\n
@@ -306,11 +307,13 @@ int send_pack(struct send_pack_args *args,
int quiet = quiet_supported  (args-quiet || 
!args-progress);
 
if (!cmds_sent  (status_report || use_sideband || 
args-quiet)) {
-   packet_buf_write(req_buf, %s %s %s%c%s%s%s,
+   packet_buf_write(req_buf,
+%s %s %s%c%s%s%s agent=%s,
 old_hex, new_hex, ref-name, 0,
 status_report ?  
report-status : ,
 

Re: [ANNOUNCE] Git v1.7.12-rc1

2012-08-03 Thread Jeff King
On Fri, Aug 03, 2012 at 12:19:16PM -0400, Jeff King wrote:

 On Mon, Jul 30, 2012 at 03:06:13PM -0700, Junio C Hamano wrote:
 
   * git native protocol agents learned to show software version over
 the wire, so that the server log can be examined to see the vintage
 distribution of clients.
 
 Hmm. Is this true?
 
 I was just flipping through some old topics of mine, and I noticed that
 the final patch of jk/version-string never got applied to the topic
 branch. It was posted here:
 
   http://article.gmane.org/gmane.comp.version-control.git/199059
 
 and you picked up the other patches in the series, but not that one. So
 I think it was just a simple mistake.
 
 I've been running with it locally for 2 months and haven't seen any
 problem.  Unfortunately it's a bit too non-trivial to be appropriate for
 1.7.12 at this point in the cycle, so I guess we will have to let it
 cook in the next iteration.
 
 Here's a repost for convenience.

And here's an update to the release notes.

-- 8 --
Subject: [PATCH] RelNotes: drop version-string topic from 1.7.12

The final patch which actually turns this feature on was
never applied to the topic branch, so it did not make it
into this cycle.
---
 Documentation/RelNotes/1.7.12.txt | 4 
 1 file changed, 4 deletions(-)

diff --git a/Documentation/RelNotes/1.7.12.txt 
b/Documentation/RelNotes/1.7.12.txt
index 786a702..cffa0db 100644
--- a/Documentation/RelNotes/1.7.12.txt
+++ b/Documentation/RelNotes/1.7.12.txt
@@ -51,10 +51,6 @@ UI, Workflows  Features
read. The error message in this case was updated to give better
hints to the user.
 
- * git native protocol agents learned to show software version over
-   the wire, so that the server log can be examined to see the vintage
-   distribution of clients.
-
  * git help -w $cmd can show HTML version of documentation for
git-$cmd by setting help.htmlpath to somewhere other than the
default location where the build procedure installs them locally;
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [ANNOUNCE] Git v1.7.12-rc1

2012-08-03 Thread Jeff King
On Fri, Aug 03, 2012 at 12:14:57PM -0700, Junio C Hamano wrote:

  Here's a repost for convenience.
 
  And here's an update to the release notes.
 
 Thanks.  Both are signed-off (I expect regulars to lead newbies by
 example, so...).

[s/are/are not/, I assume you mean]

Oops. I recently refactored my print one patch so I can stuff it in an
email alias and it lost its add-signoff functionality.  Both should
be signed-off, obviously; can you forge for me this time, and I'll fix
my alias? I can also re-send if you want to make an example of me. :)

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [ANNOUNCE] Git v1.7.12-rc1

2012-08-03 Thread Junio C Hamano
Jeff King p...@peff.net writes:

 On Fri, Aug 03, 2012 at 12:14:57PM -0700, Junio C Hamano wrote:

  Here's a repost for convenience.
 
  And here's an update to the release notes.
 
 Thanks.  Both are signed-off (I expect regulars to lead newbies by
 example, so...).

 [s/are/are not/, I assume you mean]

Actually s/\.$/?/ but they amount to the same thing ;-).

 Oops. I recently refactored my print one patch so I can stuff it in an
 email alias and it lost its add-signoff functionality.

I suspected some automation-gone-bad; no need to resend but please
do make sure to update your procedure.  Thanks.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[ANNOUNCE] Git v1.7.12-rc1

2012-07-30 Thread Junio C Hamano
A release candidate Git v1.7.12-rc1 is now available for testing
at the usual places.

The release tarballs are found at:

http://code.google.com/p/git-core/downloads/list

and their SHA-1 checksums are:

34f04ef64fd60bec32388afe27cc4e447ca55229  git-1.7.12.rc1.tar.gz
88a97012fd1454190e8eb49114d807921a526125  git-htmldocs-1.7.12.rc1.tar.gz
bc77f11d8f9e19c9900e95d32b9495698d4eb86f  git-manpages-1.7.12.rc1.tar.gz

Also the following public repositories all have a copy of the v1.7.12-rc1
tag and the master branch that the tag points at:

  url = git://repo.or.cz/alt-git.git
  url = https://code.google.com/p/git-core/
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

Git v1.7.12 Release Notes (draft)
=

Updates since v1.7.11
-

UI, Workflows  Features

 * Git can be told to normalize pathnames it read from readdir(3) and
   all arguments it got from the command line into precomposed UTF-8
   (assuming that they come as decomposed UTF-8), in order to work
   around issues on Mac OS.

   I think there still are other places that need conversion
   (e.g. paths that are read from stdin for some commands), but this
   should be a good first step in the right direction.

 * Per-user $HOME/.gitconfig file can optionally be stored in
   $HOME/.config/git/config instead, which is in line with XDG.

 * The value of core.attributesfile and core.excludesfile default to
   $HOME/.config/git/attributes and $HOME/.config/git/ignore respectively
   when these files exist.

 * Logic to disambiguate abbreviated object names have been taught to
   take advantage of object types that are expected in the context,
   e.g. XX in the git describe output v1.2.3-gXX must be a
   commit object, not a blob nor a tree.  This will help us prolong
   the lifetime of abbreviated object names.

 * git apply learned to wiggle the base version and perform three-way
   merge when a patch does not exactly apply to the version you have.

 * Scripted Porcelain writers now have access to the credential API via
   the git credential plumbing command.

 * git help used to always default to man format even on platforms
   where man viewer is not widely available.

 * git clone --local $path started its life as an experiment to
   optionally use link/copy when cloning a repository on the disk, but
   we didn't deprecate it after we made the option a no-op to always
   use the optimization.  The command learned --no-local option to
   turn this off, as a more explicit alternative over use of file://
   URL.

 * git fetch and friends used to say remote side hung up
   unexpectedly when they failed to get response they expect from the
   other side, but one common reason why they don't get expected
   response is that the remote repository does not exist or cannot be
   read. The error message in this case was updated to give better
   hints to the user.

 * git native protocol agents learned to show software version over
   the wire, so that the server log can be examined to see the vintage
   distribution of clients.

 * git help -w $cmd can show HTML version of documentation for
   git-$cmd by setting help.htmlpath to somewhere other than the
   default location where the build procedure installs them locally;
   the variable can even point at a http:// URL.

 * git rebase [-i] --root $tip can now be used to rewrite all the
   history leading to $tip down to the root commit.

 * git rebase -i learned -x cmd to insert exec cmd after
   each commit in the resulting history.

 * git status gives finer classification to various states of paths
   in conflicted state and offer advice messages in its output.

 * git submodule learned to deal with nested submodule structure
   where a module is contained within a module whose origin is
   specified as a relative URL to its superproject's origin.

 * A rather heavy-ish git completion script has been split to create
   a separate git prompting script, to help lazy-autoloading of the
   completion part while making prompting part always available.

 * gitweb pays attention to various forms of credits that are
   similar to Signed-off-by: lines in the commit objects and
   highlights them accordingly.


Foreign Interface

 * mediawiki remote helper (in contrib/) learned to handle file
   attachments.

 * git p4 now uses Jobs: and p4 move when appropriate.

 * vcs-svn has been updated to clean-up compilation, lift 32-bit
   limitations, etc.


Performance, Internal Implementation, etc. (please report possible regressions)

 * Some tests showed false failures caused by a bug in ecryptofs.

 * We no longer use AsciiDoc7 syntax in our documentation and favor a
   more modern style.

 * git am --rebasing codepath was taught to grab authorship, log
   message and the patch text directly out of existing commits.  This
   will help rebasing commits