<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.version-control.git">
    <title>gmane.comp.version-control.git</title>
    <link>http://blog.gmane.org/gmane.comp.version-control.git</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198564"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198563"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198553"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198550"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198545"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198535"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198534"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198533"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198530"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198526"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198525"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198519"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198511"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198497"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198482"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198481"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198480"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198478"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198475"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.version-control.git/198467"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198564">
    <title>[PATCH] Implement --messages-prog parameter in git-svn</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198564</link>
    <description>&lt;pre&gt;Some SVN repositories have strange policies for commit messages requiring an
empty line at the top of the commit message.  When you clone these
repositories with Git to mirror them on GitHub then no commit message
summaries are displayed at all at GitHub because they use the first line for
it (Which is empty).  You always have to open the commit message details
instead which is pretty annoying.  With the --messages-prog parameter you
can specify a program which can modify the SVN commit message before
committing it into the Git repo.  This works like the --authors-prog
parameter with the only difference that the commit message is piped into the
specified program instead of being passed to it as a command-line argument.

The same could be achieved by a "trim" feature but specifying a program
which can modify any aspect of a commit message is much more flexible.

Signed-off-by: Klaus Reimer &amp;lt;k&amp;lt; at &amp;gt;ailis.de&amp;gt;
---
 Documentation/git-svn.txt        |  5 +++++
 git-svn.perl                     | 26 +++++++++++++++++++++++++-
 t/t9147-git-svn-messages-prog.sh | 40 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 70 insertions(+), 1 deletion(-)
 create mode 100755 t/t9147-git-svn-messages-prog.sh

diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index cfe8d2b..7289246 100644
--- a/Documentation/git-svn.txt
+++ b/Documentation/git-svn.txt
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -546,6 +546,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; config key: svn.authorsfile
 expected to return a single line of the form "Name &amp;lt;email&amp;gt;",
 which will be treated as if included in the authors file.
 
+--messages-prog=&amp;lt;filename&amp;gt;::
+If this option is specified, each SVN commit message is piped
+through the given program. The output of this program is then
+used as the new commit message instead.
+
 -q::
 --quiet::
 Make 'git svn' less verbose. Specify a second time to make it
diff --git a/git-svn.perl b/git-svn.perl
index c84842f..514c888 100755
--- a/git-svn.perl
+++ b/git-svn.perl
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6,7 +6,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; use warnings;
 use strict;
 use vars qw/$AUTHOR $VERSION
 $sha1 $sha1_short $_revision $_repository
-$_q $_authors $_authors_prog %users/;
+$_q $_authors $_authors_prog $_messages_prog %users/;
 $AUTHOR = 'Eric Wong &amp;lt;normalperson&amp;lt; at &amp;gt;yhbt.net&amp;gt;';
 $VERSION = '&amp;lt; at &amp;gt;&amp;lt; at &amp;gt;GIT_VERSION&amp;lt; at &amp;gt;&amp;lt; at &amp;gt;';
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -120,6 +120,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; my %remote_opts = ( 'username=s' =&amp;gt; \$Git::SVN::Prompt::_username,
 my %fc_opts = ( 'follow-parent|follow!' =&amp;gt; \$Git::SVN::_follow_parent,
 'authors-file|A=s' =&amp;gt; \$_authors,
 'authors-prog=s' =&amp;gt; \$_authors_prog,
+'messages-prog=s' =&amp;gt; \$_messages_prog,
 'repack:i' =&amp;gt; \$Git::SVN::_repack,
 'noMetadata' =&amp;gt; \$Git::SVN::_no_metadata,
 'useSvmProps' =&amp;gt; \$Git::SVN::_use_svm_props,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -359,6 +360,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; load_authors() if $_authors;
 if (defined $_authors_prog) {
 $_authors_prog = "'" . File::Spec-&amp;gt;rel2abs($_authors_prog) . "'";
 }
+if (defined $_messages_prog) {
+$_messages_prog = "'" . File::Spec-&amp;gt;rel2abs($_messages_prog) . "'";
+}
 
 unless ($cmd =~ /^(?:clone|init|multi-init|commit-diff)$/) {
 Git::SVN::Migration::migration_check();
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2051,6 +2055,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; use vars qw/$default_repo_id $default_ref_id $_no_metadata $_follow_parent
 use Carp qw/croak/;
 use File::Path qw/mkpath/;
 use File::Copy qw/copy/;
+use IPC::Open2;
 use IPC::Open3;
 use Time::Local;
 use Memoize;  # core since 5.8.0, Jul 2002
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3409,6 +3414,22 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sub other_gs {
 $gs
 }
 
+sub call_messages_prog {
+my ($orig_message) = &amp;lt; at &amp;gt;_;
+my ($pid, $in, $out);
+
+$pid = open2($in, $out, $::_messages_prog)
+or die "$::_messages_prog failed with exit code $?\n";
+print $out $orig_message;
+close($out);
+my ($message) = "";
+while (&amp;lt;$in&amp;gt;) {
+$message .= $_;
+}
+close($in);
+return $message;    
+}
+
 sub call_authors_prog {
 my ($orig_author) = &amp;lt; at &amp;gt;_;
 $orig_author = command_oneline('rev-parse', '--sq-quote', $orig_author);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3809,6 +3830,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sub make_log_entry {
 
 $log_entry{date} = parse_svn_date($log_entry{date});
 $log_entry{log} .= "\n";
+if (defined $::_messages_prog) {
+$log_entry{log} = call_messages_prog($log_entry{log});
+}
 my $author = $log_entry{author} = check_author($log_entry{author});
 my ($name, $email) = defined $::users{$author} ? &amp;lt; at &amp;gt;{$::users{$author}}
        : ($author, undef);
diff --git a/t/t9147-git-svn-messages-prog.sh b/t/t9147-git-svn-messages-prog.sh
new file mode 100755
index 0000000..ebb42b0
--- /dev/null
+++ b/t/t9147-git-svn-messages-prog.sh
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,40 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+#!/bin/sh
+
+test_description='git svn messages prog tests'
+
+. ./lib-git-svn.sh
+
+cat &amp;gt; svn-messages-prog &amp;lt;&amp;lt;'EOF'
+#!/bin/sh
+sed s/foo/bar/g
+EOF
+chmod +x svn-messages-prog
+
+test_expect_success 'setup svnrepo' '
+svn mkdir -m "Unchanged message" "$svnrepo"/a
+svn mkdir -m "Changed message: foo" "$svnrepo"/b
+'
+
+test_expect_success 'import messages with prog' '
+git svn clone --messages-prog=./svn-messages-prog \
+    "$svnrepo" x
+'
+
+test_expect_success 'imported 2 revisions successfully' '
+(
+cd x
+test "`git rev-list refs/remotes/git-svn | wc -l`" -eq 2
+)
+'
+
+test_expect_success 'messages-prog ran correctly' '
+(
+cd x
+git rev-list -1 --pretty=raw refs/remotes/git-svn~1 | \
+  grep "^    Unchanged message" &amp;amp;&amp;amp;
+git rev-list -1 --pretty=raw refs/remotes/git-svn~0 | \
+  grep "^    Changed message: bar"
+)
+'
+
+test_done
&lt;/pre&gt;</description>
    <dc:creator>Klaus Reimer</dc:creator>
    <dc:date>2012-05-26T15:56:42</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198563">
    <title>git-http-backend with hooks</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198563</link>
    <description>&lt;pre&gt;dear list,

we wrote a script that is basically a proxy before git-http-backend. All 
git requests go through this and if some criteria is true then they're 
passed to git-http-backend. We also have hooks in our repositories. The 
problem is that in some cases we don't want the hooks to run. Is it 
possible to somehow tell git-http-backend that the hooks shouldn't be run?

thanks in advance,
ákos tajti
&lt;/pre&gt;</description>
    <dc:creator>Tajti Ákos</dc:creator>
    <dc:date>2012-05-26T14:11:55</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198553">
    <title>[PATCH WIP 0/3] top-level gitignore considered less harmful</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198553</link>
    <description>&lt;pre&gt;While my mind is still fresh on exclude stuff, let's do something
to improve the big top-level gitignore situation [1].

The last patch is the real meat, where it assumes caller calls it on a
series of pathnames of the same dirname. It'll cache strcmp result of
the dirname part so we only pay the cost once per pattern for all
entries in the same directory.

The result is not so impressive (i'm on -O0 though). Old webkit.git,
before:

real    0m6.418s
user    0m5.561s
sys     0m0.827s

after:

real    0m5.262s
user    0m4.407s
sys     0m0.850s

We could approach the problem a different way instead: push back as
much dirname as possible back to "(struct exclude*)-&amp;gt;base", but I'm
afraid that may mess thing up with all the pushing/popping in
prep_exclude.

Also about that, we should not need to call prep_exclude() on every
pathname, at least when the caller is {fill,read}_directory().

There's another optimaztion we could do to pay even less. If users
sort the exclude patterns, if we check dirname of one pattern and the
next pattern shares the same dirname, skip comparing what we have
compared again.

The same can be done on "base" (even easier because we can just
compare base pointer to know if they are the same) but "base" is for
non-top-level gitignore.

[1] http://thread.gmane.org/gmane.comp.version-control.git/194294

Nguyễn Thái Ngọc Duy (3):
  Unindent excluded_from_list()
  exclude: do strcmp as much as possible before fnmatch
  exclude: reduce computation cost on checking dirname in patterns

 dir.c | 166 ++++++++++++++++++++++++++++++++++++++++++++++--------------------
 dir.h |   5 +-
 2 files changed, 120 insertions(+), 51 deletions(-)

&lt;/pre&gt;</description>
    <dc:creator>Nguyễn Thái Ngọc Duy</dc:creator>
    <dc:date>2012-05-26T12:31:11</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198550">
    <title>[PATCH] pack-objects: use streaming interface for reading large loose blobs</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198550</link>
    <description>&lt;pre&gt;git usually streams large blobs directly to packs. But there are cases
where git can create large loose blobs (unpack-objects or hash-object
over pipe). Or they can come from other git implementations.
core.bigfilethreshold can also be lowered down and introduce a new
wave of large loose blobs.

Use streaming interface to read/compress/write these blobs in one
go. Fall back to normal way if somehow streaming interface cannot be
used.

Signed-off-by: Nguyễn Thái Ngọc Duy &amp;lt;pclouds&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 On top of ng/pack-objects-cleanup. Changes since the last version is
 we do not rely on close_istream(NULL); any more.

 builtin/pack-objects.c | 73 +++++++++++++++++++++++++++++++++++++++++++++-----
 t/t1050-large.sh       | 12 +++++++++
 2 files changed, 79 insertions(+), 6 deletions(-)

diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index ccfcbad..f334820 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -16,6 +16,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "list-objects.h"
 #include "progress.h"
 #include "refs.h"
+#include "streaming.h"
 #include "thread-utils.h"
 
 static const char *pack_usage[] = {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -150,6 +151,46 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static unsigned long do_compress(void **pptr, unsigned long size)
 return stream.total_out;
 }
 
+static unsigned long write_large_blob_data(struct git_istream *st, struct sha1file *f,
+   const unsigned char *sha1)
+{
+git_zstream stream;
+unsigned char ibuf[1024 * 16];
+unsigned char obuf[1024 * 16];
+unsigned long olen = 0;
+
+memset(&amp;amp;stream, 0, sizeof(stream));
+git_deflate_init(&amp;amp;stream, pack_compression_level);
+
+for (;;) {
+ssize_t readlen;
+int zret = Z_OK;
+readlen = read_istream(st, ibuf, sizeof(ibuf));
+if (readlen == -1)
+die(_("unable to read %s"), sha1_to_hex(sha1));
+
+stream.next_in = ibuf;
+stream.avail_in = readlen;
+while ((stream.avail_in || readlen == 0) &amp;amp;&amp;amp;
+       (zret == Z_OK || zret == Z_BUF_ERROR)) {
+stream.next_out = obuf;
+stream.avail_out = sizeof(obuf);
+zret = git_deflate(&amp;amp;stream, readlen ? 0 : Z_FINISH);
+sha1write(f, obuf, stream.next_out - obuf);
+olen += stream.next_out - obuf;
+}
+if (stream.avail_in)
+die(_("deflate error (%d)"), zret);
+if (readlen == 0) {
+if (zret != Z_STREAM_END)
+die(_("deflate error (%d)"), zret);
+break;
+}
+}
+git_deflate_end(&amp;amp;stream);
+return olen;
+}
+
 /*
  * we are going to reuse the existing object data as is.  make
  * sure it is not corrupt.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -208,11 +249,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static unsigned long write_no_reuse_object(struct sha1file *f, struct object_ent
 unsigned hdrlen;
 enum object_type type;
 void *buf;
+struct git_istream *st = NULL;
 
 if (!usable_delta) {
-buf = read_sha1_file(entry-&amp;gt;idx.sha1, &amp;amp;type, &amp;amp;size);
-if (!buf)
-die("unable to read %s", sha1_to_hex(entry-&amp;gt;idx.sha1));
+if (entry-&amp;gt;type == OBJ_BLOB &amp;amp;&amp;amp;
+    entry-&amp;gt;size &amp;gt; big_file_threshold &amp;amp;&amp;amp;
+    (st = open_istream(entry-&amp;gt;idx.sha1, &amp;amp;type, &amp;amp;size, NULL)) != NULL)
+buf = NULL;
+else {
+buf = read_sha1_file(entry-&amp;gt;idx.sha1, &amp;amp;type, &amp;amp;size);
+if (!buf)
+die(_("unable to read %s"), sha1_to_hex(entry-&amp;gt;idx.sha1));
+}
 /*
  * make sure no cached delta data remains from a
  * previous attempt before a pack split occurred.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -233,7 +281,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static unsigned long write_no_reuse_object(struct sha1file *f, struct object_ent
 OBJ_OFS_DELTA : OBJ_REF_DELTA;
 }
 
-if (entry-&amp;gt;z_delta_size)
+if (st)/* large blob case, just assume we don't compress well */
+datalen = size;
+else if (entry-&amp;gt;z_delta_size)
 datalen = entry-&amp;gt;z_delta_size;
 else
 datalen = do_compress(&amp;amp;buf, size);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -256,6 +306,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static unsigned long write_no_reuse_object(struct sha1file *f, struct object_ent
 while (ofs &amp;gt;&amp;gt;= 7)
 dheader[--pos] = 128 | (--ofs &amp;amp; 127);
 if (limit &amp;amp;&amp;amp; hdrlen + sizeof(dheader) - pos + datalen + 20 &amp;gt;= limit) {
+if (st)
+close_istream(st);
 free(buf);
 return 0;
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -268,6 +320,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static unsigned long write_no_reuse_object(struct sha1file *f, struct object_ent
  * an additional 20 bytes for the base sha1.
  */
 if (limit &amp;amp;&amp;amp; hdrlen + 20 + datalen + 20 &amp;gt;= limit) {
+if (st)
+close_istream(st);
 free(buf);
 return 0;
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -276,13 +330,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static unsigned long write_no_reuse_object(struct sha1file *f, struct object_ent
 hdrlen += 20;
 } else {
 if (limit &amp;amp;&amp;amp; hdrlen + datalen + 20 &amp;gt;= limit) {
+if (st)
+close_istream(st);
 free(buf);
 return 0;
 }
 sha1write(f, header, hdrlen);
 }
-sha1write(f, buf, datalen);
-free(buf);
+if (st) {
+datalen = write_large_blob_data(st, f, entry-&amp;gt;idx.sha1);
+close_istream(st);
+} else {
+sha1write(f, buf, datalen);
+free(buf);
+}
 
 return hdrlen + datalen;
 }
diff --git a/t/t1050-large.sh b/t/t1050-large.sh
index 55ed955..313889b 100755
--- a/t/t1050-large.sh
+++ b/t/t1050-large.sh
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -134,6 +134,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test_expect_success 'repack' '
 git repack -ad
 '
 
+test_expect_success 'pack-objects with large loose object' '
+SHA1=`git hash-object huge` &amp;amp;&amp;amp;
+test_create_repo loose &amp;amp;&amp;amp;
+echo $SHA1 | git pack-objects --stdout |
+GIT_ALLOC_LIMIT=0 GIT_DIR=loose/.git git unpack-objects &amp;amp;&amp;amp;
+echo $SHA1 | GIT_DIR=loose/.git git pack-objects pack &amp;amp;&amp;amp;
+test_create_repo packed &amp;amp;&amp;amp;
+mv pack-* packed/.git/objects/pack &amp;amp;&amp;amp;
+GIT_DIR=packed/.git git cat-file blob $SHA1 &amp;gt;actual &amp;amp;&amp;amp;
+cmp huge actual
+'
+
 test_expect_success 'tar achiving' '
 git archive --format=tar HEAD &amp;gt;/dev/null
 '
&lt;/pre&gt;</description>
    <dc:creator>Nguyễn Thái Ngọc Duy</dc:creator>
    <dc:date>2012-05-26T10:28:01</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198545">
    <title>[PATCHv2 0/3] New test cases for branch detection</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198545</link>
    <description>&lt;pre&gt;Updates for previous patch according to feedback from Pete Wyckoff (and
some help from Junio). I also tried to find more improvement
opportunities and included an extra small patch with two small fixes.

Please review and provide feedback.

Kind regards.

Vitor Antunes (3):
  git-p4: Test changelists touching two branches
  git-p4: Verify detection of "empty" branch creation
  git-p4: Clean up branch test cases

 t/t9801-git-p4-branch.sh |  110 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 107 insertions(+), 3 deletions(-)

&lt;/pre&gt;</description>
    <dc:creator>Vitor Antunes</dc:creator>
    <dc:date>2012-05-26T09:56:03</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198535">
    <title>[PATCH 0/3] clone --local fixes</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198535</link>
    <description>&lt;pre&gt;Emeric mentioned that he was confused by the behavior of

  git clone --local file:///path/to/repo

in that the --local is silently ignored. Looking over the documentation,
it is quite unclear whether it is supposed to do anything or not. I
don't think it's an especially pressing use case, so one solution could
be to simply clarify the current behavior in the documentation.

However, I figured this should just be a two-line fix to give it more
sensible behavior, so why not just make it to do the sensible thing? And
while my initial version was two lines, it ended up growing to handle
all of the corner cases properly.  So I'm not super-excited about patch
2, but given that it is written, I think it's a reasonable thing to do
(and it is not _too_ complex).

And then while I was on the subject, I did patch 3, which is something
that has bugged me for a long time.

  [1/3]: t5701: modernize style
  [2/3]: clone: make --local handle URLs
  [3/3]: clone: allow --no-local to turn off local optimizations

-Peff
&lt;/pre&gt;</description>
    <dc:creator>Jeff King</dc:creator>
    <dc:date>2012-05-26T03:42:26</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198534">
    <title>[PATCH] Pass $verbosity from git pull to git rebase</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198534</link>
    <description>&lt;pre&gt;Currently "git pull -q" only takes effect in merge mode, as commit
7f87aff2 (which introduced "git pull -q") only passes it to
git-merge. This is not nice as a "git pull --rebase -q" will result in
the "Current branch master is up to date.", instead of being quiet.

The patch adds a simple unit-test that checks that the initial pull, a
pull that forwards the head, and a no-op pull are all silent.

Signed-off-by: Iustin Pop &amp;lt;iusty&amp;lt; at &amp;gt;k1024.org&amp;gt;
---
 Please keep me CC-ed, not subscribed to the list.

 git-pull.sh             |    2 +-
 t/t5521-pull-options.sh |   15 ++++++++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/git-pull.sh b/git-pull.sh
index 2a10047..2920c69 100755
--- a/git-pull.sh
+++ b/git-pull.sh
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -278,7 +278,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 merge_name=$(git fmt-merge-msg $log_arg &amp;lt;"$GIT_DIR/FETCH_HEAD") || exit
 case "$rebase" in
 true)
-eval="git-rebase $diffstat $strategy_args $merge_args"
+eval="git-rebase $diffstat $strategy_args $merge_args $verbosity"
 eval="$eval --onto $merge_head ${oldremoteref:-$merge_head}"
 ;;
 *)
diff --git a/t/t5521-pull-options.sh b/t/t5521-pull-options.sh
index 1b06691..9735fb4 100755
--- a/t/t5521-pull-options.sh
+++ b/t/t5521-pull-options.sh
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -8,7 +8,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test_expect_success 'setup' '
 mkdir parent &amp;amp;&amp;amp;
 (cd parent &amp;amp;&amp;amp; git init &amp;amp;&amp;amp;
  echo one &amp;gt;file &amp;amp;&amp;amp; git add file &amp;amp;&amp;amp;
- git commit -m one)
+ git commit -m one &amp;amp;&amp;amp;
+ echo two &amp;gt;file &amp;amp;&amp;amp; git add file &amp;amp;&amp;amp;
+ git commit -m two)
 '
 
 test_expect_success 'git pull -q' '
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -19,6 +21,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test_expect_success 'git pull -q' '
 test ! -s out)
 '
 
+test_expect_success 'git pull -q --rebase' '
+mkdir clonedqr &amp;amp;&amp;amp;
+(cd clonedqr &amp;amp;&amp;amp; git init &amp;amp;&amp;amp;
+git pull -q --rebase "../parent" &amp;gt;out 2&amp;gt;err &amp;amp;&amp;amp;
+git reset --hard -q HEAD^ &amp;gt;&amp;gt;out 2&amp;gt;&amp;gt;err &amp;amp;&amp;amp;
+git pull -q --rebase "../parent" &amp;gt;&amp;gt;out 2&amp;gt;&amp;gt;err &amp;amp;&amp;amp;
+git pull -q --rebase "../parent" &amp;gt;&amp;gt;out 2&amp;gt;&amp;gt;err &amp;amp;&amp;amp;
+test ! -s err &amp;amp;&amp;amp;
+test ! -s out)
+'
+
 test_expect_success 'git pull' '
 mkdir cloned &amp;amp;&amp;amp;
 (cd cloned &amp;amp;&amp;amp; git init &amp;amp;&amp;amp;
&lt;/pre&gt;</description>
    <dc:creator>Iustin Pop</dc:creator>
    <dc:date>2012-05-26T01:00:09</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198533">
    <title>[PATCH] Pass $verbosity from git pull to git rebase</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198533</link>
    <description>&lt;pre&gt;Currently "git pull -q" only takes effect in merge mode, as commit
7f87aff2 (which introduced "git pull -q") only passes it to
git-merge. This is not nice as a "git pull --rebase -q" will result in
the "Current branch master is up to date.", instead of being quiet.

The patch adds a simple unit-test that checks that the initial pull, a
pull that forwards the head, and a no-op pull are all silent.

Signed-off-by: Iustin Pop &amp;lt;iusty&amp;lt; at &amp;gt;k1024.org&amp;gt;
---
 Please keep me CC-ed, not subscribed to the list.

 git-pull.sh             |    2 +-
 t/t5521-pull-options.sh |   15 ++++++++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/git-pull.sh b/git-pull.sh
index 2a10047..2920c69 100755
--- a/git-pull.sh
+++ b/git-pull.sh
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -278,7 +278,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 merge_name=$(git fmt-merge-msg $log_arg &amp;lt;"$GIT_DIR/FETCH_HEAD") || exit
 case "$rebase" in
 true)
-eval="git-rebase $diffstat $strategy_args $merge_args"
+eval="git-rebase $diffstat $strategy_args $merge_args $verbosity"
 eval="$eval --onto $merge_head ${oldremoteref:-$merge_head}"
 ;;
 *)
diff --git a/t/t5521-pull-options.sh b/t/t5521-pull-options.sh
index 1b06691..9735fb4 100755
--- a/t/t5521-pull-options.sh
+++ b/t/t5521-pull-options.sh
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -8,7 +8,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test_expect_success 'setup' '
 mkdir parent &amp;amp;&amp;amp;
 (cd parent &amp;amp;&amp;amp; git init &amp;amp;&amp;amp;
  echo one &amp;gt;file &amp;amp;&amp;amp; git add file &amp;amp;&amp;amp;
- git commit -m one)
+ git commit -m one &amp;amp;&amp;amp;
+ echo two &amp;gt;file &amp;amp;&amp;amp; git add file &amp;amp;&amp;amp;
+ git commit -m two)
 '
 
 test_expect_success 'git pull -q' '
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -19,6 +21,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test_expect_success 'git pull -q' '
 test ! -s out)
 '
 
+test_expect_success 'git pull -q --rebase' '
+mkdir clonedqr &amp;amp;&amp;amp;
+(cd clonedqr &amp;amp;&amp;amp; git init &amp;amp;&amp;amp;
+git pull -q --rebase "../parent" &amp;gt;out 2&amp;gt;err &amp;amp;&amp;amp;
+git reset --hard -q HEAD^ &amp;gt;&amp;gt;out 2&amp;gt;&amp;gt;err &amp;amp;&amp;amp;
+git pull -q --rebase "../parent" &amp;gt;&amp;gt;out 2&amp;gt;&amp;gt;err &amp;amp;&amp;amp;
+git pull -q --rebase "../parent" &amp;gt;&amp;gt;out 2&amp;gt;&amp;gt;err &amp;amp;&amp;amp;
+test ! -s err &amp;amp;&amp;amp;
+test ! -s out)
+'
+
 test_expect_success 'git pull' '
 mkdir cloned &amp;amp;&amp;amp;
 (cd cloned &amp;amp;&amp;amp; git init &amp;amp;&amp;amp;
&lt;/pre&gt;</description>
    <dc:creator>Iustin Pop</dc:creator>
    <dc:date>2012-05-26T01:00:39</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198530">
    <title>investment proposal</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198530</link>
    <description>&lt;pre&gt;Can you stand as an Investor to received Tenure Investment Proceeds? If 
interested please reply Email:mrs.edilyn789&amp;lt; at &amp;gt;zhot.net
Mrs Edilyn M Padilla.
&lt;/pre&gt;</description>
    <dc:creator>agfund9&lt; at &gt;libero.it</dc:creator>
    <dc:date>2012-05-25T21:44:24</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198526">
    <title>LOAN OFFER!!</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198526</link>
    <description>&lt;pre&gt;We offer loans at 2% interest rate (Between 1,000 USD to 100,000:00 USD). Get back if interested: 
We will furnish you with further instructions.

Regards,
DR. FLORA CLARK
CHIEF EXECUTIVE OFFICER     
Contact email:aoanloan94&amp;lt; at &amp;gt;mail.com
&lt;/pre&gt;</description>
    <dc:creator>DANNY XIONG</dc:creator>
    <dc:date>2012-05-25T21:14:15</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198525">
    <title>[ANNOUNCE] Git 1.7.10.3</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198525</link>
    <description>&lt;pre&gt;The latest maintenance release Git 1.7.10.3 is now available 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:

172c6ad5a55276213c5e40b83a4c270f6f931b3e  git-1.7.10.3.tar.gz
c75f9dd4e5157b0c0cb53d67a599b1b038b9c708  git-htmldocs-1.7.10.3.tar.gz
4ae4f9f0f0dc42ad5cb2de309049c953841bc413  git-manpages-1.7.10.3.tar.gz

Also the following public repositories all have a copy of the v1.7.10.3
tag and the maint 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.10.3 Release Notes
===========================

Fixes since v1.7.10.2
---------------------

 * The message file for German translation has been updated a bit.

 * Running "git checkout" on an unborn branch used to corrupt HEAD.

 * When checking out another commit from an already detached state, we
   used to report all commits that are not reachable from any of the
   refs as lossage, but some of them might be reachable from the new
   HEAD, and there is no need to warn about them.

 * Some time ago, "git clone" lost the progress output for its
   "checkout" phase; when run without any "--quiet" option, it should
   give progress to the lengthy operation.

 * The directory path used in "git diff --no-index", when it recurses
   down, was broken with a recent update after v1.7.10.1 release.

 * "log -z --pretty=tformat:..." did not terminate each record with
   NUL.  The fix is not entirely correct when the output also asks for
   --patch and/or --stat, though.

 * The DWIM behaviour for "log --pretty=format:%gd -g" was somewhat
   broken and gave undue precedence to configured log.date, causing
   "git stash list" to show "stash&amp;lt; at &amp;gt;{time stamp string}".

 * "git status --porcelain" ignored "--branch" option by mistake.  The
   output for "git status --branch -z" was also incorrect and did not
   terminate the record for the current branch name with NUL as asked.

 * When a submodule repository uses alternate object store mechanism,
   some commands that were started from the superproject did not
   notice it and failed with "No such object" errors.  The subcommands
   of "git submodule" command that recursed into the submodule in a
   separate process were OK; only the ones that cheated and peeked
   directly into the submodule's repository from the primary process
   were affected.

Also contains minor fixes and documentation updates.


----------------------------------------------------------------

Changes since v1.7.10.2 are as follows:

Bobby Powers (2):
      diff --no-index: reset temporary buffer lengths on directory iteration
      diff --no-index: don't leak buffers in queue_diff

Carlos Martín Nieto (1):
      pack-protocol: fix first-want separator in the examples

Erik Faye-Lund (2):
      clone: fix progress-regression
      checkout: do not corrupt HEAD on empty repo

Heiko Voigt (2):
      link to gitmodules page at the beginning of git-submodule documentation
      teach add_submodule_odb() to look for alternates

Jan Krüger (1):
      log-tree: use custom line terminator in line termination mode

Jeff King (10):
      docs: stop using asciidoc no-inline-literal
      t1411: add more selector index/date tests
      log: respect date_mode_explicit with --format:%gd
      reflog-walk: clean up "flag" field of commit_reflog struct
      reflog-walk: always make HEAD&amp;lt; at &amp;gt;{0} show indexed selectors
      commit: refactor option parsing
      status: refactor null_termination option
      status: fix null termination with "-b"
      status: respect "-b" for porcelain format
      osxkeychain: pull make config from top-level directory

Jens Lehmann (1):
      Consistently use "superproject" instead of "supermodule"

Jiang Xin (4):
      l10n: Update git.pot (1 new messages)
      l10n: zh_CN.po: translate 1 new message
      l10n: Update git.pot (3 new, 2 removed messages)
      l10n: zh_CN.po: translate 3 new messages

Johannes Sixt (3):
      t2020-checkout-detach: check for the number of orphaned commits
      checkout (detached): truncate list of orphaned commits at the new HEAD
      t3404: begin "exchange commits with -p" test with correct preconditions

Jonathan Nieder (1):
      config doc: remove confusion about relative GIT_DIR from FILES section

Junio C Hamano (5):
      log-tree: the previous one is still not quite right
      reflog-walk: tell explicit --date=default from not having --date at all
      Start preparing for 1.7.10.3
      Update draft release notes to 1.7.10.3
      Git 1.7.10.3

Linus Torvalds (1):
      fmt-merge-message: add empty line between tag and signature verification

Ralf Thielow (7):
      l10n: add new members to German translation team
      l10n: de.po: translate "track" as "beobachten"
      l10n: de.po: translate "remote" as "extern"
      l10n: de.po: collection of improvements
      l10n: de.po: unify translation of "ahead" and "behind"
      l10n: de.po: translate one new message
      l10n: de.po: translate 3 new messages

Thomas Rast (4):
      l10n: de.po: translate "bare" as "bloß"
      l10n: de.po: hopefully uncontroversial fixes
      l10n: de.po: translate "bad" as "ungültig" ("invalid")
      l10n: de.po: collection of suggestions

&lt;/pre&gt;</description>
    <dc:creator>Junio C Hamano</dc:creator>
    <dc:date>2012-05-25T20:54:39</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198519">
    <title>[PATCH 1/2] Add possibility to store configuration in ~/.config/git/config file</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198519</link>
    <description>&lt;pre&gt;git will store its configuration in ~/.config/git/config file if this file
exists and ~/.gitconfig file doesn't, otherwise git store its configuration
in ~/.gitconfig as usual
---
 builtin/config.c |   31 ++++++++++++++++++++++++++++---
 config.c         |   15 ++++++++++++++-
 2 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/builtin/config.c b/builtin/config.c
index 33c8820..dc890d5 100644
--- a/builtin/config.c
+++ b/builtin/config.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -171,8 +171,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int get_value(const char *key_, const char *regex_)
 if (!local) {
 const char *home = getenv("HOME");
 local = repo_config = git_pathdup("config");
-if (home)
-global = xstrdup(mkpath("%s/.gitconfig", home));
+if (home) {
+char gitconfig_path[PATH_MAX], config_path[PATH_MAX];
+FILE *gitconfig_file, *config_file;
+
+sprintf(gitconfig_path, "%s/.gitconfig", home);
+sprintf(config_path, "%s/.config/git/config", home);
+gitconfig_file = fopen(gitconfig_path, "r");
+config_file = fopen(config_path, "r");
+
+if (gitconfig_file==NULL &amp;amp;&amp;amp; config_file!=NULL)
+global = xstrdup(mkpath("%s/.config/git/config", home));
+else
+global = xstrdup(mkpath("%s/.gitconfig", home));
+}
 if (git_config_system())
 system_wide = git_etc_gitconfig();
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -381,7 +393,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int cmd_config(int argc, const char **argv, const char *prefix)
 if (use_global_config) {
 char *home = getenv("HOME");
 if (home) {
-char *user_config = xstrdup(mkpath("%s/.gitconfig", home));
+char gitconfig_path[PATH_MAX], config_path[PATH_MAX];
+FILE *gitconfig_file, *config_file;
+char *user_config;
+
+sprintf(gitconfig_path, "%s/.gitconfig", home);
+sprintf(config_path, "%s/.config/git/config", home);
+gitconfig_file = fopen(gitconfig_path, "r");
+config_file = fopen(config_path, "r");
+
+if (gitconfig_file==NULL &amp;amp;&amp;amp; config_file!=NULL)
+user_config = xstrdup(mkpath("%s/.config/git/config", home));
+else
+user_config = xstrdup(mkpath("%s/.gitconfig", home));
+
 given_config_file = user_config;
 } else {
 die("$HOME not set");
diff --git a/config.c b/config.c
index eeee986..998dbbc 100644
--- a/config.c
+++ b/config.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -962,7 +962,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int git_config_early(config_fn_t fn, void *data, const char *repo_config)
 home = getenv("HOME");
 if (home) {
 char buf[PATH_MAX];
-char *user_config = mksnpath(buf, sizeof(buf), "%s/.gitconfig", home);
+char gitconfig_path[PATH_MAX], config_path[PATH_MAX];
+FILE *gitconfig_file, *config_file;
+char *user_config;
+
+sprintf(gitconfig_path, "%s/.gitconfig", home);
+sprintf(config_path, "%s/.config/git/config", home);
+gitconfig_file = fopen(gitconfig_path, "r");
+config_file = fopen(config_path, "r");
+
+if (gitconfig_file==NULL &amp;amp;&amp;amp; config_file!=NULL)
+user_config = mksnpath(buf, sizeof(buf), "%s/.config/git/config", home);
+else
+user_config = mksnpath(buf, sizeof(buf), "%s/.gitconfig", home);
+
 if (!access(user_config, R_OK)) {
 ret += git_config_from_file(fn, user_config, data);
 found += 1;
&lt;/pre&gt;</description>
    <dc:creator>NGUYEN Huynh Khoi Nguyen</dc:creator>
    <dc:date>2012-05-25T19:47:18</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198511">
    <title>how to share files between machines?</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198511</link>
    <description>&lt;pre&gt;We have a shared git repository (origin).  Everyone on the team clones 
the repo, does some work, commits locally then pushes to the shared 
repository.

I have a box where I have cloned the repo.  I have another box (test 
box) where I have also cloned the same repo.  I change/commit/push code 
on either box to the shared repo depending on the task at hand.

Now I want to do something different.  I want to create new files on my 
local box in various directories that are part of my local git rep, and 
share them only between just the two boxes.  So I need the ability to 
commit/push to another repo such that others on the repo mentioned in 
the first sentence will not be affected.

There will be various files in various sub directories, so when I pull 
on the second box, I want all the files to come down and be put in the 
same directory that they existed on my box 1 where I committed them.

Is this at all possible? Maybe by creating a bare repository on my box 1?



J.V.
&lt;/pre&gt;</description>
    <dc:creator>J.V.</dc:creator>
    <dc:date>2012-05-25T19:28:09</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198497">
    <title>N/A</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198497</link>
    <description>&lt;pre&gt;Good day

My name is Paul Underwood. I work with Reliance bank Limited here in the
London and I have a business proposal for you. Please go through the attached
letter and get more details about this deal. Your urgent response is highly
anticipated and will be highly appreciated. Get back to me
through my email below or you can call the number below for further clarification.

Please, don't respond to this email if you are NOT INTERESTED or LESS
INTERESTED in the deal because I need someone that will give the deal 100%
attention to enable us succeed as I have put in much in planning on how we
will succeed. So I do not want anybody that will come and waste my time and
mess up the deal and put me in big trouble that might land me in prison or or
make me lose my job.

Like I said before, if you are interested and can be able to handle such huge
deal after reading the attached proposal then contact me but if you are not
interested or cannot be able to handle such deal involving such huge amount of
money then do not bother contacting me.

Regards,
Paul Underwood
E-mail: paulunderwood&amp;lt; at &amp;gt;london.com
Tel: +447024017452  

Hyvää päivää 

Nimeni on Paul Underwood. Työskentelen Reliance Bank Limitedin täällä
Lontoossa ja minulla on liiketoimintaa ehdotus sinulle. Käy läpi oheinen kirje
ja saada lisätietoja tästä paljon. Sinun kiireellinen vastaus on odotettu, ja
on erittäin arvostettu. Tule takaisin minulle 
kautta oma sähköpostiosoite alla tai soittamalla alla olevaan numeroon
lisäselvityksiä. 

Ole hyvä, älä vastaa tähän viestiin, jos et ole kiinnostunut tai vähemmän
kiinnostunut juttu, koska tarvitsen jonkun, joka antaa paljon 100% 
huomiota, jotta voimme menestyä minä olen antanut paljon suunnittelua, miten
onnistumme. Joten en halua ketään, joka tulee ja tuhlaa aikaa ja sotkea paljon
ja laittoi minut pahassa pulassa, että voisi laskeutua minua vankilassa tai
tai tee minut menettää työtäni. 

Kuten aiemmin sanoin, jos olet kiinnostunut ja voi pystyä käsittelemään niin
suuria paljon luettuaan oheisen sitten yhteyttä minuun, mutta jos et ole
kiinnostunut tai ei pysty käsittelemään niin paljon mukana niin valtavasti
rahaa niin älä vaivaudu yhteyttä minuun. 

Terveisin, 
Paul Underwood 
E-mail: paulunderwood&amp;lt; at &amp;gt;london.com 
Puh: +447024017452

&lt;/pre&gt;</description>
    <dc:creator>RELIANCE BANK®</dc:creator>
    <dc:date>2012-05-25T17:54:42</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198482">
    <title>[RFC] Possibility to choose ~/.config/git/config instead of ~/.gitconfig</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198482</link>
    <description>&lt;pre&gt;Hello,

As you know, git stores its configuration in ~/.gitconfig file and in  
other hidden files at the root of the user's directory.

We would like to have a configuration directory instead of all these  
configuration files by following the XDG specification because:
- not a lot of hidden files at the root, so better view
- one directory per software in ~/.config

We would like to give to users the possibility to store configuration  
in ~/.config/git/config file.

git would store its configuration in ~/.config/git/config file if:
- this file exists,
- and ~/.gitconfig file doesn't.
Otherwise git would store its configuration in ~/.gitconfig as usual.

If you don't create ~/.config/git/config, there is no change.

What do you think about it ?

I will send you a patch today.

Thanks,

Lucien KONG,
Valentin DUPERRAY,
Huynh Khoi Nguyen NGUYEN,
Thomas NGUY,
Franck JONAS

Grenoble INP ENSIMAG


&lt;/pre&gt;</description>
    <dc:creator>nguyenhu&lt; at &gt;minatec.inpg.fr</dc:creator>
    <dc:date>2012-05-25T16:15:26</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198481">
    <title>behaviour of .gitignore</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198481</link>
    <description>&lt;pre&gt;On my local machine, I create a /bin/ directory added some bash scripts, 
comitted and then pushed them to the repository.

Now today I do a git pull and they are gone but cannot see that anyone 
deleted them in the git log / history, but there is a /bin/ entry in the 
.gitignore file.

Does this mean, the files are still in the shared repository (orgin) 
that I could get them back?

I tried removing /bin/ from the git ignore and doing a pull but my /bin/ 
directory is still not there.

Is there anyway to do a pull now and have it look at my local gitignore 
and pull the directory back?

thanks


J.V.
&lt;/pre&gt;</description>
    <dc:creator>J.V.</dc:creator>
    <dc:date>2012-05-25T16:32:45</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198480">
    <title>fmt-merge-message: add empty line between tag and signature verification</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198480</link>
    <description>&lt;pre&gt;
When adding the information from a tag, put an empty line between the 
message of the tag and the commented-out signature verification 
information.

At least for the kernel workflow, I often end up re-formatting the message 
that people send me in the tag data. In that situation, putting the tag 
message and the tag signature verification back-to-back then means that 
normal editor "reflow parapgraph" command will get confused and think that 
the signature is a continuation of the last message paragraph.

So I always end up having to first add an empty line, and then go back and 
reflow the last paragraph. Let's just do it in git directly.

The extra vertical space also makes the verification visually stand out 
more from the user-supplied message, so it looks a bit more readable to me 
too, but that may be just an odd personal preference.

Signed-off-by: Linus Torvalds &amp;lt;torvalds&amp;lt; at &amp;gt;linux-foundation.org&amp;gt;
---
This is a throw-away patch - apply or not as you prefer. I thought I'd 
send it out and see what people thought.

I don't feel *that* strongly about it.

Btw, I'd also like to see the merge notes (notably the conflict file list) 
before the generated shortlog, but that seems to really not work with the 
current fmt-merge-message model.  Oh well.

And the strbuf_complete_line() change is entirely independent, but didn't 
seem worth an extra separate patch.  Feel free to take that out, or do it 
independently or whatever.

 builtin/fmt-merge-msg.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c
index a517f1794a1c..d42015d8672d 100644
--- a/builtin/fmt-merge-msg.c
+++ b/builtin/fmt-merge-msg.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -462,7 +462,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void fmt_tag_signature(struct strbuf *tagbuf,
 strbuf_add(tagbuf, tag_body, buf + len - tag_body);
 }
 strbuf_complete_line(tagbuf);
-strbuf_add_lines(tagbuf, "# ", sig-&amp;gt;buf, sig-&amp;gt;len);
+if (sig-&amp;gt;len) {
+strbuf_addch(tagbuf, '\n');
+strbuf_add_lines(tagbuf, "# ", sig-&amp;gt;buf, sig-&amp;gt;len);
+}
 }
 
 static void fmt_merge_msg_sigs(struct strbuf *out)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -627,8 +630,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int fmt_merge_msg(struct strbuf *in, struct strbuf *out,
 rev.ignore_merges = 1;
 rev.limited = 1;
 
-if (suffixcmp(out-&amp;gt;buf, "\n"))
-strbuf_addch(out, '\n');
+strbuf_complete_line(out);
 
 for (i = 0; i &amp;lt; origins.nr; i++)
 shortlog(origins.items[i].string,
&lt;/pre&gt;</description>
    <dc:creator>Linus Torvalds</dc:creator>
    <dc:date>2012-05-25T16:02:03</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198478">
    <title>Hello Dearst One</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198478</link>
    <description>&lt;pre&gt;Hello Dearst One
My name is Mabel a pretty girl Living I Feel Empty without 
Can I Trust You , Am approaching you for a genuine 
friendship and a partnership ,I saw your contact today 
,and i am interested in you, Please i would like to know 
more about you,remember age or distance does not matter 
but what matters is true love,for further communication 
contact me . to enable me to explain myself well to you 
and as well to know whom you are very well i know that my 
coming to you will create a great happiness in my living 
,so i felt we could start from friendship. Who knows, 
something greater may come up in time to come if you don't 
mind, for more of my introduction and to let you know more 
about my self.Tell me about yourself as you reply to this 
mail.
Thanks Yours
Mabel
---
Professional hosting for everyone - http://www.host.ru
&lt;/pre&gt;</description>
    <dc:creator>baby mabel</dc:creator>
    <dc:date>2012-05-25T14:48:06</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198475">
    <title>[PATCH] Teach ignore machinery about pattern "/"</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198475</link>
    <description>&lt;pre&gt;Pattern "/" is ambiguous because the slash can mean "anchor the
pattern to this location" (e.g. /path), but it can also mean
"match directories only" (e.g. path/). Currently git interprets it as
the latter except that 'path' is an empty string, which makes this
pattern totally useless.

On the other hand, it's intuitive to read '/' as "match root
directory", or equivalent to "/*". (The other way to see it is "match
all directories", which leads to the same result).

One may wonder why bother an "ignore all" pattern. The pattern is
useful when you want to keep just a small portion of the working
directory. But that's still a rare case.

A more popular case would be sparse checkout, where ignore rules are
used to _include_. The thus now "include all" pattern is used to say
"make a sparse checkout that includes everything except this and
this".

Recognize this special pattern and turn it the working equivalence
pattern "/*"

Signed-off-by: Nguyễn Thái Ngọc Duy &amp;lt;pclouds&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 dir.c                              | 3 +++
 t/t3001-ls-files-others-exclude.sh | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/dir.c b/dir.c
index c6a98cc..b65d37c 100644
--- a/dir.c
+++ b/dir.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -308,6 +308,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void add_exclude(const char *string, const char *base,
 int to_exclude = 1;
 int flags = 0;
 
+if (string[0] == '/' &amp;amp;&amp;amp; string[1] == '\0')
+string = "/*";
+
 if (*string == '!') {
 to_exclude = 0;
 string++;
diff --git a/t/t3001-ls-files-others-exclude.sh b/t/t3001-ls-files-others-exclude.sh
index c8fe978..7cb790d 100755
--- a/t/t3001-ls-files-others-exclude.sh
+++ b/t/t3001-ls-files-others-exclude.sh
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -175,6 +175,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test_expect_success 'negated exclude matches can override previous ones' '
 grep "^a.1" output
 '
 
+test_expect_success '"/" pattern is equivalent to "/*" (exclude all)' '
+git ls-files --others --exclude=/ &amp;gt;output &amp;amp;&amp;amp;
+: &amp;gt;expected &amp;amp;&amp;amp;
+test_cmp expected output
+'
+
 test_expect_success 'subdirectory ignore (setup)' '
 mkdir -p top/l1/l2 &amp;amp;&amp;amp;
 (
&lt;/pre&gt;</description>
    <dc:creator>Nguyễn Thái Ngọc Duy</dc:creator>
    <dc:date>2012-05-25T12:47:36</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198467">
    <title>Please advise me</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198467</link>
    <description>&lt;pre&gt;Please advise me if you can assist me.&lt;/pre&gt;</description>
    <dc:creator>Mr.Papi Mboweni</dc:creator>
    <dc:date>2012-05-25T07:28:45</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.version-control.git/198464">
    <title>VERY URGENT.</title>
    <link>http://comments.gmane.org/gmane.comp.version-control.git/198464</link>
    <description>&lt;pre&gt;

As-Salamu Alaykum, i am Dr. Ahmed Ibrahim from Malaysia. I have a lucrative business proposal to discuss with you. For more details E-mail: dr.ahmedibrahim1&amp;lt; at &amp;gt;mygroupuser.com

&lt;/pre&gt;</description>
    <dc:creator>Dr. Ahmed B.A. Ibrahim</dc:creator>
    <dc:date>2012-05-25T06:45:27</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.version-control.git">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.version-control.git</link>
  </textinput>
</rdf:RDF>

