Git development
 help / color / mirror / Atom feed
* Re: [PATCH] git.c: make usage match manual page
From: Kevin Bracey @ 2013-03-11 20:43 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano
In-Reply-To: <7vli9t909a.fsf@alter.siamese.dyndns.org>

On 11/03/2013 21:58, Junio C Hamano wrote:
> Kevin Bracey <kevin@bracey.fi> writes:
>
>> Re-ordered option list in command-line usage to match the manual page.
>> Also makes it less than 80-characters wide.
> Thanks (s/Re-ordered/reorder/ and s/makes/make/, though).

Got it. But I'm going to reword it, to follow the history of the manual 
change.

> Is git.c the only one whose "-h" output does not match the manual
> synopsis?
>
Generally, "-h" just puts "<options>" in the synopsis, and then prints a 
line per option, so most commands don't really match the manual "show 
all options on one line" style anyway. git.c is atypical. (Something 
else to look at for the whole git help thing? Should "git -h" print a 
option list in that style?)

But, yes, I've found a few others that are show almost the same thing as 
the manual but with subtle pointless differences. "git remote", for 
example. That's a larger project, I feel; the 80-column thing is key here.

Kevin

^ permalink raw reply

* [PATCH] git.c: rearrange git synopsis to fit in 80 columns
From: Kevin Bracey @ 2013-03-11 20:44 UTC (permalink / raw)
  To: git; +Cc: Kevin Bracey
In-Reply-To: <1363031055-13562-1-git-send-email-kevin@bracey.fi>

Make the command line use the narrower synopsis layout that the man page
has used since commit 68e4b55.

Signed-off-by: Kevin Bracey <kevin@bracey.fi>
---
 git.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/git.c b/git.c
index d33f9b3..2a98624 100644
--- a/git.c
+++ b/git.c
@@ -6,10 +6,10 @@
 #include "run-command.h"
 
 const char git_usage_string[] =
-	"git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
+	"git [--version] [--help] [-c name=value]\n"
+	"           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
 	"           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]\n"
 	"           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
-	"           [-c name=value] [--help]\n"
 	"           <command> [<args>]";
 
 const char git_more_info_string[] =
-- 
1.8.2.rc3.7.g1100d09.dirty

^ permalink raw reply related

* Re: [PATCH/RFC] Make help behaviour more consistent
From: Philip Oakley @ 2013-03-11 21:06 UTC (permalink / raw)
  To: Junio C Hamano, Matthieu Moy; +Cc: Kevin Bracey, git
In-Reply-To: <7vppz592v5.fsf@alter.siamese.dyndns.org>

From: "Junio C Hamano" <gitster@pobox.com>
Sent: Monday, March 11, 2013 7:02 PM
> Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:
>
>> Kevin Bracey <kevin@bracey.fi> writes:
>>
>>> Two significant usability flaws here:
>>>  - If using man, "man git" to side-step "git help" is obvious. But 
>>> if
>>>    trying to use help.format=web, how to get the root html page? My
>>>    technique was "git help XXX" and click the "git(1) suite" link at 
>>> the
>>>    bottom. "git help git" is non-obvious and apparently undocumented
>>>    (it's not mentioned by "git", "git help", or "git help help"...).
>>
>> Can't this be solved by adding something like
>>
>>   See 'git help git' for general help about Git.
>>
>> to the output of "git help"? I think the fact that "git help" 
>> provides a
>> small amount of output (typically: fits on one screen) is a nice 
>> feature
>> that avoids scaring people too early with the actual doc.
>
> That sounds like a good direction to go in.

My earlier attempt, and Junio's reply 
http://thread.gmane.org/gmane.comp.version-control.git/217352

It is tricky making sure that the message covers help for git, help's 
own help,
the guides, and the commands, all in one compact usage line, while also
covering the -h and --help options (which may not be known to new Git
users on Windows, though probably obvious to Linux/Unix users).

Philip 

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: Max Horn @ 2013-03-11 21:10 UTC (permalink / raw)
  To: Andrew Wong; +Cc: git@vger.kernel.org
In-Reply-To: <CADgNjanQxMFrQG=7SqgAXv5PW8OEfG+1kZt_Mrq27OcP1uyGtA@mail.gmail.com>


On 11.03.2013, at 20:15, Andrew Wong wrote:

> On 3/10/13, Max Horn <max@quendi.de> wrote:
>> I did run
>> 
>>  touch lib/*.* src/*.* && git update-index --refresh && git diff-files
>> 
>> a couple dozen times (the "problematic" files where in src/ and lib), but
>> nothing happened. I just re-checked, and the rebase still fails in the same
>> why...
>> 
>> Perhaps I should add some printfs into the git source to figure out what
>> exactly it thinks is not right about those files... i.e. how does it come to
>> the conclusion that I have local changes, exactly. I don't know how Git does
>> that -- does it take the mtime from (l)stat into account? Perhaps problems
>> with my machine's clock could be responsible?
> 
> Instead of using "touch", maybe it'd be better if you run "ls-files"
> and "stat" at the point where rebase failed. You should run the
> command as soon as rebase failed. Don't try to run any git commands,
> as they might change the index state.

So I tried this:

  git rebase branches/stable-4.6  # ... which leads to the error
  git ls-files -m

but got nothing. Perhaps you had something else in mind, though, but I am not quite sure what... sorry for being dense, but if you let me know what exactly you meant, I'll be happy to try that. As for the stat command:

> 
> And yes, git does make use of mtime and ctime from lstat to some
> degree when detecting file changes. Inserting printf's to print the
> timestamp might help, but the output might be too overwhelming to make
> out useful information, especially during a rebase.
> 
> BTW, it looks like "stat" command on OS X only prints out timestamps
> in seconds, and doesn't show you the nanoseconds part, which may be
> significant in your situation. Instead of using the "stat" command,
> try using this python command to print out the nanoseconds parts:
> python -c "import sys;import os;s=os.stat(sys.argv[1]);print('%d, %f,
> %f' % (s.st_size, s.st_ctime, s.st_mtime))" file1

I can do that, but I am not quite sure what the output should tell me? BTW, I think OS X just does not provide the stat information on a nanosecond level, at least that python command doesn't seem to yield useful extra data... Here is what I got after I just triggered the failing rebase (today it's again a different file it fails on that yesterday...). For comparision, I run stat first on the file with "conflicts", and then on a file that is not being touched by the rebase:

  File: ‘BAD-FILE’
  Size: 21058     	Blocks: 48         IO Block: 4096   regular file
Device: e000004h/234881028d	Inode: 19108072    Links: 1
Access: (0644/-rw-r--r--)  Uid: (  502/   mhorn)   Gid: (   20/   staff)
Access: 2013-03-11 21:40:14.000000000 +0100
Modify: 2013-03-11 21:40:12.000000000 +0100
Change: 2013-03-11 21:40:14.000000000 +0100
 Birth: 2013-03-11 21:40:12.000000000 +0100
  File: ‘NEUTRAL-FILE’
  Size: 1425      	Blocks: 8          IO Block: 4096   regular file
Device: e000004h/234881028d	Inode: 18180450    Links: 1
Access: (0644/-rw-r--r--)  Uid: (  502/   mhorn)   Gid: (   20/   staff)
Access: 2013-03-11 17:58:30.000000000 +0100
Modify: 2013-03-10 14:20:39.000000000 +0100
Change: 2013-03-10 14:20:39.000000000 +0100
 Birth: 2013-02-27 16:18:57.000000000 +0100

Here is the output of the python script for the two files:
21058, 1363034414.000000, 1363034412.000000
1425, 1362921639.000000, 1362921639.000000


One thing I notice is that ctime equals atime and both are larger than mtime. But I have no clue if that has any significance... hmm



> Perhaps you could hack git-am.sh a bit to get more debugging info too.
> Hm, maybe a good place to start is un-silencing the output of "git
> apply". Inside "git-am.sh", you should see a line like:
>    git apply $squelch
> Remove the $squelch, and see what output it generates.


error: BAD-FILE: does not match index

I inserted "git ls-files -m" before that but that didn't print anything nor had it any other effect.

> 
> Also, since you're getting the 3-way merge, you could also insert the
> "ls-files" and "stat" right after "git-merge-recursive", but before
> "die".
> 

Aha, so that was interesting: I inserted both a "stat" invocation, and also invoked the "md5" tool to be able to tell whether the file content matched what I thought it should match. Doing that caused the breaking commit to shift. So, I added a second stat / md5 pair on the new breaking file. After doing that, the rebase suddenly completed! I reset -- hard to the previous state, tried again, and again it worked. And this after consistently failing (albeit in differing places) in maybe a hundred or more tries before. Removing those two calls, it failed again. I tried inserting a "sleep 1", just in case it's a race, but with that it still failed.

I then re-added the stat / md5 calls, and -- it failed again, but this much earlier (in commit 8, not around commits 14-18). 

So I added the new conflicting fail to the stat/md5 calls (for a total of three files), and it failed in commit 4. Despite adding the new file (number 4),  it got stuck in this very commit in several attempts. I then for a while did some other stuff (like reading through the "git ls-files" man page ;-). Trying the rebase once more, with the stat / md5 calls on four files, it went back to failing in the place it started out failing today (commit 16). Adding / remove the stat&md5 invocations didn't seem to have an effect at this point.



Thanks,
Max

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: Max Horn @ 2013-03-11 21:20 UTC (permalink / raw)
  To: Andrew Wong; +Cc: git@vger.kernel.org
In-Reply-To: <CADgNjanQxMFrQG=7SqgAXv5PW8OEfG+1kZt_Mrq27OcP1uyGtA@mail.gmail.com>

PS: Just as a side note, I should mention that I have done tons of rebases on various repositories on this very machine: same hard drive, same file system; the git version of course has changed over time, but as I already described, I can reproduce the same issue with older git versions.

All I want to say here is: While this may of course be a bug of OS X or my machine may be faulty or whatever, it is not as if this issue is occurring all over the place. It is so far somehow specific to this repository, or even the particular branch. So it is probably not something as simple as a faulty clock, because then I should be seeing rebases fail all over the place, right? (Hm, OK, admittedly I didn't try any other big rebases in the last couple days. And right now I have no good example at hand, i.e. a non-trivial branch that cleanly rebases to some other branch)


Cheers,
Max

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: Andrew Wong @ 2013-03-11 21:34 UTC (permalink / raw)
  To: Max Horn; +Cc: git@vger.kernel.org
In-Reply-To: <E042F4D9-79DF-4AEF-8EDE-41BA9E5FB9EC@quendi.de>

On 3/11/13, Max Horn <max@quendi.de> wrote:
> So I tried this:
>
>   git rebase branches/stable-4.6  # ... which leads to the error
>   git ls-files -m
>
> but got nothing. Perhaps you had something else in mind, though, but I am
> not quite sure what... sorry for being dense, but if you let me know what
> exactly you meant, I'll be happy to try that. As for the stat command:

I'm still digesting the information form the email. Just want to
quickly mention that the "ls-files" command should be:
    $ git ls-files --debug file1 file2

You should always get output. It prints out stat-like information for
files in the index.

^ permalink raw reply

* [PATCH v2 0/3] fix git-p4 client root symlink problems
From: Pete Wyckoff @ 2013-03-11 21:45 UTC (permalink / raw)
  To: git; +Cc: Miklós Fazekas, John Keeping, Johannes Sixt
In-Reply-To: <5139883C.6080308@viscovery.net>

Update from v1:

    * add SYMLINKS prerequisite to the new symlink test

Thanks Hannes.


Miklós pointed out in

    http://thread.gmane.org/gmane.comp.version-control.git/214915

that when the p4 client root included a symlink, bad things
happen.  It is fixable, but inconvenient, to use an absolute path
in one's p4 client.  It's not too hard to be smarter about this
in git-p4.

Thanks to Miklós for the patch, and to John for the style
suggestions.  I wrote a couple of tests to make sure this part
doesn't break again.

This is maybe a bug introduced by bf1d68f (git-p4: use absolute
directory for PWD env var, 2011-12-09), but that's so long ago
that I don't think this is a candidate for maint.

		-- Pete


Miklós Fazekas (1):
  git p4: avoid expanding client paths in chdir

Pete Wyckoff (2):
  git p4 test: make sure P4CONFIG relative path works
  git p4 test: should honor symlink in p4 client root

 git-p4.py               | 29 ++++++++++++++++++++++-------
 t/t9808-git-p4-chdir.sh | 41 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+), 7 deletions(-)

-- 
1.8.2.rc2.65.g92f3e2d

^ permalink raw reply

* [PATCH v2 1/3] git p4 test: make sure P4CONFIG relative path works
From: Pete Wyckoff @ 2013-03-11 21:45 UTC (permalink / raw)
  To: git; +Cc: Miklós Fazekas, John Keeping, Johannes Sixt
In-Reply-To: <1363038329-20185-1-git-send-email-pw@padd.com>

This adds a test for the fix in bf1d68f (git-p4: use absolute
directory for PWD env var, 2011-12-09).  It is necessary to
set PWD to an absolute path so that p4 can find files referenced
by non-absolute paths, like the value of the P4CONFIG environment
variable.

P4 does not open files directly; it builds a path by prepending
the contents of the PWD environment variable.

Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/t9808-git-p4-chdir.sh | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/t/t9808-git-p4-chdir.sh b/t/t9808-git-p4-chdir.sh
index dc92e60..55c5e36 100755
--- a/t/t9808-git-p4-chdir.sh
+++ b/t/t9808-git-p4-chdir.sh
@@ -42,6 +42,20 @@ test_expect_success 'P4CONFIG and relative dir clone' '
 	)
 '
 
+# Common setup using .p4config to set P4CLIENT and P4PORT breaks
+# if clone destination is relative.  Make sure that chdir() expands
+# the relative path in --dest to absolute.
+test_expect_success 'p4 client root would be relative due to clone --dest' '
+	test_when_finished cleanup_git &&
+	(
+		echo P4PORT=$P4PORT >git/.p4config &&
+		P4CONFIG=.p4config &&
+		export P4CONFIG &&
+		unset P4PORT &&
+		git p4 clone --dest="git" //depot
+	)
+'
+
 test_expect_success 'kill p4d' '
 	kill_p4d
 '
-- 
1.8.2.rc2.65.g92f3e2d

^ permalink raw reply related

* [PATCH v2 2/3] git p4 test: should honor symlink in p4 client root
From: Pete Wyckoff @ 2013-03-11 21:45 UTC (permalink / raw)
  To: git; +Cc: Miklós Fazekas, John Keeping, Johannes Sixt
In-Reply-To: <1363038329-20185-1-git-send-email-pw@padd.com>

This test fails when the p4 client root includes
a symlink.  It complains:

    Path /vol/bar/projects/foo/... is not under client root /p/foo

and dumps a traceback.

Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 t/t9808-git-p4-chdir.sh | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/t/t9808-git-p4-chdir.sh b/t/t9808-git-p4-chdir.sh
index 55c5e36..4773296 100755
--- a/t/t9808-git-p4-chdir.sh
+++ b/t/t9808-git-p4-chdir.sh
@@ -56,6 +56,33 @@ test_expect_success 'p4 client root would be relative due to clone --dest' '
 	)
 '
 
+# When the p4 client Root is a symlink, make sure chdir() does not use
+# getcwd() to convert it to a physical path.
+test_expect_failure SYMLINKS 'p4 client root symlink should stay symbolic' '
+	physical="$TRASH_DIRECTORY/physical" &&
+	symbolic="$TRASH_DIRECTORY/symbolic" &&
+	test_when_finished "rm -rf \"$physical\"" &&
+	test_when_finished "rm \"$symbolic\"" &&
+	mkdir -p "$physical" &&
+	ln -s "$physical" "$symbolic" &&
+	test_when_finished cleanup_git &&
+	(
+		P4CLIENT=client-sym &&
+		p4 client -i <<-EOF &&
+		Client: $P4CLIENT
+		Description: $P4CLIENT
+		Root: $symbolic
+		LineEnd: unix
+		View: //depot/... //$P4CLIENT/...
+		EOF
+		git p4 clone --dest="$git" //depot &&
+		cd "$git" &&
+		test_commit file2 &&
+		git config git-p4.skipSubmitEdit true &&
+		git p4 submit
+	)
+'
+
 test_expect_success 'kill p4d' '
 	kill_p4d
 '
-- 
1.8.2.rc2.65.g92f3e2d

^ permalink raw reply related

* Re: [PATCH/RFC] Make help behaviour more consistent
From: Junio C Hamano @ 2013-03-11 21:50 UTC (permalink / raw)
  To: Philip Oakley; +Cc: Matthieu Moy, Kevin Bracey, git
In-Reply-To: <CD3017A6746B45FE8A5F242E4C597B51@PhilipOakley>

"Philip Oakley" <philipoakley@iee.org> writes:

> From: "Junio C Hamano" <gitster@pobox.com>
>> Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:
>>
>>>   See 'git help git' for general help about Git.
>>>
>>> to the output of "git help"?
>> ...
>> That sounds like a good direction to go in.
>
> My earlier attempt, and Junio's reply
> http://thread.gmane.org/gmane.comp.version-control.git/217352

Yeah, I threw "git help git" in the general category of "git help
<cmd>" in that message, and now I realize that it may arguably be
confusing to some people.

Perhaps spend one more line to do something like this?

    'git help -a' and 'git help -g' lists available subcommands and
    concept guides. See 'git help <command>' or 'git help <concept>'
    to read about a specific subcommand or concept.
    For an overview, see 'git help git'.

I am neutral between the above and this:

    For an overview, see 'git help git'.
    'git help -a' and 'git help -g' lists available subcommands and
    concept guides. See 'git help <command>' or 'git help <concept>'
    to read about a specific subcommand or concept.

Hrm?

^ permalink raw reply

* [PATCH v2 3/3] git p4: avoid expanding client paths in chdir
From: Pete Wyckoff @ 2013-03-11 21:45 UTC (permalink / raw)
  To: git; +Cc: Miklós Fazekas, John Keeping, Johannes Sixt
In-Reply-To: <1363038329-20185-1-git-send-email-pw@padd.com>

From: Miklós Fazekas <mfazekas@szemafor.com>

The generic chdir() helper sets the PWD environment
variable, as that is what is used by p4 to know its
current working directory.  Normally the shell would
do this, but in git-p4, we must do it by hand.

However, when the path contains a symbolic link,
os.getcwd() will return the physical location.  If the
p4 client specification includes symlinks, setting PWD
to the physical location causes p4 to think it is not
inside the client workspace.  It complains, e.g.

    Path /vol/bar/projects/foo/... is not under client root /p/foo

One workaround is to use AltRoots in the p4 client specification,
but it is cleaner to handle it directly in git-p4.

Other uses of chdir still require setting PWD to an
absolute path so p4 features like P4CONFIG work.  See
bf1d68f (git-p4: use absolute directory for PWD env
var, 2011-12-09).

[ pw: tweak patch and commit message ]

Thanks-to: John Keeping <john@keeping.me.uk>
Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 git-p4.py               | 29 ++++++++++++++++++++++-------
 t/t9808-git-p4-chdir.sh |  2 +-
 2 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/git-p4.py b/git-p4.py
index 647f110..7288c0b 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -79,12 +79,27 @@ def p4_build_cmd(cmd):
         real_cmd += cmd
     return real_cmd
 
-def chdir(dir):
-    # P4 uses the PWD environment variable rather than getcwd(). Since we're
-    # not using the shell, we have to set it ourselves.  This path could
-    # be relative, so go there first, then figure out where we ended up.
-    os.chdir(dir)
-    os.environ['PWD'] = os.getcwd()
+def chdir(path, is_client_path=False):
+    """Do chdir to the given path, and set the PWD environment
+       variable for use by P4.  It does not look at getcwd() output.
+       Since we're not using the shell, it is necessary to set the
+       PWD environment variable explicitly.
+       
+       Normally, expand the path to force it to be absolute.  This
+       addresses the use of relative path names inside P4 settings,
+       e.g. P4CONFIG=.p4config.  P4 does not simply open the filename
+       as given; it looks for .p4config using PWD.
+
+       If is_client_path, the path was handed to us directly by p4,
+       and may be a symbolic link.  Do not call os.getcwd() in this
+       case, because it will cause p4 to think that PWD is not inside
+       the client path.
+       """
+
+    os.chdir(path)
+    if not is_client_path:
+        path = os.getcwd()
+    os.environ['PWD'] = path
 
 def die(msg):
     if verbose:
@@ -1624,7 +1639,7 @@ class P4Submit(Command, P4UserMap):
             new_client_dir = True
             os.makedirs(self.clientPath)
 
-        chdir(self.clientPath)
+        chdir(self.clientPath, is_client_path=True)
         if self.dry_run:
             print "Would synchronize p4 checkout in %s" % self.clientPath
         else:
diff --git a/t/t9808-git-p4-chdir.sh b/t/t9808-git-p4-chdir.sh
index 4773296..11d2b51 100755
--- a/t/t9808-git-p4-chdir.sh
+++ b/t/t9808-git-p4-chdir.sh
@@ -58,7 +58,7 @@ test_expect_success 'p4 client root would be relative due to clone --dest' '
 
 # When the p4 client Root is a symlink, make sure chdir() does not use
 # getcwd() to convert it to a physical path.
-test_expect_failure SYMLINKS 'p4 client root symlink should stay symbolic' '
+test_expect_success SYMLINKS 'p4 client root symlink should stay symbolic' '
 	physical="$TRASH_DIRECTORY/physical" &&
 	symbolic="$TRASH_DIRECTORY/symbolic" &&
 	test_when_finished "rm -rf \"$physical\"" &&
-- 
1.8.2.rc2.65.g92f3e2d

^ permalink raw reply related

* Re: rebase: strange failures to apply patc 3-way
From: Andrew Wong @ 2013-03-11 22:10 UTC (permalink / raw)
  To: Max Horn; +Cc: git@vger.kernel.org
In-Reply-To: <E30ECECD-DD58-41E2-AA7C-18F83E5E74E6@quendi.de>

On 3/11/13, Max Horn <max@quendi.de> wrote:
> PS: Just as a side note, I should mention that I have done tons of rebases
> on various repositories on this very machine: same hard drive, same file
> system; the git version of course has changed over time, but as I already
> described, I can reproduce the same issue with older git versions.

What if you do a "git clone" from this repo to an entirely new repo? I
wonder if the rebase issue still happens in the new repo...

Could you also post the .git/config file from the repo?

If supported, git could actually make use of threading when doing
"stat"... it should be disabled by default though, but you could try
disabling it with this config:
    git config core.preloadindex false

But I don't know why that'd only affect this one repo and not the
others though...

^ permalink raw reply

* git svn error "Not a valid object name"
From: Adam Retter @ 2013-03-11 22:17 UTC (permalink / raw)
  To: git; +Cc: Dannes Wessels, Wolfgang Meier, Leif-Jöran Olsson

Hi there,

We have been attempting to move our smallish SVN repository for our
Open Source project (ww.exist-db.org) from SourceForge over to GitHub
and it is not going well at all.

We started with svn2git as recommended by GitHub and that didnt work,
we are not on to using 'git svn' directly. If you want the backlog of
detail its here - http://markmail.org/message/khjx6n2jbvcdnnf5

Our public SourceForge Subversion repository is here:
http://svn.code.sf.net/p/exist/code/trunk/eXist

We cloned that to the local server using rsync and are attempting to
migrate to git using the following commands:

$ git svn init -t tags -b stable -T trunk
file:///home/ec2-user/svn-rsync/code new-git-repo
$ cd new-git-repo
$ git config svn-remote.svn.preserve-empty-dirs true
$ git config svn-remote.svn.rewriteRoot https://svn.code.sf.net/p/exist/code
$ git svn fetch -A /home/ec2-user/.svn2git/authors.txt

It all started well and was running away for quite some hours, when
the following error occurred:

fatal: Not a valid object name
ls-tree -z  ./webapp/api/: command returned error: 128

I have no idea what this means, or how to fix this.
We are using Git version 1.8.1.GIT on Amazon EC2 Linux.

Any suggestions please?

I reproduce the log of the last two revisions output from running 'git
svn fetch ...' below, in case that provides any clues:

r3447 = e7d8dd23f78464228128e9b72711c5722b07ad42 (refs/remotes/trunk)
        M       eXist-1.0/src/org/exist/xquery/test/XQueryFunctionsTest.java
        M       eXist-1.0/src/org/exist/xquery/functions/FunString.java
r3448 = 811a870bb7b83d36ce41b2afab39b2fecf59803d (refs/remotes/trunk)
Found possible branch point:
file:///home/ec2-user/svn-rsync/code/trunk/eXist-1.0 =>
file:///home/ec2-user/svn-rsync/code/tags/DLN3445-pre-merge, 3452
Initializing parent: refs/remotes/tags/DLN3445-pre-merge@3452
        A       conf.xml
        A       src/org/exist/xmldb.xsl
        A       src/org/exist/Parser.java
        A       src/org/exist/util/LockOwner.java
        A       src/org/exist/util/CollectionScanner.java
        A       src/org/exist/util/SyntaxException.java
        A       src/org/exist/util/VariableByteInputStream.java
        A       src/org/exist/util/VariableByteOutputStream.java
        A       src/org/exist/util/LockException.java
        A       src/org/exist/util/Configuration.java
        A       src/org/exist/util/OrderedLinkedList.java
        A       src/org/exist/util/XMLFilenameFilter.java
        A       src/org/exist/util/PorterStemmer.java
        A       src/org/exist/util/SimpleTimeOutLock.java
        A       src/org/exist/util/ByteConversion.java
        A       src/org/exist/util/ProgressListener.java
        A       src/org/exist/util/IncludeXMLFilter.java
        A       src/org/exist/util/DatabaseConfigurationException.java
        A       src/org/exist/util/FastByteBuffer.java
        A       src/org/exist/util/Lockable.java
        A       src/org/exist/util/DirectoryScanner.java
        A       src/org/exist/util/FastStringBuffer.java
        A       src/org/exist/util/LongLinkedList.java
        A       src/org/exist/util/Lock.java
        A       src/org/exist/util/ProgressBar.java
        A       src/org/exist/util/LongArrayList.java
        A       src/org/exist/util/ReadOnlyException.java
        A       src/org/exist/util/VariableByteCoding.java
        A       src/org/exist/util/XMLUtil.java
        A       src/org/exist/util/test/VariableByteStreamTest.java
        A       src/org/exist/util/ObjectPool.java
        A       src/org/exist/util/Arrays.java
        A       src/org/exist/util/ProgressIndicator.java
        A       src/org/exist/util/SelectorUtils.java
        A       src/org/exist/http/HttpServer.java
        A       src/org/exist/http/HttpServerConnection.java
        A       src/org/exist/dom/NodeListImpl.java
        A       src/org/exist/dom/TextImpl.java
        A       src/org/exist/dom/NodeImpl.java
        A       src/org/exist/dom/VirtualNodeSet.java
        A       src/org/exist/dom/CharacterDataImpl.java
        A       src/org/exist/dom/NamedNodeMapImpl.java
        A       src/org/exist/dom/ElementImpl.java
        A       src/org/exist/dom/SymbolTable.java
        A       src/org/exist/dom/NodeIDSet.java
        A       src/org/exist/dom/NodeProxyFactory.java
        A       src/org/exist/dom/EmptyNodeSet.java
        A       src/org/exist/dom/SortedNodeSet.java
        A       src/org/exist/dom/DocumentFragmentImpl.java
        A       src/org/exist/dom/CommentImpl.java
        A       src/org/exist/dom/DOMImplementation.java
        A       src/org/exist/dom/NodeProxy.java
        A       src/org/exist/dom/DocumentIterator.java
        A       src/org/exist/dom/DocumentSet.java
        A       src/org/exist/dom/ArraySet.java
        A       src/org/exist/dom/Collection.java
        A       src/org/exist/dom/AttrImpl.java
        A       src/org/exist/dom/ProcessingInstructionImpl.java
        A       src/org/exist/dom/DocumentImpl.java
        A       src/org/exist/dom/NodeSet.java
        A       src/org/exist/dom/.ElementImpl.java.swp
        A       src/org/exist/dom/DocumentTypeImpl.java
        A       src/org/exist/cocoon/XMLDBSessionLoginAction.java
        A       src/org/exist/cocoon/XSPHelper.java
        A       src/org/exist/cocoon/Exist.java
        A       src/org/exist/cocoon/ExistImpl.java
        A       src/org/exist/xpath/Literal.java
        A       src/org/exist/xpath/FunNear.java
        A       src/org/exist/xpath/FunEndsWith.java
        A       src/org/exist/xpath/Expression.java
        A       src/org/exist/xpath/FunRound.java
        A       src/org/exist/xpath/Predicate.java
        A       src/org/exist/xpath/OpAnd.java
        A       src/org/exist/xpath/IntNumber.java
        A       src/org/exist/xpath/ValueString.java
        A       src/org/exist/xpath/FunKeywordMatchAll.java
        A       src/org/exist/xpath/Environment.java
        A       src/org/exist/xpath/LocationStep.java
        A       src/org/exist/xpath/FunId.java
        A       src/org/exist/xpath/FunNot.java
        A       src/org/exist/xpath/FunKeywordMatch.java
        A       src/org/exist/xpath/FLWR.java
        A       src/org/exist/xpath/Value.java
        A       src/org/exist/xpath/FunLast.java
        A       src/org/exist/xpath/ValueBoolean.java
        A       src/org/exist/xpath/FunPosition.java
        A       src/org/exist/xpath/FunSum.java
        A       src/org/exist/xpath/FunString.java
        A       src/org/exist/xpath/OpOr.java
        A       src/org/exist/xpath/NameTest.java
        A       src/org/exist/xpath/FunStrLength.java
        A       src/org/exist/xpath/BinaryOp.java
        A       src/org/exist/xpath/FunCeiling.java
        A       src/org/exist/xpath/VarBinding.java
        A       src/org/exist/xpath/ValueNumber.java
        A       src/org/exist/xpath/NodeTest.java
        A       src/org/exist/xpath/AnyTest.java
        A       src/org/exist/xpath/FunTrue.java
        A       src/org/exist/xpath/FunBoolean.java
        A       src/org/exist/xpath/ValueSet.java
        A       src/org/exist/xpath/FunName.java
        A       src/org/exist/xpath/OpEquals.java
        A       src/org/exist/xpath/RootNode.java
        A       src/org/exist/xpath/PathExpr.java
        A       src/org/exist/xpath/ValueException.java
        A       src/org/exist/xpath/ValueNodeSet.java
        A       src/org/exist/xpath/FunNumber.java
        A       src/org/exist/xpath/FunCount.java
        A       src/org/exist/xpath/OpNumeric.java
        A       src/org/exist/xpath/FunFalse.java
        A       src/org/exist/xpath/Step.java
        A       src/org/exist/xpath/Constants.java
        A       src/org/exist/xpath/TypeTest.java
        A       src/org/exist/xpath/FunKeywordMatchAny.java
        A       src/org/exist/xpath/Function.java
        A       src/org/exist/xpath/FunStartsWith.java
        A       src/org/exist/xpath/FunContains.java
        A       src/org/exist/xpath/Union.java
        A       src/org/exist/xpath/FunSubstring.java
        A       src/org/exist/xpath/FunFloor.java
        A       src/org/exist/Backup.java
        A       src/org/exist/Server.java
        A       src/org/exist/EXistException.java
        A       src/org/exist/InteractiveClient.java
        A       src/org/exist/parser/XPathParser.g
        A       src/org/exist/xmldb2.xsl
        A       src/org/exist/exist.xsl
        A       src/org/exist/DatabaseAdminServlet.java
        A       src/org/exist/soap/QueryServiceLocator.java
        A       src/org/exist/soap/AdminSoapBindingSkeleton.java
        A       src/org/exist/soap/deploy.wsdd
        A       src/org/exist/soap/undeploy.wsdd
        A       src/org/exist/soap/admin.wsdl
        A       src/org/exist/soap/QuerySoapBindingStub.java
        A       src/org/exist/soap/QueryResponseDocument.java
        A       src/org/exist/soap/QueryResponse.java
        A       src/org/exist/soap/QueryService.java
        A       src/org/exist/soap/Admin.java
        A       src/org/exist/soap/AdminSoapBindingImpl.java
        A       src/org/exist/soap/QuerySoapBindingSkeleton.java
        A       src/org/exist/soap/Collection.java
        A       src/org/exist/soap/query.wsdl
        A       src/org/exist/soap/AdminServiceLocator.java
        A       src/org/exist/soap/QueryResponseCollection.java
        A       src/org/exist/soap/AdminSoapBindingStub.java
        A       src/org/exist/soap/Query.java
        A       src/org/exist/soap/QuerySoapBindingImpl.java
        A       src/org/exist/soap/Sessions.java
        A       src/org/exist/soap/AdminService.java
        A       src/org/exist/GetServlet.java
        A       src/org/exist/ServletTest.java
        A       src/org/exist/storage/ElementIndex.java
        A       src/org/exist/storage/BFile.java
        A       src/org/exist/storage/NativeTextEngine.java
        A       src/org/exist/storage/ElementPool.java
        A       src/org/exist/storage/Signatures.java
        A       src/org/exist/storage/DOMTransaction.java
        A       src/org/exist/storage/RelationalTextEngine.java
        A       src/org/exist/storage/DBWrapper.java
        A       src/org/exist/storage/NativeElementIndex.java
        A       src/org/exist/storage/DBBroker.java
        A       src/org/exist/storage/NativeBroker.java
        A       src/org/exist/storage/ByteBuffer.java
        A       src/org/exist/storage/BFileCallback.java
        A       src/org/exist/storage/RelationalBroker.java
        A       src/org/exist/storage/DBConnectionPool.java
        A       src/org/exist/storage/TextSearchEngine.java
        A       src/org/exist/storage/ObjectPool.java
        A       src/org/exist/storage/analysis/SimpleTokenizer.java
        A       src/org/exist/storage/analysis/TextToken.java
        A
src/org/exist/storage/analysis/StandardTokenizerTokenManager.java
        A       src/org/exist/storage/analysis/StandardTokenizerConstants.java
        A       src/org/exist/storage/analysis/ParseException.java
        A       src/org/exist/storage/analysis/Tokenizer.java
        A       src/org/exist/storage/analysis/StandardTokenizer.java
        A       src/org/exist/storage/analysis/StandardTokenizer.jj
        A       src/org/exist/storage/analysis/Token.java
        A       src/org/exist/storage/analysis/TokenMgrError.java
        A       src/org/exist/storage/analysis/SimpleCharStream.java
        A       src/org/exist/storage/PostgresqlWrapper.java
        A       src/org/exist/storage/WordTokenizer.java
        A       src/org/exist/storage/OracleWrapper.java
        A       src/org/exist/storage/MysqlWrapper.java
        A       src/org/exist/storage/IndexPaths.java
        A       src/org/exist/storage/PgElementIndex.java
        A       src/org/exist/storage/TableInsert.java
        A       src/org/exist/storage/BrokerFactory.java
        A       src/org/exist/storage/serializers/Serializer.java
        A       src/org/exist/storage/serializers/NativeSerializer.java
        A       src/org/exist/storage/serializers/PostgresSerializer.java
        A       src/org/exist/storage/serializers/XIncludeFilter.java
        A       src/org/exist/storage/BrokerPool.java
        A       src/org/exist/storage/DOMFile.java
        A       src/org/exist/xmlrpc/RpcServlet.java
        A       src/org/exist/xmlrpc/RpcServer.java
        A       src/org/exist/xmlrpc/RpcAPI.java
        A       src/org/exist/xmlrpc/AuthenticatedHandler.java
        A       src/org/exist/xmldb/XMLResourceImpl.java
        A       src/org/exist/xmldb/CollectionManagementServiceImpl.java
        A       src/org/exist/xmldb/UserManagementService.java
        A       src/org/exist/xmldb/test/ResourceTest.java
        A       src/org/exist/xmldb/test/XPathQueryTest.java
        A       src/org/exist/xmldb/test/AllTests.java
        A       src/org/exist/xmldb/test/CreateCollectionsTest.java
        A       src/org/exist/xmldb/LocalDatabaseInstanceManager.java
        A       src/org/exist/xmldb/DatabaseInstanceManagerImpl.java
        A       src/org/exist/xmldb/LocalCollection.java
        A       src/org/exist/xmldb/LocalXPathQueryService.java
        A       src/org/exist/xmldb/LocalUserManagementService.java
        A       src/org/exist/xmldb/RemoteXPathQueryService.java
        A       src/org/exist/xmldb/XPathQueryServiceImpl.java
        A       src/org/exist/xmldb/CollectionImpl.java
        A       src/org/exist/xmldb/UserManagementServiceImpl.java
        A       src/org/exist/xmldb/LocalResourceSet.java
        A       src/org/exist/xmldb/LocalXMLResource.java
        A       src/org/exist/xmldb/ResourceIteratorImpl.java
        A       src/org/exist/xmldb/LocalCollectionManagementService.java
        A       src/org/exist/xmldb/DatabaseInstanceManager.java
        A       src/org/exist/xmldb/ResourceSetImpl.java
        A       src/org/exist/xmldb/DatabaseImpl.java
        A       src/org/exist/security/MD5.java
        A       src/org/exist/security/Permission.java
        A       src/org/exist/security/User.java
        A       src/org/exist/security/PermissionDeniedException.java
        A       src/org/exist/security/SecurityManager.java
        A       src/CatalogManager.properties
        A       build.properties
        A       thirdparty/jboss/src/samples/XmlDbClientServiceMBean.java
        A       thirdparty/jboss/src/samples/XmlDbClientService.java
        A       thirdparty/jboss/src/org/exist/jboss/XmlDbService.java
        A       thirdparty/jboss/src/org/exist/jboss/XmlDbServiceMBean.java
        A       thirdparty/jboss/src/org/exist/jboss/exist/EXistService.java
        A
thirdparty/jboss/src/org/exist/jboss/exist/EXistServiceMBean.java
        A       thirdparty/jboss/README
        A       thirdparty/jboss/build.xml
        A       thirdparty/jboss/conf/samples/jboss-service.xml
        A       thirdparty/jboss/conf/eXist/jboss-service.xml
        A       README
        A       QuickStart.html
        A       build.xml
        A       Jetty-4.1.4/bin/orgConvert.sh
        A       Jetty-4.1.4/bin/generateJavaDoc
        A       Jetty-4.1.4/bin/jetty.bat
        A       Jetty-4.1.4/bin/rant
        A       Jetty-4.1.4/bin/jetty.sysvinit
        A       Jetty-4.1.4/bin/release-jetty.sh
        A       Jetty-4.1.4/bin/jetty.sh
        A       Jetty-4.1.4/bin/jettyw98.bat
        A       Jetty-4.1.4/cgi-bin/env.sh
        A       Jetty-4.1.4/cgi-bin/redirect.sh
        A       Jetty-4.1.4/start.jar
        A       Jetty-4.1.4/README.TXT
        A       Jetty-4.1.4/etc/.cvsignore
        A       Jetty-4.1.4/etc/jdbcRealm.properties
        A       Jetty-4.1.4/etc/webdefault.xml
        A       Jetty-4.1.4/etc/stresstest.xml
        A       Jetty-4.1.4/etc/demo.xml
        A       Jetty-4.1.4/etc/demo.mlet
        A       Jetty-4.1.4/etc/nio.xml
        A       Jetty-4.1.4/etc/nbio.xml
        A       Jetty-4.1.4/etc/adminRealmproperties
        A       Jetty-4.1.4/etc/admin.xml
        A       Jetty-4.1.4/etc/htgroup
        A       Jetty-4.1.4/etc/examplesRealm.properties
        A       Jetty-4.1.4/etc/LICENSE.javax.servlet.txt
        A       Jetty-4.1.4/etc/j2me.xml
        A       Jetty-4.1.4/etc/LICENSE.javax.xml.html
        A       Jetty-4.1.4/etc/jetty.policy
        A       Jetty-4.1.4/etc/LICENSE.jmx.txt
        A       Jetty-4.1.4/etc/htaccess
        A       Jetty-4.1.4/etc/htpasswd
        A       Jetty-4.1.4/etc/jetty.xml
        A       Jetty-4.1.4/etc/watchdog.xml
        A       Jetty-4.1.4/etc/stresstestRealm.properties
        A       Jetty-4.1.4/etc/demoRealm.properties
        A       Jetty-4.1.4/etc/LICENSE.jsse.txt
        A       Jetty-4.1.4/etc/adminRealm.properties
        A       Jetty-4.1.4/etc/package-list
        A       Jetty-4.1.4/etc/jettydemo.p12
        A       Jetty-4.1.4/etc/demokeystore
        A       Jetty-4.1.4/.cvsignore
        A       Jetty-4.1.4/build.xml
        A       Jetty-4.1.4/ext/com.sun.net.ssl.jar
        A       Jetty-4.1.4/webapps/root/WEB-INF/web.xml
        A       Jetty-4.1.4/webapps/root/index.html
        A       Jetty-4.1.4/webapps/root/.cvsignore
        A       Jetty-4.1.4/VERSION.TXT
        A       Jetty-4.1.4/LICENSE.html
        A       Jetty-4.1.4/lib/org.mortbay.jetty-jdk1.2.jar
        A       Jetty-4.1.4/lib/org.mortbay.jmx.jar
        A       Jetty-4.1.4/lib/.cvsignore
        A       samples/LocalGet.java
        A       samples/biblio.rdf
        A       samples/catalog
        A       samples/shakespeare/.test.xml.swp
        A       samples/shakespeare/hamlet.xml
        A       samples/shakespeare/r_and_j.xml
        A       samples/shakespeare/test.xml
        A       samples/shakespeare/play.dtd
        A       samples/shakespeare/macbeth.xml
        A       samples/shakespeare/shakes.xsl
        A       samples/xinclude/sidebar.xml
        A       samples/xinclude/xinclude.xml
        A       samples/xinclude/disclaimer.xml
        A       samples/play.dtd
        A       samples/xcatalog.xml
        A       samples/soap/getdoc.pl
        A       samples/soap/query.pl
        A       samples/soap/QueryExample.java
        A       samples/soap/Client.cs
        A       samples/soap/store.pl
        A       samples/soap/remove.pl
        A       samples/soap/QueryService.cs
        A       samples/soap/SoapQuery.cs
        A       samples/soap/AdminService.cs
        A       samples/soap/QueryForm.cs
        A       samples/xmlrpc/Search.java
        A       samples/xmlrpc/Store.java
        A       samples/xmlrpc/Get.java
        A       samples/xmldb/NestedQuery.java
        A       samples/xmldb/APIGet.java
        A       samples/xmldb/APISearch.java
        A       samples/xmldb/APIParse.java
        A       samples/xmldb/APIParseDOM.java
        A       build.bat
        A       lib/optional/logkit-20020529.jar
        A       lib/optional/clutil.jar
        A       lib/optional/commons-JXPath-20020320.jar
        A       lib/optional/commons-logging.jar
        A       lib/optional/jakarta-regexp-1.2.jar
        A       lib/optional/axis.jar
        A       lib/optional/ant-optional.jar
        A       lib/optional/wsdl4j.jar
        A       lib/optional/bsf-2.2.jar
        A       lib/optional/jstyle.jar
        A       lib/optional/maybeupload_1-0-5pre3.jar
        A       lib/optional/avalon-framework-20020627.jar
        A       lib/optional/avalon-excalibur-vm12-20020705.jar
        A       lib/optional/cocoon-2.0.3.jar
        A       lib/optional/saaj.jar
        A       lib/optional/commons-discovery.jar
        A       lib/optional/commons-httpclient-20020423.jar
        A       lib/optional/tt-bytecode.jar
        A       lib/optional/commons-collections-1.0.jar
        A       lib/optional/axis-ant.jar
        A       lib/optional/jaxrpc.jar
        A       lib/core/mysql.jar
        A       lib/core/xmldb.jar
        A       lib/core/jakarta-oro-2.0.6.jar
        A       lib/core/xercesImpl.jar
        A       lib/core/excalibur-cli-1.0.jar
        A       lib/core/log4j.jar
        A       lib/core/antlr.jar
        A       lib/core/ant.jar
        A       lib/core/resolver-20020130.jar
        A       lib/core/junit.jar
        A       lib/core/libreadline-java.jar
        A       lib/core/xml-apis.jar
        A       lib/core/javax.servlet.jar
        A       lib/core/trove.jar
        A       lib/core/xalan-2.3.1.jar
        A       lib/core/xmlrpc-1.1.jar
        A       exist.jar
        A       bin/startup.sh
        A       bin/server.bat
        A       bin/antRun.bat
        A       bin/rpclite.pl
        A       bin/run.sh
        A       bin/server.sh
        A       bin/xmlrpc.pl
        A       bin/shutdown.bat
        A       bin/ant
        A       bin/client.bat
        A       bin/shutdown.sh
        A       bin/ant.bat
        A       bin/client.sh
        A       bin/query.py
        A       bin/cpappend.bat
        A       bin/exist.bat
        A       bin/startup.bat
        A       bin/antRun
        A       bin/run.bat
        A       build.sh
        A       client.properties
        A       default.css
        A       org.mortbay.jetty.jar
fatal: Not a valid object name
ls-tree -z  ./webapp/api/: command returned error: 128

--
Adam Retter

eXist Developer
{ United Kingdom }
adam@exist-db.org
irc://irc.freenode.net/existdb

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: Max Horn @ 2013-03-11 22:20 UTC (permalink / raw)
  To: Andrew Wong; +Cc: git@vger.kernel.org
In-Reply-To: <CADgNjanBm5bj7_jY5WrUXUENr7r6zMxve822OYKcyBpWGZv-SA@mail.gmail.com>


On 11.03.2013, at 22:34, Andrew Wong wrote:

> On 3/11/13, Max Horn <max@quendi.de> wrote:
>> So I tried this:
>> 
>>  git rebase branches/stable-4.6  # ... which leads to the error
>>  git ls-files -m
>> 
>> but got nothing. Perhaps you had something else in mind, though, but I am
>> not quite sure what... sorry for being dense, but if you let me know what
>> exactly you meant, I'll be happy to try that. As for the stat command:
> 
> I'm still digesting the information form the email. Just want to
> quickly mention that the "ls-files" command should be:
>    $ git ls-files --debug file1 file2
> 
> You should always get output. It prints out stat-like information for
> files in the index.

Aha, I see. I inserted that into git-am, once right before git-merge-recursive and once right after it (just before a call to rerere).


This is what I got;


Applying: COMMIT X
error: BAD-FILE: does not match index
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
GOOD-FILE
  ctime: 1362921639:0
  mtime: 1362921639:0
  dev: 234881028	ino: 18665879
  uid: 502	gid: 20
  size: 25429	flags: 0
BAD-FILE
  ctime: 1363040264:0
  mtime: 1363040264:0
  dev: 234881028	ino: 19170773
  uid: 502	gid: 20
  size: 52906	flags: 0
error: Your local changes to the following files would be overwritten by merge:
	BAD-FILE
Please, commit your changes or stash them before you can merge.
Aborting
GOOD-FILE
  ctime: 1362921639:0
  mtime: 1362921639:0
  dev: 234881028	ino: 18665879
  uid: 502	gid: 20
  size: 25429	flags: 0
BAD-FILE
  ctime: 1363040264:0
  mtime: 1363040264:0
  dev: 234881028	ino: 19170773
  uid: 502	gid: 20
  size: 52906	flags: 0
Failed to merge in the changes.
Patch failed at 0015 COMMIT X
...

So the ctime/mtine for the BAD-FILE do not differ.
After this, I also run "ls-files" on the command line, and got:

GOOD-FILE gd
  ctime: 1362921639:0
  mtime: 1362921639:0
  dev: 234881028	ino: 18665879
  uid: 502	gid: 20
  size: 25429	flags: 0
BAD-FILE
  ctime: 1363040266:0
  mtime: 1363040264:0
  dev: 234881028	ino: 19170773
  uid: 502	gid: 20
  size: 52906	flags: 0

So now the ctime of the bad file is more recent than the mtime.


Max

^ permalink raw reply

* What's cooking in git.git (Mar 2013, #03; Mon, 11)
From: Junio C Hamano @ 2013-03-11 22:23 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

The final will be tagged in a few days; we have enough material for
post 1.8.2 cycle already, and it will be a busy few weeks towards
the end of the month once the dust settles.

You can find the changes described here in the integration branches of the
repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* gp/add-u-A-documentation (2013-03-07) 1 commit
  (merged to 'next' on 2013-03-08 at d86f8b3)
 + add: Clarify documentation of -A and -u
 (this branch is used by jc/add-2.0-delete-default and jc/add-2.0-u-A-sans-pathspec.)

--------------------------------------------------
[New Topics]

* jc/maint-push-refspec-default-doc (2013-03-08) 1 commit
 - Documentation/git-push: clarify the description of defaults

 Clarify in the documentation "what" gets pushed to "where" when the
 command line to "git push" does not say these explicitly.

 Needs proofreading.


* jc/reflog-reverse-walk (2013-03-08) 3 commits
 - reflog: add for_each_reflog_ent_reverse() API
 - for_each_recent_reflog_ent(): simplify opening of a reflog file
 - for_each_reflog_ent(): extract a helper to process a single entry

 An internal function used to implementate "git checkout @{-1}" was
 hard to use correctly.


* jk/alias-in-bare (2013-03-08) 3 commits
  (merged to 'next' on 2013-03-09 at 2f9d72a)
 + setup: suppress implicit "." work-tree for bare repos
 + environment: add GIT_PREFIX to local_repo_env
 + cache.h: drop LOCAL_REPO_ENV_SIZE

 An aliased command spawned from a bare repository that does not say
 it is bare with "core.bare = yes" is treated as non-bare by mistake.

 Will cook in 'next'.


* pw/p4-symlinked-root (2013-03-11) 3 commits
 - git p4: avoid expanding client paths in chdir
 - git p4 test: should honor symlink in p4 client root
 - git p4 test: make sure P4CONFIG relative path works

 Will merge to 'next'.


* jc/add-2.0-delete-default (2013-03-08) 3 commits
 - git add <pathspec>... defaults to "-A"
 - git add: start preparing for "git add <pathspec>..." to default to "-A"
 - builtin/add.c: simplify boolean variables

 "git add dir/" updated modified files and added new files, but does
 not notice removed files, which may be "Huh?" to some users.  They
 can of course use "git add -A dir/", but why should they?

 There seemed to be some interest in this topic, so resurrected and
 rebased on top of recent documentation updates to propose a
 possible transition plan.


* jc/add-2.0-u-A-sans-pathspec (2013-03-11) 1 commit
 - git add: -u/-A now affects the entire working tree

 "git add -u/-A" without pathspec has traditonally limited its
 operation to the current directory and its subdirectories, but in
 Git 1.8.2 we started encouraging users to be more explicit to
 specify "." when they mean it (and use ":/" to make it affect the
 entire working tree).  With this, we finally change the behaviour
 and make it affect the entire working tree in Git 2.0.


* jk/empty-archive (2013-03-10) 2 commits
 - archive: handle commits with an empty tree
 - test-lib: factor out $GIT_UNZIP setup

 "git archive" reports a failure when asked to create an archive out
 of an empty tree.  It would be more intuitive to give an empty
 archive back in such a case.

 Will merge to 'next'.


* kb/p4merge (2013-03-09) 3 commits
 - git-merge-one-file: revise merge error reporting
 - mergetools/p4merge: create a base if none available
 - mergetools/p4merge: swap LOCAL and REMOTE

 Expecting a reroll.

--------------------------------------------------
[Stalled]

* mb/gitweb-highlight-link-target (2012-12-20) 1 commit
 - Highlight the link target line in Gitweb using CSS

 Expecting a reroll.
 $gmane/211935


* mb/remote-default-nn-origin (2012-07-11) 6 commits
 - Teach get_default_remote to respect remote.default.
 - Test that plain "git fetch" uses remote.default when on a detached HEAD.
 - Teach clone to set remote.default.
 - Teach "git remote" about remote.default.
 - Teach remote.c about the remote.default configuration setting.
 - Rename remote.c's default_remote_name static variables.

 When the user does not specify what remote to interact with, we
 often attempt to use 'origin'.  This can now be customized via a
 configuration variable.

 Expecting a reroll.
 $gmane/210151

 "The first remote becomes the default" bit is better done as a
 separate step.

--------------------------------------------------
[Cooking]

* po/help-guides (2013-03-03) 5 commits
 - help doc: include --guide option description
 - help.c: add list_common_guides_help() function
 - help.c: add --guide option
 - help.c: use OPT_COUNTUP
 - show 'git help <guide>' usage, with examples

 Give more visibility to "concept guides" to help "git help" users.

 Expecting a reroll.
 $gmane/217384


* jk/graph-c-expose-symbols-for-cgit (2013-03-03) 1 commit
  (merged to 'next' on 2013-03-04 at be35b12)
 + Revert "graph.c: mark private file-scope symbols as static"

 In the v1.8.0 era, we changed symbols that do not have to be global
 to file scope static, but a few functions in graph.c were used by
 CGit from sideways bypassing the entry points of the API the
 in-tree users use.

 Will cook in 'next'.


* we/submodule-update-prefix-output (2013-03-03) 1 commit
  (merged to 'next' on 2013-03-04 at 908df73)
 + submodule update: when using recursion, show full path

 Will cook in 'next'.


* jc/nobody-sets-src-peer-ref (2013-03-04) 1 commit
  (merged to 'next' on 2013-03-07 at 1910e21)
 + match_push_refs(): nobody sets src->peer_ref anymore

 Dead code removal.

 Will cook in 'next'.


* jc/push-follow-tag (2013-03-05) 4 commits
  (merged to 'next' on 2013-03-09 at 748fbed)
 + push: --follow-tags
 + commit.c: use clear_commit_marks_many() in in_merge_bases_many()
 + commit.c: add in_merge_bases_many()
 + commit.c: add clear_commit_marks_many()

 The new "--follow-tags" option tells "git push" to push relevant
 tags when pushing branches out.

 Will cook in 'next'.


* jc/maint-reflog-expire-clean-mark-typofix (2013-03-05) 1 commit
  (merged to 'next' on 2013-03-07 at 0a61cbb)
 + reflog: fix typo in "reflog expire" clean-up codepath

 Will cook in 'next'.


* aw/setup-prefix-pathspec (2013-03-09) 2 commits
 - setup.c: check that the pathspec magic ends with ")"
 - setup.c: stop prefix_pathspec() from looping past the end of string

 Will merge to 'next'.


* lf/bundle-verify-list-prereqs (2013-03-08) 2 commits
  (merged to 'next' on 2013-03-08 at 9e55d6d)
 + bundle: Add colons to list headings in "verify"
 + bundle: Fix "verify" output if history is complete

 Will cook in 'next'.


* ks/rfc2047-one-char-at-a-time (2013-03-09) 1 commit
  (merged to 'next' on 2013-03-09 at a12465e)
 + format-patch: RFC 2047 says multi-octet character may not be split

 When "format-patch" quoted a non-ascii strings on the header files,
 it incorrectly applied rfc2047 and chopped a single character in
 the middle of it.

 Will cook in 'next'.


* kb/name-hash (2013-02-27) 1 commit
  (merged to 'next' on 2013-03-05 at 7f7e5d4)
 + name-hash.c: fix endless loop with core.ignorecase=true

 The code to keep track of what directory names are known to Git on
 platforms with case insensitive filesystems can get confused upon
 a hash collision between these pathnames and looped forever.

 Will cook in 'next'.


* rs/zip-compresssed-size-with-export-subst (2013-02-27) 1 commit
  (merged to 'next' on 2013-03-03 at c1ac6d8)
 + archive-zip: fix compressed size for stored export-subst files

 When export-subst is used, "zip" output recorded incorrect
 size of the file.

 Will cook in 'next'.


* hv/config-from-strbuf (2013-03-10) 4 commits
 - teach config parsing to read from strbuf
 - config: make parsing stack struct independent from actual data source
 - config: drop file pointer validity check in get_next_char()
 - config: factor out config file stack management

 Rerolled.


* jc/describe (2013-02-28) 1 commit
  (merged to 'next' on 2013-03-05 at 6b353f3)
 + describe: --match=<pattern> must limit the refs even when used with --all

 The "--match=<pattern>" option of "git describe", when used with
 "--all" to allow refs that are not annotated tags to be used as a
 base of description, did not restrict the output from the command
 to those that match the given pattern.

 We may want to have a looser matching that does not restrict to tags,
 but that can be done as a follow-up topic; this step is purely a bugfix.

 Will cook in 'next'.


* jk/mailsplit-maildir-muttsort (2013-03-02) 1 commit
  (merged to 'next' on 2013-03-03 at d5f7735)
 + mailsplit: sort maildir filenames more cleverly

 Will cook in 'next'.


* pc/subtree-add-before-fetch (2013-02-28) 1 commit
 - contrib/subtree: allow addition of remote branch with name not locally present

 Comments?


* tr/line-log (2013-02-28) 5 commits
 - log -L: :pattern:file syntax to find by funcname
 - Implement line-history search (git log -L)
 - Export rewrite_parents() for 'log -L'
 - blame: introduce $ as "end of file" in -L syntax
 - Refactor parse_loc


* jc/perl-cat-blob (2013-02-22) 1 commit
  (merged to 'next' on 2013-02-25 at 7c0079a)
 + Git.pm: fix cat_blob crashes on large files

 perl/Git.pm::cat_blob slurped everything in core only to write it
 out to a file descriptor, which was not a very smart thing to do.

 Will cook in 'next'.


* nd/doc-index-format (2013-02-23) 3 commits
  (merged to 'next' on 2013-02-26 at 4d3caea)
 + update-index: list supported idx versions and their features
 + read-cache.c: use INDEX_FORMAT_{LB,UB} in verify_hdr()
 + index-format.txt: mention of v4 is missing in some places

 Update the index format documentation to mention the v4 format.

 Will cook in 'next'.


* ap/maint-diff-rename-avoid-overlap (2013-03-06) 3 commits
  (merged to 'next' on 2013-03-06 at 3bc8dda)
 + tests: make sure rename pretty print works
  (merged to 'next' on 2013-02-26 at 19d70bf)
 + diff: prevent pprint_rename from underrunning input
  (merged to 'next' on 2013-02-25 at c9bd6d3)
 + diff: Fix rename pretty-print when suffix and prefix overlap

 The logic used by "git diff -M --stat" to shorten the names of
 files before and after a rename did not work correctly when the
 common prefix and suffix between the two filenames overlapped.

 Will cook in 'next'.


* ap/maint-update-index-h-is-for-help (2013-02-23) 1 commit
  (merged to 'next' on 2013-02-25 at f5f767c)
 + update-index: allow "-h" to also display options

 Will cook in 'next'.


* jc/color-diff-doc (2013-02-22) 1 commit
  (merged to 'next' on 2013-02-25 at c37541c)
 + diff-options: unconfuse description of --color

 Will cook in 'next'.


* nd/branch-error-cases (2013-02-23) 1 commit
  (merged to 'next' on 2013-02-25 at 1d0289f)
 + branch: segfault fixes and validation

 "git branch" had more cases where it did not bother to check
 nonsense command line parameters.

 Will cook in 'next'.


* rt/commit-cleanup-config (2013-02-23) 1 commit
  (merged to 'next' on 2013-02-25 at 8249b61)
 + t7502: perform commits using alternate editor in a subshell

 Fix tests that contaminated their environments and affected new
 tests introduced later in the sequence by containing their effects
 in their own subshells.

 Will cook in 'next'.


* wk/doc-pre-rebase (2013-02-24) 1 commit
  (merged to 'next' on 2013-02-25 at a6ec310)
 + Documentation/githooks: Explain pre-rebase parameters

 Will cook in 'next'.


* da/downcase-u-in-usage (2013-02-24) 20 commits
  (merged to 'next' on 2013-02-26 at 977b67e)
 + contrib/mw-to-git/t/install-wiki.sh: use a lowercase "usage:" string
 + contrib/examples/git-remote.perl: use a lowercase "usage:" string
 + tests: use a lowercase "usage:" string
 + git-svn: use a lowercase "usage:" string
 + Documentation/user-manual.txt: use a lowercase "usage:" string
 + templates/hooks--update.sample: use a lowercase "usage:" string
 + contrib/hooks/setgitperms.perl: use a lowercase "usage:" string
 + contrib/examples: use a lowercase "usage:" string
 + contrib/fast-import/import-zips.py: use spaces instead of tabs
 + contrib/fast-import/import-zips.py: fix broken error message
 + contrib/fast-import: use a lowercase "usage:" string
 + contrib/credential: use a lowercase "usage:" string
 + git-cvsimport: use a lowercase "usage:" string
 + git-cvsimport: use a lowercase "usage:" string
 + git-cvsexportcommit: use a lowercase "usage:" string
 + git-archimport: use a lowercase "usage:" string
 + git-merge-one-file: use a lowercase "usage:" string
 + git-relink: use a lowercase "usage:" string
 + git-svn: use a lowercase "usage:" string
 + git-sh-setup: use a lowercase "usage:" string

 Will cook in 'next'.


* dm/ni-maxhost-may-be-missing (2013-02-25) 1 commit
  (merged to 'next' on 2013-02-26 at 93ec2c9)
 + git-compat-util.h: Provide missing netdb.h definitions

 Will cook in 'next'.


* gp/avoid-explicit-mention-of-dot-git-refs (2013-02-24) 1 commit
  (merged to 'next' on 2013-02-26 at ec42d98)
 + Fix ".git/refs" stragglers

 Will cook in 'next'.


* gp/describe-match-uses-glob-pattern (2013-02-24) 1 commit
  (merged to 'next' on 2013-02-26 at c9cc789)
 + describe: Document --match pattern format
 (this branch is used by gp/forbid-describe-all-match.)

 Will cook in 'next'.


* gp/forbid-describe-all-match (2013-02-24) 1 commit
 - describe: make --all and --match=PATTERN mutually incompatible
 (this branch uses gp/describe-match-uses-glob-pattern.)

 "describe --match=<pattern> --all <commit>" ought to mean "use refs
 that match <pattern> to describe <commit>; you do not have to limit
 yourself to annotated tags."  But it doesn't.  Disable the
 combination.

 We may want to discard this if jc/describe topic turns out to be a
 better idea.


* jk/common-make-variables-export-safety (2013-02-25) 1 commit
  (merged to 'next' on 2013-03-05 at 084ae43)
 + Makefile: make mandir, htmldir and infodir absolute

 Make the three variables safer to be exported to submakes by
 ensuring that they are full paths so that they can be used as
 installation location.

 Will cook in 'next'.


* jk/suppress-clang-warning (2013-02-25) 1 commit
 - fix clang -Wtautological-compare with unsigned enum


* mg/qnx6 (2013-02-25) 1 commit
 - QNX: newer QNX 6.x.x is not so crippled

 Still under discussion.
 Not ready for inclusion.


* mg/unsigned-time-t (2013-02-25) 2 commits
 - Fix time offset calculation in case of unsigned time_t
 - date.c: fix unsigned time_t comparison

 A few workarounds for systems with unsigned time_t.


* rj/msvc-build (2013-02-25) 5 commits
  (merged to 'next' on 2013-02-26 at 7493068)
 + msvc: avoid collisions between "tags" and "TAGS"
 + msvc: test-svn-fe: Fix linker "unresolved external" error
 + msvc: Fix build by adding missing symbol defines
 + msvc: git-daemon: Fix linker "unresolved external" errors
 + msvc: Fix compilation errors caused by poll.h emulation

 Will cook in 'next'.


* wk/user-manual-literal-format (2013-02-25) 1 commit
  (merged to 'next' on 2013-02-26 at d59ce38)
 + user-manual: Standardize backtick quoting

 Will cook in 'next'.


* jk/utf-8-can-be-spelled-differently (2013-02-25) 1 commit
  (merged to 'next' on 2013-02-26 at c079525)
 + utf8: accept alternate spellings of UTF-8

 Will cook in 'next'.


* jk/pkt-line-cleanup (2013-02-24) 19 commits
  (merged to 'next' on 2013-02-25 at d83e970)
 + remote-curl: always parse incoming refs
 + remote-curl: move ref-parsing code up in file
 + remote-curl: pass buffer straight to get_remote_heads
 + teach get_remote_heads to read from a memory buffer
 + pkt-line: share buffer/descriptor reading implementation
 + pkt-line: provide a LARGE_PACKET_MAX static buffer
 + pkt-line: move LARGE_PACKET_MAX definition from sideband
 + pkt-line: teach packet_read_line to chomp newlines
 + pkt-line: provide a generic reading function with options
 + pkt-line: drop safe_write function
 + pkt-line: move a misplaced comment
 + write_or_die: raise SIGPIPE when we get EPIPE
 + upload-archive: use argv_array to store client arguments
 + upload-archive: do not copy repo name
 + send-pack: prefer prefixcmp over memcmp in receive_status
 + fetch-pack: fix out-of-bounds buffer offset in get_ack
 + upload-pack: remove packet debugging harness
 + upload-pack: do not add duplicate objects to shallow list
 + upload-pack: use get_sha1_hex to parse "shallow" lines

 Cleans up pkt-line API, implementation and its callers to make
 them more robust.

 Will cook in 'next'.


* ob/imap-send-ssl-verify (2013-02-20) 1 commit
  (merged to 'next' on 2013-02-25 at e897609)
 + imap-send: support Server Name Indication (RFC4366)

 Correctly connect to SSL/TLS sites that serve multiple hostnames on
 a single IP by including Server Name Indication in the client-hello.

 Will cook in 'next'.


* jc/format-patch (2013-02-21) 2 commits
 - format-patch: --inline-single
 - format-patch: rename "no_inline" field

 A new option to send a single patch to the standard output to be
 appended at the bottom of a message.  I personally have no need for
 this, but it was easy enough to cobble together.  Tests, docs and
 stripping out more MIMEy stuff are left as exercises to interested
 parties.

 Not ready for inclusion.


* tk/doc-filter-branch (2013-02-26) 2 commits
  (merged to 'next' on 2013-02-26 at bd4638b)
 + Documentation: filter-branch env-filter example
 + git-filter-branch.txt: clarify ident variables usage

 Will cook in 'next'.


* bc/commit-complete-lines-given-via-m-option (2013-02-19) 4 commits
  (merged to 'next' on 2013-02-19 at cf622b7)
 + Documentation/git-commit.txt: rework the --cleanup section
 + git-commit: only append a newline to -m mesg if necessary
 + t7502: demonstrate breakage with a commit message with trailing newlines
 + t/t7502: compare entire commit message with what was expected

 'git commit -m "$str"' when $str was already terminated with a LF
 now avoids adding an extra LF to the message.

 Will cook in 'next'.


* da/difftool-fixes (2013-02-21) 4 commits
  (merged to 'next' on 2013-02-25 at 687db1f)
 + t7800: "defaults" is no longer a builtin tool name
 + t7800: modernize tests
 + t7800: update copyright notice
 + difftool: silence uninitialized variable warning

 Minor maintenance updates to difftool, and updates to its tests.

 Will cook in 'next'.


* nd/read-directory-recursive-optim (2013-02-17) 1 commit
  (merged to 'next' on 2013-02-17 at 36ba9f4)
 + read_directory: avoid invoking exclude machinery on tracked files

 "git status" has been optimized by taking advantage of the fact
 that paths that are already known to the index do not have to be
 checked against the .gitignore mechanism under some conditions.

 Will cook in 'next'.


* mg/gpg-interface-using-status (2013-02-14) 5 commits
  (merged to 'next' on 2013-02-26 at 93f0e72)
 + pretty: make %GK output the signing key for signed commits
 + pretty: parse the gpg status lines rather than the output
 + gpg_interface: allow to request status return
 + log-tree: rely upon the check in the gpg_interface
 + gpg-interface: check good signature in a reliable way

 Call "gpg" using the right API when validating the signature on
 tags.

 Will cook in 'next'.


* jn/shell-disable-interactive (2013-03-09) 2 commits
 - shell: new no-interactive-login command to print a custom message
 - shell doc: emphasize purpose and security model

 Rerolled.


* jc/fetch-raw-sha1 (2013-02-07) 4 commits
  (merged to 'next' on 2013-02-14 at ffa3c65)
 + fetch: fetch objects by their exact SHA-1 object names
 + upload-pack: optionally allow fetching from the tips of hidden refs
 + fetch: use struct ref to represent refs to be fetched
 + parse_fetch_refspec(): clarify the codeflow a bit

 Allows requests to fetch objects at any tip of refs (including
 hidden ones).  It seems that there may be use cases even outside
 Gerrit (e.g. $gmane/215701).

 Will cook in 'next'.


* mn/send-email-works-with-credential (2013-02-27) 6 commits
  (merged to 'next' on 2013-02-27 at ee7ae0e)
 + git-send-email: use git credential to obtain password
 + Git.pm: add interface for git credential command
 + Git.pm: allow pipes to be closed prior to calling command_close_bidi_pipe
 + Git.pm: refactor command_close_bidi_pipe to use _cmd_close
 + Git.pm: fix example in command_close_bidi_pipe documentation
 + Git.pm: allow command_close_bidi_pipe to be called as method

 Hooks the credential system to send-email.

 Will cook in 'next'.


* nd/branch-show-rebase-bisect-state (2013-03-06) 4 commits
 . branch: show more information when HEAD is detached
 . status: show more info than "currently not on any branch"
 . wt-status: move wt_status_get_state() out to wt_status_print()
 . wt-status: split wt_status_state parsing function out

 Kicked out of 'pu'; if the function to read reflog backwards,
 introduced by jc/reflog-reverse-walk, turns out to be a good idea
 to avoid mistaken use of the existing function, this topic can be
 rerolled using the new function.


* nd/count-garbage (2013-02-15) 4 commits
  (merged to 'next' on 2013-02-17 at b2af923)
 + count-objects: report how much disk space taken by garbage files
 + count-objects: report garbage files in pack directory too
 + sha1_file: reorder code in prepare_packed_git_one()
 + git-count-objects.txt: describe each line in -v output

 Will cook in 'next'.


* tz/credential-authinfo (2013-02-25) 1 commit
  (merged to 'next' on 2013-02-27 at 7a261cb)
 + Add contrib/credentials/netrc with GPG support

 A new read-only credential helper (in contrib/) to interact with
 the .netrc/.authinfo files.  Hopefully mn/send-email-authinfo topic
 can rebuild on top of something like this.

 Will cook in 'next'.


* jl/submodule-deinit (2013-03-04) 1 commit
  (merged to 'next' on 2013-03-05 at 097164e)
 + submodule: add 'deinit' command

 There was no Porcelain way to say "I no longer am interested in
 this submodule", once you express your interest in a submodule with
 "submodule init".  "submodule deinit" is the way to do so.

 Will cook in 'next'.


* jc/remove-export-from-config-mak-in (2013-03-05) 3 commits
  (merged to 'next' on 2013-03-05 at abaa3cb)
 + Fix `make install` when configured with autoconf
  (merged to 'next' on 2013-02-12 at eb8af04)
 + Makefile: do not export mandir/htmldir/infodir
  (merged to 'next' on 2013-02-07 at 33f7d4f)
 + config.mak.in: remove unused definitions

 config.mak.in template had an "export" line to cause a few
 common makefile variables to be exported; if they need to be
 expoted for autoconf/configure users, they should also be exported
 for people who write config.mak the same way.  Move the "export" to
 the main Makefile.  Also, stop exporting mandir that used to be
 exported (only) when config.mak.autogen was used.  It would have
 broken installation of manpages (but not other documentation
 formats).

 Will cook in 'next'.


* jc/remove-treesame-parent-in-simplify-merges (2013-01-17) 1 commit
  (merged to 'next' on 2013-01-30 at b639b47)
 + simplify-merges: drop merge from irrelevant side branch

 The --simplify-merges logic did not cull irrelevant parents from a
 merge that is otherwise not interesting with respect to the paths
 we are following.

 This touches a fairly core part of the revision traversal
 infrastructure; even though I think this change is correct, please
 report immediately if you find any unintended side effect.

 Will cook in 'next'.


* jc/push-2.0-default-to-simple (2013-01-16) 14 commits
  (merged to 'next' on 2013-01-16 at 23f5df2)
 + t5570: do not assume the "matching" push is the default
 + t5551: do not assume the "matching" push is the default
 + t5550: do not assume the "matching" push is the default
  (merged to 'next' on 2013-01-09 at 74c3498)
 + doc: push.default is no longer "matching"
 + push: switch default from "matching" to "simple"
 + t9401: do not assume the "matching" push is the default
 + t9400: do not assume the "matching" push is the default
 + t7406: do not assume the "matching" push is the default
 + t5531: do not assume the "matching" push is the default
 + t5519: do not assume the "matching" push is the default
 + t5517: do not assume the "matching" push is the default
 + t5516: do not assume the "matching" push is the default
 + t5505: do not assume the "matching" push is the default
 + t5404: do not assume the "matching" push is the default

 Will cook in 'next' until Git 2.0.


* bc/append-signed-off-by (2013-02-23) 13 commits
  (merged to 'next' on 2013-02-25 at 32f7ac2)
 + git-commit: populate the edit buffer with 2 blank lines before s-o-b
 + Unify appending signoff in format-patch, commit and sequencer
 + format-patch: update append_signoff prototype
 + t4014: more tests about appending s-o-b lines
 + sequencer.c: teach append_signoff to avoid adding a duplicate newline
 + sequencer.c: teach append_signoff how to detect duplicate s-o-b
 + sequencer.c: always separate "(cherry picked from" from commit body
 + sequencer.c: require a conforming footer to be preceded by a blank line
 + sequencer.c: recognize "(cherry picked from ..." as part of s-o-b footer
 + t/t3511: add some tests of 'cherry-pick -s' functionality
 + t/test-lib-functions.sh: allow to specify the tag name to test_commit
 + commit, cherry-pick -s: remove broken support for multiline rfc2822 fields
 + sequencer.c: rework search for start of footer to improve clarity

 Will cook in 'next'.

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: Max Horn @ 2013-03-11 22:36 UTC (permalink / raw)
  To: Andrew Wong; +Cc: git@vger.kernel.org
In-Reply-To: <CADgNja=QJpe2nmqKn9rR1os=zjjqK+dWA+ZLaJA4pgLG8tVgzg@mail.gmail.com>


On 11.03.2013, at 23:10, Andrew Wong wrote:

> On 3/11/13, Max Horn <max@quendi.de> wrote:
>> PS: Just as a side note, I should mention that I have done tons of rebases
>> on various repositories on this very machine: same hard drive, same file
>> system; the git version of course has changed over time, but as I already
>> described, I can reproduce the same issue with older git versions.
> 
> What if you do a "git clone" from this repo to an entirely new repo? I
> wonder if the rebase issue still happens in the new repo...

The problem seems to be non-existent in a clone. 

> 
> Could you also post the .git/config file from the repo?

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
	precomposeunicode = false

Other than that, it just contains some a [remote] section and several [branch] sections. None of these contains any fancy (i.e. the branch sections just say "remote = origin" and give the name of the remote branch).

Looking at the git config man page to check what each of my config settings does, I discovered "trustctime". And adding
	trustctime = false
to .git/config made the rebase work, every single time. Huh. 


Adding this to the fact that a clone works fine, I wonder if  something *is* touching my files, but just in that directory. But what could it be? One nagging suspicion is the "file versioning" feature Apple introduced as part of Time Machine in OS X 10.7; it's kind of a "version control system for n00bs" for arbitrary documents. It has caused me some pain in the past.

But I just re-checked, and problematic repos is explicitly on the Time Machine exclusion list. I also used the "tmutil isexcluded FILES" to verify that the problematic files are really on the TM exclusion list. Finally, I moved the one of the repos subdirectory containing most of the problematic files, and then run "git checkout". In other instances, this sufficed to "disassociate" a file from an unwanted TM version history. But doing that had no effect here, i.e. also with the freshly regenerated files, the problems appear.

> 
> If supported, git could actually make use of threading when doing
> "stat"... it should be disabled by default though, but you could try
> disabling it with this config:
>    git config core.preloadindex false
> 
> But I don't know why that'd only affect this one repo and not the
> others though...
> 
This setting doesn't seem to have any effect on the issue at hand.


Cheers,
Max

^ permalink raw reply

* Re: [PATCH 2/2] shell: new no-interactive-login command to print a custom message
From: Jonathan Nieder @ 2013-03-11 22:48 UTC (permalink / raw)
  To: Ramkumar Ramachandra
  Cc: Ethan Reesor, git, Jeff King, Sitaram Chamarty, Junio C Hamano,
	Greg Brockman
In-Reply-To: <CALkWK0kK3YCwkv26cxVf61yUd8WHmHDG+mFwb2VRwNF3k_40qA@mail.gmail.com>

Ramkumar Ramachandra wrote:
> Jonathan Nieder wrote:

>>  * If the file ~/git-shell-commands/no-interactive-login exists,
>>    run no-interactive-login to let the server say what it likes,
>>    then hang up.
[...]
> If "no-interactive-login" doesn't have execute permissions, we'll get
> an error from here:
>
>     fatal: cannot exec 'git-shell-commands/no-interactive-login': Permission denied

Yep.  Intended.

Thanks for looking it over,
Jonathan

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: Andrew Wong @ 2013-03-11 22:54 UTC (permalink / raw)
  To: Max Horn; +Cc: git@vger.kernel.org
In-Reply-To: <ED1442D4-C011-49F3-928C-0BE0280F7D42@quendi.de>

On 3/11/13, Max Horn <max@quendi.de> wrote:
> Looking at the git config man page to check what each of my config settings
> does, I discovered "trustctime". And adding
> 	trustctime = false
> to .git/config made the rebase work, every single time. Huh.
>
>
> Adding this to the fact that a clone works fine, I wonder if  something *is*
> touching my files, but just in that directory. But what could it be? One
> nagging suspicion is the "file versioning" feature Apple introduced as part
> of Time Machine in OS X 10.7; it's kind of a "version control system for
> n00bs" for arbitrary documents. It has caused me some pain in the past.
>
> But I just re-checked, and problematic repos is explicitly on the Time
> Machine exclusion list. I also used the "tmutil isexcluded FILES" to verify
> that the problematic files are really on the TM exclusion list. Finally, I
> moved the one of the repos subdirectory containing most of the problematic
> files, and then run "git checkout". In other instances, this sufficed to
> "disassociate" a file from an unwanted TM version history. But doing that
> had no effect here, i.e. also with the freshly regenerated files, the
> problems appear.

Would you be able to turn off Time Machine completely and do a few
tests? If it does works, then it becomes a matter of fixing Time
Machine...

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: Max Horn @ 2013-03-12  0:15 UTC (permalink / raw)
  To: Andrew Wong; +Cc: git@vger.kernel.org
In-Reply-To: <CADgNja=oyAVVNTAY-OG5U2gmoYGdpUGDVKvDb4EdD2Q+9KgDcw@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2648 bytes --]


On 11.03.2013, at 23:54, Andrew Wong wrote:

> On 3/11/13, Max Horn <max@quendi.de> wrote:
>> Looking at the git config man page to check what each of my config settings
>> does, I discovered "trustctime". And adding
>> 	trustctime = false
>> to .git/config made the rebase work, every single time. Huh.
>> 
>> 
>> Adding this to the fact that a clone works fine, I wonder if  something *is*
>> touching my files, but just in that directory. But what could it be? One
>> nagging suspicion is the "file versioning" feature Apple introduced as part
>> of Time Machine in OS X 10.7; it's kind of a "version control system for
>> n00bs" for arbitrary documents. It has caused me some pain in the past.
>> 
>> But I just re-checked, and problematic repos is explicitly on the Time
>> Machine exclusion list. I also used the "tmutil isexcluded FILES" to verify
>> that the problematic files are really on the TM exclusion list. Finally, I
>> moved the one of the repos subdirectory containing most of the problematic
>> files, and then run "git checkout". In other instances, this sufficed to
>> "disassociate" a file from an unwanted TM version history. But doing that
>> had no effect here, i.e. also with the freshly regenerated files, the
>> problems appear.
> 
> Would you be able to turn off Time Machine completely and do a few
> tests? If it does works, then it becomes a matter of fixing Time
> Machine...

I did turn it off just now, but no effect. Then again, daemons like revisiond were still running...


One more thing: I used the "fs_usage" to monitor what process accessed what file during one of those failing "git rebase" runs. I then searched through this to determine which processes accessed the "bad" file in this time. The result where these processes (aggregated):

  git
  revisiond
  fseventsd
  git-merge-recursive

Note that Time Machine was not running, but revisiond is... from its manpage:

     revisiond is the daemon that manages document revisions created by applications and system services.

     There are no configurations to revisiond, and users should not run revisiond manually.

This is the process I am suspecting. Specifically, a fchflags call it makes (see that attached excerpt of the fs_usage output). I am not sure, but my guess would be that it sets SF_ARCHIVED on the file. Causing its ctime to wander... Yuck.

But I don't know how to control it... and I am not sure if I can just kill it. Hrm. I'll try to dig some more into it, perhaps I can somehow confirm that this is *really* the cause of the problems, and somehow prevent it.


Cheers,
Max


[-- Attachment #2: git-rebase-debug.txt --]
[-- Type: text/plain, Size: 6515 bytes --]

00:59:54.349156  lstat64                                src/BAD_FILE                                             0.000050   git.623953
00:59:54.349160  open              F=5        (R_____)  src/BAD_FILE                                             0.000004   git.623953
00:59:54.350659  close             F=5                                                                           0.000007   git.623953
00:59:54.371716  lstat64                                src/BAD_FILE                                             0.000002   git.623955
00:59:54.429674  lstat64                                src/BAD_FILE                                             0.000002   git.623959
00:59:54.600060  lstat64                                src/BAD_FILE                                             0.000007   git.623959
00:59:54.600151  stat64                                 /Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000006   revisiond.623963
00:59:54.600154  stat64                                 /Users/mhorn/the-path-to-my-repository/src               0.000003   revisiond.623963
00:59:54.600160  open              F=7        (R_____)  /Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000006   revisiond.623963
00:59:54.600161  fstatfs64         F=7                                                                           0.000002   revisiond.623963
00:59:54.600163  close             F=7                                                                           0.000002   revisiond.623963
00:59:54.600387  unlink                                 src/BAD_FILE                                             0.000328 W git.623959
00:59:54.600429  open              F=5        (_WC__E)  src/BAD_FILE                                             0.000039   git.623959
00:59:54.602910  write             F=5    B=0x4000                                                               0.000040   git.623959
00:59:54.602932  write             F=5    B=0x4000                                                               0.000017   git.623959
00:59:54.602947  write             F=5    B=0x4000                                                               0.000011   git.623959
00:59:54.602958  write             F=5    B=0x4000                                                               0.000009   git.623959
00:59:54.602969  write             F=5    B=0x4000                                                               0.000009   git.623959
00:59:54.602977  write             F=5    B=0x12f5                                                               0.000007   git.623959
00:59:54.602983  fstat64           F=5                                                                           0.000004   git.623959
00:59:54.603032  close             F=5                                                                           0.000049   git.623959
00:59:54.621731  lstat64                                /Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000004   fseventsd.1664
00:59:54.882870  lstat64                                src/BAD_FILE                                             0.000002   git.623993
00:59:54.882872  open              F=5        (R_____)  src/BAD_FILE                                             0.000003   git.623993
00:59:54.883042  close             F=5                                                                           0.000002   git.623993
00:59:55.021956  lstat64                                src/BAD_FILE                                             0.000003   git.624027
00:59:55.021959  open              F=4        (R_____)  src/BAD_FILE                                             0.000003   git.624027
00:59:55.022138  close             F=4                                                                           0.000003   git.624027
00:59:56.600440  open              F=7        (R_____)  /Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000014   revisiond.623963
00:59:56.600442  fcntl             F=7   <GETPATH>                                                               0.000002   revisiond.623963
00:59:56.600445  close             F=7                                                                           0.000004   revisiond.623963
00:59:56.600449  stat64                                 /Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000004   revisiond.623963
00:59:56.600452  stat64                                 /Users/mhorn/the-path-to-my-repository/src               0.000003   revisiond.623963
00:59:56.600455  open              F=7        (R_____)  /Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000004   revisiond.623963
00:59:56.600457  fstatfs64         F=7                                                                           0.000002   revisiond.623963
00:59:56.600459  close             F=7                                                                           0.000002   revisiond.623963
00:59:56.600687  open              F=7        (R_____)  /Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000006   revisiond.623963
00:59:56.600688  fstat64           F=7                                                                           0.000002   revisiond.623963
00:59:56.600698  fchflags          F=7   <UNKNOWN>       [garbled output removed]                                0.000010   revisiond.623963
00:59:56.600701  close             F=7                                                                           0.000003   revisiond.623963
00:59:56.624161  lstat64                                /Users/mhorn/the-path-to-my-repository/src/BAD_FILE      0.000004   fseventsd.1664
00:59:56.981172  lstat64                                src/BAD_FILE                                             0.000004   git.624517
00:59:57.015622  lstat64                                src/BAD_FILE                                             0.000005   git.624527
00:59:57.118844  lstat64                                src/BAD_FILE                                             0.000005   git-merge-recurs.624544
01:00:00.194634  lstat64                                src/BAD_FILE                                             0.000002   git.624580
01:00:00.194637  open              F=5        (R_____)  src/BAD_FILE                                             0.000003   git.624580
01:00:00.194815  close             F=5                                                                           0.000003   git.624580

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: Max Horn @ 2013-03-12  0:29 UTC (permalink / raw)
  To: Andrew Wong; +Cc: git@vger.kernel.org
In-Reply-To: <CADgNja=oyAVVNTAY-OG5U2gmoYGdpUGDVKvDb4EdD2Q+9KgDcw@mail.gmail.com>


On 11.03.2013, at 23:54, Andrew Wong wrote:

> On 3/11/13, Max Horn <max@quendi.de> wrote:
>> Looking at the git config man page to check what each of my config settings
>> does, I discovered "trustctime". And adding
>> 	trustctime = false
>> to .git/config made the rebase work, every single time. Huh.
>> 
>> 
>> Adding this to the fact that a clone works fine, I wonder if  something *is*
>> touching my files, but just in that directory. But what could it be? One
>> nagging suspicion is the "file versioning" feature Apple introduced as part
>> of Time Machine in OS X 10.7; it's kind of a "version control system for
>> n00bs" for arbitrary documents. It has caused me some pain in the past.
>> 
>> But I just re-checked, and problematic repos is explicitly on the Time
>> Machine exclusion list. I also used the "tmutil isexcluded FILES" to verify
>> that the problematic files are really on the TM exclusion list. Finally, I
>> moved the one of the repos subdirectory containing most of the problematic
>> files, and then run "git checkout". In other instances, this sufficed to
>> "disassociate" a file from an unwanted TM version history. But doing that
>> had no effect here, i.e. also with the freshly regenerated files, the
>> problems appear.
> 
> Would you be able to turn off Time Machine completely and do a few
> tests? If it does works, then it becomes a matter of fixing Time
> Machine...
> 

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.revisiond.plist

-> this exits revisiond, and prevents launchd from respawning it. After that, the problem is gone, on several attempts. And once I reactivate revisions, the problem reoccurs.

So it seems pretty clear what the cause of this is. Now I still need to figure out why it affects that particular repository and not others. But at this point I guess it is safe to say that Apple's auto-crap-magic revisiond is the root of the problem, and git is purely a victim. So I'll stop spamming this list with this issue for now, and see if I can figure out a fix that is less invasive than turning off revisiond completely (which some application rely on, so disabling it may break them badly).

Andrew, thank you very much for your persistent guidance and help. I definitely owe you a beverage-of-your-choice ;-).

Cheers,
Max

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: John Szakmeister @ 2013-03-12  0:41 UTC (permalink / raw)
  To: Max Horn; +Cc: Andrew Wong, git@vger.kernel.org
In-Reply-To: <A3AD5861-FE88-4D6E-B10A-B83F68BA6368@quendi.de>

On Mon, Mar 11, 2013 at 8:29 PM, Max Horn <max@quendi.de> wrote:
[snip]
>
> sudo launchctl unload /System/Library/LaunchDaemons/com.apple.revisiond.plist
>
> -> this exits revisiond, and prevents launchd from respawning it. After that, the problem is gone, on several attempts. And once I reactivate revisions, the problem reoccurs.
>
> So it seems pretty clear what the cause of this is. Now I still need to figure out why it affects that particular repository and not others. But at this point I guess it is safe to say that Apple's auto-crap-magic revisiond is the root of the problem, and git is purely a victim. So I'll stop spamming this list with this issue for now, and see if I can figure out a fix that is less invasive than turning off revisiond completely (which some application rely on, so disabling it may break them badly).

I just wanted to say thank you for spamming the list with this.  I've
not upgraded to a new Mac OS X yet, but now I know I need to watch out
for this issue.  I'm glad you were able to get to the bottom of it,
and I'd love to hear if you find a reasonable solution.

-John

^ permalink raw reply

* Re: [PATCH/RFC] Make help behaviour more consistent
From: Kevin Bracey @ 2013-03-11 18:51 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano
In-Reply-To: <7v1ubmd4dt.fsf@alter.siamese.dyndns.org>

On 11/03/2013 05:03, Junio C Hamano wrote:
> Hmm, I feel more confused than convinced after reading the above
> three times.  Perhaps that is because I am too used to the way how
> "git" potty itself behaves, especially the part that "git help git"
> is the way to ask "git" (the first token on the command line) to
> give me "help" about "git" (the second) itself.

But you are nowhere told that "git help" will give you information on 
any topic other than Git commands. Starting from just typing "git", all 
you are told is that you can type "git help <command>". Given that 
information, you could at least logically deduce that "git help help" 
will give you help on "git help". (Not that it would help anyway - even 
git-help.txt doesn't say that you can specify anything other than a Git 
command, like "git" or "cli". But sounds like Philip's already on there 
case there).

If you can figure out "man git" for yourself (and if it's available - 
Windows?) then from there you're explicitly told how to directly access 
all the other docs using man itself, including gitrevisions(7), etc.

And having gotten to "man gitrevisions", I figured out that "git help 
revisions" could get to the HTML equivalent. Not documented, but at 
least fits the pattern, give or take a hyphen.  But I never figured out 
"git help git", until I read the source. Why do I need to add the extra 
"git" to the help command for that page, and that page only? "git" isn't 
a Git command, and there's no "man gitgit" topic! Even if I explicitly 
try to point explicitly that I want a web page with "git help -w", I 
don't get it...

I think at the very minimum you need to make it explicitly clear right 
up front that "git help git" is available:

    See 'git help git' for more information on Git
See 'git help <command>' for more information on a specific command.

Seems ugly though. I'm at a loss to understand why "git help", the 
manual launching command, shouldn't by default simply launch the root of 
the manual tree, rather than replicate the behaviour of "git"/"git --help".

And something needs to be done to advertise the general existence of 
usage on commands. "-h" is currently hidden on page 4 of "man gitcli". 
(Is it anywhere else?)  I've managed to avoid finding out about it for 
years! Checking a few people around me, none of them knew about it either.

At the minute "git" tells you about "git --help", which shows usage, but 
"git add --help" launches the manual. (Huh?) Given that, I always 
assumed there was no usage available for individual commands - if there 
was usage, surely it would be there on --help, like on "git". Never 
occurred to me it would be there under "-h" instead.

So how about going further than that patch, and making it even simpler. 
Collapse --help and -h to be synonyms. Then under either spelling, 
--help|-h always shows usage for "git" or "git <command>", as per GNU 
guidelines.

Then the manual launch only happens for "git help ..." and, "git help" 
on its own launches the root. And the output of "git [--help]" ends with:

    See 'git help [<command>]' for more information.

Kevin

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: Jeff King @ 2013-03-12  1:01 UTC (permalink / raw)
  To: Max Horn; +Cc: Andrew Wong, git@vger.kernel.org
In-Reply-To: <A3AD5861-FE88-4D6E-B10A-B83F68BA6368@quendi.de>

On Tue, Mar 12, 2013 at 01:29:45AM +0100, Max Horn wrote:

> So it seems pretty clear what the cause of this is. Now I still need
> to figure out why it affects that particular repository and not
> others. But at this point I guess it is safe to say that Apple's
> auto-crap-magic revisiond is the root of the problem, and git is
> purely a victim. So I'll stop spamming this list with this issue for
> now, and see if I can figure out a fix that is less invasive than
> turning off revisiond completely (which some application rely on, so
> disabling it may break them badly).

>From "git help config":

  core.trustctime
    If false, the ctime differences between the index and the working
    tree are ignored; useful when the inode change time is regularly
    modified by something outside Git (file system crawlers and some
    backup systems). See git-update- index(1). True by default.

-Peff

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: Andrew Wong @ 2013-03-12  0:58 UTC (permalink / raw)
  To: Max Horn; +Cc: git@vger.kernel.org
In-Reply-To: <A3AD5861-FE88-4D6E-B10A-B83F68BA6368@quendi.de>

On 03/11/13 20:29, Max Horn wrote:
> sudo launchctl unload /System/Library/LaunchDaemons/com.apple.revisiond.plist
>
> -> this exits revisiond, and prevents launchd from respawning it. After that, the problem is gone, on several attempts. And once I reactivate revisions, the problem reoccurs.
>
> So it seems pretty clear what the cause of this is. Now I still need to figure out why it affects that particular repository and not others. But at this point I guess it is safe to say that Apple's auto-crap-magic revisiond is the root of the problem, and git is purely a victim. So I'll stop spamming this list with this issue for now, and see if I can figure out a fix that is less invasive than turning off revisiond completely (which some application rely on, so disabling it may break them badly).
>
> Andrew, thank you very much for your persistent guidance and help. I definitely owe you a beverage-of-your-choice ;-).
Awesome! I was starting to worry that we'd never figure out what the
issue is. Good thing you know your way around OS X and its debugging
tools. :)

Maybe drop an email if you figure out what's causing revisiond to be so
persistent about those specific files. Might help any who run into
similar issues in the future.

Cheers!

^ permalink raw reply

* Re: rebase: strange failures to apply patc 3-way
From: Andrew Wong @ 2013-03-12  1:03 UTC (permalink / raw)
  To: Jeff King; +Cc: Max Horn, git@vger.kernel.org
In-Reply-To: <20130312010114.GA21026@sigill.intra.peff.net>

On 03/11/13 21:01, Jeff King wrote:
> From "git help config":
>
>   core.trustctime
>     If false, the ctime differences between the index and the working
>     tree are ignored; useful when the inode change time is regularly
>     modified by something outside Git (file system crawlers and some
>     backup systems). See git-update- index(1). True by default.
In an earlier email, Max did mention setting the config does workaround
the issue. But it's still strange that it only happens to a few specific
files in this particular repo. The issue never popped up in other repos
that he has, which I assume has all been excluded from Time Machine...

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox