Git development
 help / color / mirror / Atom feed
* Re: git-merge segfault in 1.6.6 and master
From: Junio C Hamano @ 2010-01-20 19:13 UTC (permalink / raw)
  To: Tim Olsen; +Cc: git, Miklos Vajna, Johannes Schindelin
In-Reply-To: <hj7abm$5vc$1@ger.gmane.org>

Tim Olsen <tim@brooklynpenguin.com> writes:

> The following happens on 1.6.6 and master as of
> 5b15950ac414a8a2d4f5eb480712abcc9fe176d2.  The problem goes away if I
> use the resolve merge strategy instead.

Thanks.

Since you can build and run git yourself, can I ask you to run another
experiment with this one-liner patch applied?

diff --git a/builtin-merge.c b/builtin-merge.c
index 82e2a04..08a8f24 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c
@@ -550,7 +550,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
 		return error("Unable to write index.");
 	rollback_lock_file(lock);
 
-	if (!strcmp(strategy, "recursive") || !strcmp(strategy, "subtree")) {
+	if (0) {
 		int clean;
 		struct commit *result;
 		struct lock_file *lock = xcalloc(1, sizeof(struct lock_file));

This disables the codepath that special-cases the calling convention for
these merge strategies, and was introduce by 18668f5 (builtin-merge: avoid
run_command_v_opt() for recursive and subtree, 2008-08-28 -- authors Cc'ed
to ask for help in diagnosing).

If this experiment "fixes" the failure for you, then it would be a sign
that the caller (not necessarily in the code in this "if()" block) may be
doing something wrong (or more likely, not doing enough) before calling
into merge_recursive().  I am suspecting that it is not parsing some
commit objects properly, e.g. using lookup_commit(SHA-1) and using the
result without calling parse_object() on it first, or something similar
that is silly but trivial to fix.

After the experiment, please revert the above one-liner.  I don't want to
use a work-around forever; we'd be better off finding where in the code it
goes wrong.  Looking at your gdb trace, I notice...

> (gdb) r
> Starting program: /usr/local/bin/git merge origin/deployed
> [Thread debugging using libthread_db enabled]
> ...
> #3  0x0000000000499523 in merge_trees (o=0x7fffffffd5b0, head=0x77b058,
> merge=0x77b030, common=0x0, result=0x7fffffffd548) at merge-recursive.c:1209
>         code = 8076320
>         clean = 13064

"common = NULL" means merged_common_ancestors->tree is NULL in the caller.
Somebody is passing a bogus commit in "ca" (aka common ancestors) list
when calling merge_recursive(), or forgetting to parse them before calling
it.  In your debugger could you find out where it comes from and what it
has before this call into merge_trees() is made?  Specifically, what the
"ca" list at 0x7b3c00 contains, and how "merged_common_ancestors" at
0x121e360 looks like. in this trace we see below:

> #4  0x0000000000499a46 in merge_recursive (o=0x7fffffffd5b0,
> h1=0x7932d0, h2=0x793240, ca=0x7b3c00, result=0x7fffffffd628) at
> merge-recursive.c:1343

^ permalink raw reply related

* Re: git notes: notes
From: Joey Hess @ 2010-01-20 18:24 UTC (permalink / raw)
  To: git
In-Reply-To: <201001201148.11701.johan@herland.net>

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

Johan Herland wrote:
> As Thomas already stated, git log is porcelain, and its output format is not 
> set in stone. If you need a stable, script-friendly format, you should 
> probably use the --format option, or use plumbing instead (such as e.g. git 
> rev-list, which also has a --format option).

But git log --format=raw --raw output was changed by notes.

> > Might be worth documenting in release notes, maybe too late now though.
> > But really, it's all good, notes are a great feature.
> > 
> > PS, Has anyone thought about using notes to warn bisect away from
> > commits that are known to be unbuildable or otherwise cause bisection
> > trouble?
> 
> No, I haven't thought of that specific use case. Great idea! :)

Only problem I see with doing it is it might be too easy to overwrite
such a note with git notes edit -m

Did you consider having -m append a line to an existing note?

-- 
see shy jo

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply

* Re: Re: [RFC] What to you think about a loose status for submodules?
From: Heiko Voigt @ 2010-01-20 18:16 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Jens Lehmann, Lars Hjemli
In-Reply-To: <7vvdi7fbg3.fsf@alter.siamese.dyndns.org>

On Thu, Oct 22, 2009 at 12:58:04PM -0700, Junio C Hamano wrote:
> Heiko Voigt <hvoigt@hvoigt.net> writes:
> 
> > I am not sure what is the best way to create such a group mapping using
> > our config files though. I would like to allow multiple groups/views to
> > have the submodules like:
> > What do you think?
> 
> That, or alternatively:
> 
>     [submodule "doc"]
>         path = Documentation
> 
>     [submodule "help"]
>         path = help
> 
>     [submodule "core"]
>         path = core
> 
>     [submodule "app"]
>         path = app
> 
>     [view "default"]
>         modules = core app
> 
>     [view "doc"]
>         modules = core doc help

Even though there has not been much more work on this item the idea has
become much clearer for me since the last discussion. Now that sparse
checkout is in master I would like to generalize this idea a little
further.

How about adding this to .gitattributes so it can be used for any
file/directory? E.g.:

.gitattributes:
/core           view=default, doc
/app            view=default
/Documentation  view=doc
*.loc           view=doc, default

which could then  be utilized by

  git checkout --view=doc

for example. If no view is given we default to everything.

Does the current sparse implementation work with submodule entries as
well? Then it could be even more straightforward to implement than the
previous idea.

cheers Heiko

^ permalink raw reply

* Re: git notes: notes
From: Joey Hess @ 2010-01-20 18:14 UTC (permalink / raw)
  To: git
In-Reply-To: <201001201049.01108.trast@student.ethz.ch>

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

Thomas Rast wrote:
> Umm.  git-log is porcelain and we're allowed to change it.  Worse,
> even the user can change it in very significant ways, just try:
> 
>   git config format.pretty email
>   git log

Is git log --pretty=raw --raw really intended to be porcelain?
Above does not affect it.

> For a better alternative, I'm afraid you'll either have to look to
> git-rev-list (which also takes --pretty) or 'git cat-file --batch'.

I don't see a way to get the per-commit diff-tree info using rev-list.

-- 
see shy jo

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply

* git commit --cleanup and templates
From: Sebastian Schuberth @ 2010-01-20 16:37 UTC (permalink / raw)
  To: git

Hi,

when I recently for the first time used commit templates, I was 
surprised to see that git by default strips leading empty lines that I 
deliberately added to the template file when opening the template in the 
editor. I understand that I could use a different cleanup mode, but in 
fact I *want* git to clean everything, but only *after* I finished 
editing the commit message, not already when opening the editor.

Before submitting a patch, I'd like to hear what other people think 
about this, or whether I'm overseeing something.

Thanks.

-- 
Sebastian Schuberth

^ permalink raw reply

* git-merge segfault in 1.6.6 and master
From: Tim Olsen @ 2010-01-20 16:17 UTC (permalink / raw)
  To: git

The following happens on 1.6.6 and master as of
5b15950ac414a8a2d4f5eb480712abcc9fe176d2.  The problem goes away if I
use the resolve merge strategy instead.

tolsen@neurofunk:~/git/site-build-dav-sync-05 [git:build-dav-sync-05]$
gdb --args git merge origin/deployed
GNU gdb (GDB) 7.0-debian
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/local/bin/git...done.
(gdb) r
Starting program: /usr/local/bin/git merge origin/deployed
[Thread debugging using libthread_db enabled]

Program received signal SIGSEGV, Segmentation fault.
*__GI_memcmp (s1=0x4, s2=0x77b034, len=20) at memcmp.c:339
339	memcmp.c: No such file or directory.
	in memcmp.c
(gdb) bt full
#0  *__GI_memcmp (s1=0x4, s2=0x77b034, len=20) at memcmp.c:339
        srcp1 = <value optimized out>
        srcp2 = <value optimized out>
        res = <value optimized out>
#1  0x0000000000495c12 in hashcmp (sha1=0x4 <Address 0x4 out of bounds>,
sha2=0x77b034 "\304\037Eg\262\367\256\367\376\061홚\331\037\bQ\231\332",
<incomplete sequence \370>) at cache.h:620
No locals.
#2  0x0000000000495ca3 in sha_eq (a=0x4 <Address 0x4 out of bounds>,
b=0x77b034 "\304\037Eg\262\367\256\367\376\061홚\331\037\bQ\231\332",
<incomplete sequence \370>) at merge-recursive.c:60
No locals.
#3  0x0000000000499523 in merge_trees (o=0x7fffffffd5b0, head=0x77b058,
merge=0x77b030, common=0x0, result=0x7fffffffd548) at merge-recursive.c:1209
        code = 8076320
        clean = 13064
#4  0x0000000000499a46 in merge_recursive (o=0x7fffffffd5b0,
h1=0x7932d0, h2=0x793240, ca=0x7b3c00, result=0x7fffffffd628) at
merge-recursive.c:1343
        iter = 0x0
        merged_common_ancestors = 0x121e360
        mrtree = 0x7b3c20
        clean = 0
#5  0x000000000043eee6 in try_merge_strategy (strategy=0x4f2078
"recursive", common=0x787170, head_arg=0x4f2570 "HEAD") at
builtin-merge.c:577
        clean = 0
        reversed = 0x7b3c20
        o = {branch1 = 0x4f2570 "HEAD", branch2 = 0x7fffffffdf33
"origin/deployed", subtree_merge = 0, buffer_output = 1, verbosity = 2,
diff_rename_limit = -1, merge_rename_limit = -1, call_depth = 0, obuf =
{alloc = 0, len = 0,
            buf = 0x775ee8 ""}, current_file_set = {items = 0x1220510,
nr = 11526, alloc = 11552, strdup_strings = 1}, current_directory_set =
{items = 0x1203b80, nr = 2957, alloc = 2976, strdup_strings = 1}}
        result = 0x303035302d203031
        lock = 0x7b3d40
        index_fd = 15
        args = 0x7fffffffd6a0
        i = 0
        ret = 2
        j = 0x0
        buf = {alloc = 0, len = 0, buf = 0x775ee8 ""}
        index_fd = 15
        lock = 0x7b2900
#6  0x00000000004407d4 in cmd_merge (argc=1, argv=0x7fffffffda90,
prefix=0x0) at builtin-merge.c:1134
        ret = 0
        result_tree =
"\200\332\377\377\377\177\000\000\000\000\000\000\000\000\000\000\024\000\000"
        buf = {alloc = 60, len = 0, buf = 0x7762d0 ""}
        head_arg = 0x4f2570 "HEAD"
        flag = 1
        head_invalid = 0
        i = 0
        best_cnt = -1
        merge_was_ok = 0
        automerge_was_ok = 0
        common = 0x787170
        best_strategy = 0x0
        wt_strategy = 0x4f2078 "recursive"
        remotes = 0x776838
#7  0x000000000040488f in run_builtin (p=0x729b48, argc=2,
argv=0x7fffffffda90) at git.c:257
        status = 1647275105
        help = 0
        st = {st_dev = 0, st_ino = 0, st_nlink = 7509264, st_mode =
4158578380, st_uid = 32767, st_gid = 1, __pad0 = 0, st_rdev = 0, st_size
= 7508768, st_blksize = 140737340287064, st_blocks =
3403153865682452481, st_atim = {tv_sec = 0,
            tv_nsec = 140737488345392}, st_mtim = {tv_sec =
140737351990853, tv_nsec = 140737488345752}, st_ctim = {tv_sec = 134688,
tv_nsec = 0}, __unused = {5129592, 140737488346931, 0}}
        prefix = 0x0
#8  0x0000000000404a1a in handle_internal_command (argc=2,
argv=0x7fffffffda90) at git.c:401
        p = 0x729b48
        cmd = 0x7fffffffdf2d "merge"
        i = 47
        commands = {{cmd = 0x4e4871 "add", fn = 0x405778 <cmd_add>,
option = 5}, {cmd = 0x4e4875 "stage", fn = 0x405778 <cmd_add>, option =
5}, {cmd = 0x4e487b "annotate", fn = 0x405b84 <cmd_annotate>, option =
1}, {cmd = 0x4e4884 "apply",
            fn = 0x40da8e <cmd_apply>, option = 0}, {cmd = 0x4e488a
"archive", fn = 0x40e7c6 <cmd_archive>, option = 0}, {cmd = 0x4e4892
"bisect--helper", fn = 0x40ea7c <cmd_bisect__helper>, option = 5}, {cmd
= 0x4e48a1 "blame",
            fn = 0x413481 <cmd_blame>, option = 1}, {cmd = 0x4e48a7
"branch", fn = 0x415393 <cmd_branch>, option = 1}, {cmd = 0x4e48ae
"bundle", fn = 0x415bb4 <cmd_bundle>, option = 0}, {cmd = 0x4e48b5
"cat-file", fn = 0x416484 <cmd_cat_file>,
            option = 1}, {cmd = 0x4e48be "checkout", fn = 0x4197c5
<cmd_checkout>, option = 5}, {cmd = 0x4e48c7 "checkout-index", fn =
0x417514 <cmd_checkout_index>, option = 5}, {cmd = 0x4e48d6
"check-ref-format",
            fn = 0x416cf2 <cmd_check_ref_format>, option = 0}, {cmd =
0x4e48e7 "check-attr", fn = 0x416a73 <cmd_check_attr>, option = 1}, {cmd
= 0x4e48f2 "cherry", fn = 0x437b3e <cmd_cherry>, option = 1}, {cmd =
0x4e48f9 "cherry-pick",
            fn = 0x456fd1 <cmd_cherry_pick>, option = 5}, {cmd =
0x4e4905 "clone", fn = 0x41b4b5 <cmd_clone>, option = 0}, {cmd =
0x4e490b "clean", fn = 0x41a198 <cmd_clean>, option = 5}, {cmd =
0x4e4911 "commit", fn = 0x41f144 <cmd_commit>,
            option = 5}, {cmd = 0x4e4918 "commit-tree", fn = 0x41c4a0
<cmd_commit_tree>, option = 1}, {cmd = 0x4e4924 "config", fn = 0x420398
<cmd_config>, option = 0}, {cmd = 0x4e492b "count-objects", fn =
0x420e9a <cmd_count_objects>,
            option = 1}, {cmd = 0x4e4939 "describe", fn = 0x421e8a
<cmd_describe>, option = 1}, {cmd = 0x4e4942 "diff", fn = 0x4238dc
<cmd_diff>, option = 0}, {cmd = 0x4e4947 "diff-files", fn = 0x422454
<cmd_diff_files>, option = 5}, {
            cmd = 0x4e4952 "diff-index", fn = 0x4226b0 <cmd_diff_index>,
option = 1}, {cmd = 0x4e495d "diff-tree", fn = 0x422bb1 <cmd_diff_tree>,
option = 1}, {cmd = 0x4e4967 "fast-export", fn = 0x42553f
<cmd_fast_export>, option = 1}, {
            cmd = 0x4e4973 "fetch", fn = 0x429fb8 <cmd_fetch>, option =
1}, {cmd = 0x4e4979 "fetch-pack", fn = 0x4275da <cmd_fetch_pack>, option
= 1}, {cmd = 0x4e4984 "fmt-merge-msg", fn = 0x42b17a
<cmd_fmt_merge_msg>, option = 1}, {
            cmd = 0x4e4992 "for-each-ref", fn = 0x42d287
<cmd_for_each_ref>, option = 1}, {cmd = 0x4e499f "format-patch", fn =
0x436a1f <cmd_format_patch>, option = 1}, {cmd = 0x4e49ac "fsck", fn =
0x42eae7 <cmd_fsck>, option = 1}, {
            cmd = 0x4e49b1 "fsck-objects", fn = 0x42eae7 <cmd_fsck>,
option = 1}, {cmd = 0x4e49be "gc", fn = 0x42f26b <cmd_gc>, option = 1},
{cmd = 0x4e49c1 "get-tar-commit-id", fn = 0x45ea9f
<cmd_get_tar_commit_id>, option = 0}, {
            cmd = 0x4e49d3 "grep", fn = 0x431505 <cmd_grep>, option =
3}, {cmd = 0x4e49d8 "help", fn = 0x4332b8 <cmd_help>, option = 0}, {cmd
= 0x4e49dd "init", fn = 0x43420d <cmd_init_db>, option = 0}, {cmd =
0x4e49e2 "init-db",
            fn = 0x43420d <cmd_init_db>, option = 0}, {cmd = 0x4e49ea
"log", fn = 0x43560b <cmd_log>, option = 3}, {cmd = 0x4e49ee "ls-files",
fn = 0x438f72 <cmd_ls_files>, option = 1}, {cmd = 0x4e49f7 "ls-tree", fn
= 0x439f6b <cmd_ls_tree>,
            option = 1}, {cmd = 0x4e49ff "ls-remote", fn = 0x43993f
<cmd_ls_remote>, option = 0}, {cmd = 0x4e4a09 "mailinfo", fn = 0x43c72d
<cmd_mailinfo>, option = 0}, {cmd = 0x4e4a12 "mailsplit", fn = 0x43d20c
<cmd_mailsplit>, option = 0}, {
            cmd = 0x4e4a1c "merge", fn = 0x43fc4b <cmd_merge>, option =
5}, {cmd = 0x4e4a22 "merge-base", fn = 0x440d14 <cmd_merge_base>, option
= 1}, {cmd = 0x4e4a2d "merge-file", fn = 0x440f0a <cmd_merge_file>,
option = 0}, {
            cmd = 0x4e4a38 "merge-ours", fn = 0x441408 <cmd_merge_ours>,
option = 1}, {cmd = 0x4e4a43 "merge-recursive", fn = 0x4414e2
<cmd_merge_recursive>, option = 5}, {cmd = 0x4e4a53 "merge-subtree", fn
= 0x4414e2 <cmd_merge_recursive>,
            option = 5}, {cmd = 0x4e4a61 "mktree", fn = 0x441d15
<cmd_mktree>, option = 1}, {cmd = 0x4e4a68 "mv", fn = 0x44210b <cmd_mv>,
option = 5}, {cmd = 0x4e4a6b "name-rev", fn = 0x443251 <cmd_name_rev>,
option = 1}, {
            cmd = 0x4e4a74 "pack-objects", fn = 0x44821f
<cmd_pack_objects>, option = 1}, {cmd = 0x4e4a81 "peek-remote", fn =
0x43993f <cmd_ls_remote>, option = 0}, {cmd = 0x4e4a8d "pickaxe", fn =
0x413481 <cmd_blame>, option = 1}, {
            cmd = 0x4e4a95 "prune", fn = 0x449431 <cmd_prune>, option =
1}, {cmd = 0x4e4a9b "prune-packed", fn = 0x448e33 <cmd_prune_packed>,
option = 1}, {cmd = 0x4e4aa8 "push", fn = 0x449cdd <cmd_push>, option =
1}, {cmd = 0x4e4aad "read-tree",
            fn = 0x44a28d <cmd_read_tree>, option = 1}, {cmd = 0x4e4ab7
"receive-pack", fn = 0x44be59 <cmd_receive_pack>, option = 0}, {cmd =
0x4e4ac4 "reflog", fn = 0x44daf6 <cmd_reflog>, option = 1}, {cmd =
0x4e4acb "remote",
            fn = 0x4519b9 <cmd_remote>, option = 1}, {cmd = 0x4e4ad2
"replace", fn = 0x451fa9 <cmd_replace>, option = 1}, {cmd = 0x4e4ada
"repo-config", fn = 0x420398 <cmd_config>, option = 0}, {cmd = 0x4e4ae6
"rerere",
            fn = 0x452698 <cmd_rerere>, option = 1}, {cmd = 0x4e4aed
"reset", fn = 0x4530cf <cmd_reset>, option = 1}, {cmd = 0x4e4af3
"rev-list", fn = 0x4540be <cmd_rev_list>, option = 1}, {cmd = 0x4e4afc
"rev-parse",
            fn = 0x45537f <cmd_rev_parse>, option = 0}, {cmd = 0x4e4b06
"revert", fn = 0x456f84 <cmd_revert>, option = 5}, {cmd = 0x4e4b0d "rm",
fn = 0x457368 <cmd_rm>, option = 1}, {cmd = 0x4e4b10 "send-pack", fn =
0x458c65 <cmd_send_pack>,
---Type <return> to continue, or q <return> to quit---
            option = 1}, {cmd = 0x4e4b1a "shortlog", fn = 0x459c27
<cmd_shortlog>, option = 2}, {cmd = 0x4e4b23 "show-branch", fn =
0x45b3b7 <cmd_show_branch>, option = 1}, {cmd = 0x4e4b2f "show", fn =
0x43511f <cmd_show>, option = 3}, {
            cmd = 0x4e4b34 "status", fn = 0x41ec30 <cmd_status>, option
= 5}, {cmd = 0x4e4b3b "stripspace", fn = 0x45cf9d <cmd_stripspace>,
option = 0}, {cmd = 0x4e4b46 "symbolic-ref", fn = 0x45d0f3
<cmd_symbolic_ref>, option = 1}, {
            cmd = 0x4e4b53 "tag", fn = 0x45df1e <cmd_tag>, option = 1},
{cmd = 0x4e4b57 "tar-tree", fn = 0x45e8b4 <cmd_tar_tree>, option = 0},
{cmd = 0x4e4b60 "unpack-objects", fn = 0x45fe1f <cmd_unpack_objects>,
option = 1}, {
            cmd = 0x4e4b6f "update-index", fn = 0x461634
<cmd_update_index>, option = 1}, {cmd = 0x4e4b7c "update-ref", fn =
0x461fac <cmd_update_ref>, option = 1}, {cmd = 0x4e4b87
"update-server-info", fn = 0x4622f8 <cmd_update_server_info>,
            option = 1}, {cmd = 0x4e4b9a "upload-archive", fn = 0x4627e4
<cmd_upload_archive>, option = 0}, {cmd = 0x4e4ba9 "verify-tag", fn =
0x4634ba <cmd_verify_tag>, option = 1}, {cmd = 0x4e4bb4 "version", fn =
0x491586 <cmd_version>,
            option = 0}, {cmd = 0x4e4bbc "whatchanged", fn = 0x434df8
<cmd_whatchanged>, option = 3}, {cmd = 0x4e4bc8 "write-tree", fn =
0x463614 <cmd_write_tree>, option = 1}, {cmd = 0x4e4bd3 "verify-pack",
fn = 0x462fb3 <cmd_verify_pack>,
            option = 0}, {cmd = 0x4e4bdf "show-ref", fn = 0x45cb53
<cmd_show_ref>, option = 1}, {cmd = 0x4e4be8 "pack-refs", fn = 0x448ad0
<cmd_pack_refs>, option = 1}}
        ext = ""
#9  0x0000000000404b00 in run_argv (argcp=0x7fffffffd984,
argv=0x7fffffffd978) at git.c:443
        done_alias = 0
#10 0x0000000000404c51 in main (argc=2, argv=0x7fffffffda90) at git.c:514
        cmd = 0x7fffffffdf2d "merge"
        done_help = 0
        was_alias = 0
(gdb)

^ permalink raw reply

* Re: [PATCH 2/2] Make difftool.prompt fall back to mergetool.prompt
From: Sebastian Schuberth @ 2010-01-20 16:10 UTC (permalink / raw)
  Cc: git, davvid
In-Reply-To: <4B5721B2.5050703@gmail.com>

The documentation states that "git-difftool falls back to git-mergetool
config variables when the difftool equivalents have not been defined".
Until now, this was not the case for "difftool.prompt".

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
---
 git-difftool--helper.sh |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/git-difftool--helper.sh b/git-difftool--helper.sh
index 57e8e32..1c1fad4 100755
--- a/git-difftool--helper.sh
+++ b/git-difftool--helper.sh
@@ -11,8 +11,9 @@ TOOL_MODE=diff
 
 # difftool.prompt controls the default prompt/no-prompt behavior
 # and is overridden with $GIT_DIFFTOOL*_PROMPT.
-should_prompt () {
-	prompt=$(git config --bool difftool.prompt || echo true)
+should_prompt_diff () {
+	prompt_merge=$(should_prompt_merge && echo true || echo false)
+	prompt=$(git config --bool difftool.prompt || echo $prompt_merge)
 	if test "$prompt" = true; then
 		test -z "$GIT_DIFFTOOL_NO_PROMPT"
 	else
@@ -33,7 +34,7 @@ launch_merge_tool () {
 
 	# $LOCAL and $REMOTE are temporary files so prompt
 	# the user with the real $MERGED name before launching $merge_tool.
-	if should_prompt; then
+	if should_prompt_diff; then
 		printf "\nViewing: '$MERGED'\n"
 		printf "Hit return to launch '%s': " "$merge_tool"
 		read ans
-- 
1.6.6.266.g55d982.dirty

^ permalink raw reply related

* Re: [PATCH 1/2] Allow to override mergetool.prompt with $GIT_MERGETOOL*_PROMPT
From: Sebastian Schuberth @ 2010-01-20 16:10 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: git, davvid
In-Reply-To: <4B572870.6090001@viscovery.net>

This is for symmetry with git-difftool, and to make should_prompt_merge ()
reusable from within git-difftool--helper.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
---
 git-mergetool--lib.sh |    9 +++++++++
 git-mergetool.sh      |    2 +-
 2 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index 5b62785..b0e4156 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -7,6 +7,15 @@ merge_mode() {
 	test "$TOOL_MODE" = merge
 }
 
+should_prompt_merge () {
+	prompt=$(git config --bool mergetool.prompt || echo true)
+	if test "$prompt" = true; then
+		test -z "$GIT_MERGETOOL_NO_PROMPT"
+	else
+		test -n "$GIT_MERGETOOL_PROMPT"
+	fi
+}
+
 translate_merge_tool_path () {
 	case "$1" in
 	vimdiff)
diff --git a/git-mergetool.sh b/git-mergetool.sh
index b52a741..69f1627 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh
@@ -202,7 +202,7 @@ merge_file () {
     return 0
 }
 
-prompt=$(git config --bool mergetool.prompt || echo true)
+prompt=$(should_prompt_merge && echo true || echo false)
 
 while test $# != 0
 do
-- 
1.6.6.266.g55d982.dirty

^ permalink raw reply related

* Re: [PATCH 1/2] Allow to override mergetool.prompt with $GIT_MERGETOOL*_PROMPT
From: Johannes Sixt @ 2010-01-20 15:59 UTC (permalink / raw)
  To: Sebastian Schuberth; +Cc: git, davvid
In-Reply-To: <4B572192.2020606@gmail.com>

Sebastian Schuberth schrieb:
> +should_prompt_merge () {
> +	local prompt=$(git config --bool mergetool.prompt || echo true)

'local' is not portable. (The next patch shouldn't introduce it, either.)

> -prompt=$(git config --bool mergetool.prompt || echo true)
> +should_prompt_merge
> +prompt=$?

Previously, prompt was either "true" or "false", but now it is a number.
This is not what the user (function merge_file) expects.

-- Hannes

^ permalink raw reply

* [PATCH 2/2] Make difftool.prompt fall back to mergetool.prompt
From: Sebastian Schuberth @ 2010-01-20 15:30 UTC (permalink / raw)
  To: git; +Cc: davvid

The documentation states that "git-difftool falls back to git-mergetool
config variables when the difftool equivalents have not been defined".
Until now, this was not the case for "difftool.prompt".

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
---
 git-difftool--helper.sh |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/git-difftool--helper.sh b/git-difftool--helper.sh
index 57e8e32..a7185b2 100755
--- a/git-difftool--helper.sh
+++ b/git-difftool--helper.sh
@@ -11,8 +11,9 @@ TOOL_MODE=diff
 
 # difftool.prompt controls the default prompt/no-prompt behavior
 # and is overridden with $GIT_DIFFTOOL*_PROMPT.
-should_prompt () {
-	prompt=$(git config --bool difftool.prompt || echo true)
+should_prompt_diff () {
+	local prompt_merge=$(should_prompt_merge && echo true || echo false)
+	local prompt=$(git config --bool difftool.prompt || echo $prompt_merge)
 	if test "$prompt" = true; then
 		test -z "$GIT_DIFFTOOL_NO_PROMPT"
 	else
@@ -33,7 +34,7 @@ launch_merge_tool () {
 
 	# $LOCAL and $REMOTE are temporary files so prompt
 	# the user with the real $MERGED name before launching $merge_tool.
-	if should_prompt; then
+	if should_prompt_diff; then
 		printf "\nViewing: '$MERGED'\n"
 		printf "Hit return to launch '%s': " "$merge_tool"
 		read ans
-- 
1.6.5.1.1373.g71d1

^ permalink raw reply related

* [PATCH 1/2] Allow to override mergetool.prompt with $GIT_MERGETOOL*_PROMPT
From: Sebastian Schuberth @ 2010-01-20 15:30 UTC (permalink / raw)
  To: git; +Cc: davvid

This is for symmetry with git-difftool, and to make should_prompt_merge ()
reusable from within git-difftool--helper.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
---
 git-mergetool--lib.sh |    9 +++++++++
 git-mergetool.sh      |    3 ++-
 2 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index 5b62785..16b0343 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -7,6 +7,15 @@ merge_mode() {
 	test "$TOOL_MODE" = merge
 }
 
+should_prompt_merge () {
+	local prompt=$(git config --bool mergetool.prompt || echo true)
+	if test "$prompt" = true; then
+		test -z "$GIT_MERGETOOL_NO_PROMPT"
+	else
+		test -n "$GIT_MERGETOOL_PROMPT"
+	fi
+}
+
 translate_merge_tool_path () {
 	case "$1" in
 	vimdiff)
diff --git a/git-mergetool.sh b/git-mergetool.sh
index b52a741..d453cb0 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh
@@ -202,7 +202,8 @@ merge_file () {
     return 0
 }
 
-prompt=$(git config --bool mergetool.prompt || echo true)
+should_prompt_merge
+prompt=$?
 
 while test $# != 0
 do
-- 
1.6.5.1.1373.g71d1

^ permalink raw reply related

* [PATCH] Fix memory corruption when .gitignore does not end by \n
From: Nguyễn Thái Ngọc Duy @ 2010-01-20 14:09 UTC (permalink / raw)
  To: git, Junio C Hamano, Jeff King, Jonathan del Strother
  Cc: Nguyễn Thái Ngọc Duy
In-Reply-To: <fcaeb9bf1001200458v436a8adeq5cfc6753900e6c0c@mail.gmail.com>

Commit b5041c5 (Avoid writing to buffer in add_excludes_from_file_1())
tried not to append '\n' at the end because the next commit
may return a buffer that does not have extra space for that.

Unfortunately it left this assignment in the loop:

  buf[i - (i && buf[i-1] == '\r')] = 0;

that can corrupt memory if "buf" is not '\n' terminated. But even if
it does not corrupt memory, the last line would not be
NULL-terminated, leading to errors later inside add_exclude().

This patch fixes it by reverting the faulty commit and make
sure "buf" is always \n terminated.

While at it, free unused memory properly.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 This patch causes a crash for me. Not sure if it does for anybody else.

  diff --git a/t/t3001-ls-files-others-exclude.sh b/t/t3001-ls-files-others-exclude.sh
  index 6d2f2b6..e7efdb5 100755
  --- a/t/t3001-ls-files-others-exclude.sh
  +++ b/t/t3001-ls-files-others-exclude.sh
  @@ -57,7 +57,7 @@ expect
   echo '*.1
   /*.3
   !*.6' >.gitignore
  -echo '*.2
  +echo -n '*.2
   two/*.4
   !*.7
   *.8' >one/.gitignore

 dir.c |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/dir.c b/dir.c
index 1538ad5..67c3af6 100644
--- a/dir.c
+++ b/dir.c
@@ -242,6 +242,14 @@ int add_excludes_from_file_to_list(const char *fname,
 		if (!check_index ||
 		    (buf = read_skip_worktree_file_from_index(fname, &size)) == NULL)
 			return -1;
+		if (size == 0) {
+			free(buf);
+			return 0;
+		}
+		if (buf[size-1] != '\n') {
+			buf = xrealloc(buf, size+1);
+			buf[size++] = '\n';
+		}
 	}
 	else {
 		size = xsize_t(st.st_size);
@@ -249,19 +257,21 @@ int add_excludes_from_file_to_list(const char *fname,
 			close(fd);
 			return 0;
 		}
-		buf = xmalloc(size);
+		buf = xmalloc(size+1);
 		if (read_in_full(fd, buf, size) != size) {
+			free(buf);
 			close(fd);
 			return -1;
 		}
+		buf[size++] = '\n';
 		close(fd);
 	}
 
 	if (buf_p)
 		*buf_p = buf;
 	entry = buf;
-	for (i = 0; i <= size; i++) {
-		if (i == size || buf[i] == '\n') {
+	for (i = 0; i < size; i++) {
+		if (buf[i] == '\n') {
 			if (entry != buf + i && entry[0] != '#') {
 				buf[i - (i && buf[i-1] == '\r')] = 0;
 				add_exclude(entry, base, baselen, which);
-- 
1.6.6.181.g5ee6

^ permalink raw reply related

* Re: svn:externals using git submodules
From: Michel Jouvin @ 2010-01-20 13:58 UTC (permalink / raw)
  To: git
In-Reply-To: <200705011121.17172.andyparkins@gmail.com>

Andy Parkins <andyparkins <at> gmail.com> writes:

> 
> Hello,
> 
> I've done this by hand as a proof of concept I suspect it would need loads of 
> work in git-svn to do it properly.  However, I thought I'd mention as part of 
> my "success with submodules" reports.
> 
> ... 
> Now we want that clone to be even more strongly linked to the parent - to the 
> extent that they share the same refs, etc:
> 
>  $ cd libswscale
>  $ rm -rf .git/refs .git/logs .git/info description config
>  $ ln -s ../../.git/refs .git/refs
>  $ ln -s ../../.git/logs .git/logs
>  $ ln -s ../../.git/info .git/info
>  $ ln -s ../../.git/config .git/config
>  $ ln -s ../../.git/description .git/description
> 
> ...
> Andy

I don't know if it's a good idea to follow-up on such an old entry... but I 
used your trick, Andy, and it works pretty well. With one exception: I am using 
Git on Windows and there is no symlinks on this OS. That means that you need to 
basically "recreate" the symlinks everytime you want to update the submodules. 
Not very handy but acceptable as they are not updated very often.

I have to check the list if there has been some new ways to achieve this. But 
I'm clearly in the case of svn:externals not tighten to a particular revision, 
which seems the difficult case for Git.

Cheers,

Michel

^ permalink raw reply

* Re: [PATCH 0/2] @{u} updates
From: Johannes Schindelin @ 2010-01-20 13:08 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Jeff King
In-Reply-To: <1263980322-4142-1-git-send-email-gitster@pobox.com>

Hi,

On Wed, 20 Jan 2010, Junio C Hamano wrote:

> Earlier I wondered if the approach Dscho's patch takes to teach the new
> @{upstream} syntax to substitute_branch_name() (hence dwim_ref()) without
> teaching it to interpret_branch_name() (hence strbuf_branchname()) was a
> bad idea.  I thought about this a bit more; there are some downsides for
> not doing so.
> 
> The first patch adds a handful of tests that show why strbuf_branchname()
> callers may also want to learn about the new syntax.  The second patch
> moves the logic to interpret_branch_name() to make them happier.

Looks good to me.

Ciao,
Dscho

^ permalink raw reply

* Re: git-status segmentation fault in master / OS X
From: Nguyen Thai Ngoc Duy @ 2010-01-20 12:58 UTC (permalink / raw)
  To: Jonathan del Strother; +Cc: Junio C Hamano, Jeff King, Git Mailing List
In-Reply-To: <57518fd11001200243v416aa5f9o37a3b5b92bef3b57@mail.gmail.com>

On 1/20/10, Jonathan del Strother <maillist@steelskies.com> wrote:
>  One thing I wondered about from that commit - shouldn't the "buf =
>  xmalloc(size);" on dir.c:252 be "buf = xmalloc(size+1);" ?  I haven't
>  really looked at the program flow there, so may be wrong...

You would also need to revert 66c3fa0 (Avoid writing to buffer in
add_excludes_from_file_1() - 2009-08-20) and see if it fixes the
problem. I think there is a potential memory corruption at "buf[i - (i
&& buf[i-1] == '\r')] = 0;". Don't know if it is the cause though.
-- 
Duy

^ permalink raw reply

* Re: What's cooking in git.git (Jan 2010, #06 draft)
From: Johannes Sixt @ 2010-01-20 12:37 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7veill3wgc.fsf@alter.siamese.dyndns.org>

Junio C Hamano schrieb:
> * jc/symbol-static (2010-01-18) 17 commits
>   (merged to 'next' on 2010-01-18 at d063267)

Now that compat/mingw.c does not call tm_to_time_t anymore, you could dig
up the patch that touches date.c from your reflog and put it back in this
series. I think that nobody minds that the topic alone will not build on
Windows, as long as it builds when it is merged to master.

> * jc/cache-unmerge (2009-12-25) 9 commits
>   (merged to 'next' on 2010-01-13 at 2290c44)
>  + rerere forget path: forget recorded resolution

Heads up: there is something fishy with the pathspec on Windows (foo\bar
is not recognized as foo/bar, but it should be). Will investigate.

-- Hannes

^ permalink raw reply

* gitweb: history link doesn't work properly
From: Jarek Poplawski @ 2010-01-20 12:08 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

Hi,

Clicking _history_ at Linus's or other git.kernel.org tree doesn't
show history of a file/directory any more (probably sth fresh).

Regards,
Jarek P.

^ permalink raw reply

* Re: git locate
From: Johannes Schindelin @ 2010-01-20 11:43 UTC (permalink / raw)
  To: Jakub Narebski; +Cc: John Tapsell, Git List
In-Reply-To: <201001201106.20739.jnareb@gmail.com>

Hi,

On Wed, 20 Jan 2010, Jakub Narebski wrote:

> On Wed, 20 Jan 2010, Johannes Schindelin wrote:
> > On Tue, 19 Jan 2010, Jakub Narebski wrote:
> >> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> >>> On Wed, 20 Jan 2010, John Tapsell wrote:
> >>> 
> >>>>   Could we add a:  git locate <filename>       or git find <filename>
> >>> 
> >>> How about "git ls-files \*<filename>"?
> >> 
> >> Or "git ls-files '*filename'...
> >> 
> >> ... but how to make an (git) alias for this?
> > 
> > Add something like this to your $HOME/.gitconfig:
> > 
> > [alias]
> >         locate = !sh -c 'git ls-files "\\*$1"' -
> 
> Thanks a lot, Dscho!
> 
> 
> I think it would be nice to have this trick 
> 
>   alias.<cmd> = !sh -c '<commands with $1, $@, $#>' -

Heh.  I initially read @$^&*#^&*@#$.

> described in git-config (alias) documentation.  Unfortunately I don't 
> understand this trick well enough to do it myself...

I tried to explain things properly in

http://git.wiki.kernel.org/index.php/Aliases#Advanced_aliases_with_arguments

Ciao,
Dscho

^ permalink raw reply

* Re: [PATCH 1/2] rev-parse --glob
From: Ilari Liusvaara @ 2010-01-20 11:08 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7vska13wt0.fsf@alter.siamese.dyndns.org>

On Wed, Jan 20, 2010 at 02:17:15AM -0800, Junio C Hamano wrote:
> Ilari Liusvaara <ilari.liusvaara@elisanet.fi> writes:
> 
> Looks fairly competently done.  Does this mean you've abandoned the --namespace
> series?  I don't mind reverting them from 'next'.

Pretty much.
 
> > +static int filter_refs(const char* ref, const unsigned char *sha, int flags,
> > +	void* data)
> > +{
> > +	struct ref_filter *filter = (struct ref_filter*)data;
> > +	if (fnmatch(filter->pattern, ref, 0))
> > +		return 0;
> 
> In many places (not just refs) we use "If leading path component matches,
> or fnmatch() says Ok" (e.g. builtin-for-each-ref.c, builtin_grep.c), and
> in some other places we only use fnmatch().  I think it is better to pick
> one convention, and adjust the other one to match, and my gut feeling is
> that "leading path or fnmatch()", while theologically might be messier,
> would be more useful in practice.  And that was why I did my "like this"
> patch http://article.gmane.org/gmane.comp.version-control.git/137492 that way.

That pattern of course has been edited before (and the namespace behavoiour
is implemented that way).

> My longer term desire is to consolidate these fnmatch() users to call a
> single helper function, and then perhaps replace fnmatch() in that helper
> function with something more powerful.  Although I do not personally care
> too much, people often wanted to have "path/**/leaf-that-is-deep" matcher.

Extended globs? Except that:

'git check-ref-format refs/heads/X+\(a\|b\) ; echo $?' => 0

And '+(a|b)' is wildcard in extended glob (not expressible with standard
glob operators). 

Extended globbing in gitignore would be useful as some have asked if there
is way to use regular expressions there (nope). At least extended globs
are equivalent to regular expressions in power.

 
> > @@ -674,6 +691,35 @@ int for_each_replace_ref(each_ref_fn fn, void *cb_data)
> >  	return do_for_each_ref("refs/replace/", fn, 13, 0, cb_data);
> >  }
> >  
> > +int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data)
> > +{
> > +	struct strbuf real_pattern = STRBUF_INIT;
> > +	struct ref_filter filter;
> > +	const char *has_glob_specials;
> > +	int ret;
> > +
> > +	if (prefixcmp(pattern, "refs/"))
> > +		strbuf_addstr(&real_pattern, "refs/");
> > +	strbuf_addstr(&real_pattern, pattern);
> > +
> > +	has_glob_specials = strpbrk(pattern, "?*[");
> 
> Would the need for this code hopefully disappear if we take the "leading
> path or fnmatch()" check?  If we still need this, we probably would want
> to add a has_glob_special() helper function not as a hardcoded srpbrk(),
> but in terms of is_glob_special() in git-compat-util.h.

'--glob=remotes/origin' and '--glob=remotes/origin*' are not the same. The
first gets DWIMed to '--glob=refs/remotes/origin/*'. The usual case for
globbing is globbing entiere namespace (name of one remote can be prefix
of another).

-Ilari

^ permalink raw reply

* Re: git locate
From: John Tapsell @ 2010-01-20 11:07 UTC (permalink / raw)
  To: Jakub Narebski; +Cc: Johannes Schindelin, Git List
In-Reply-To: <201001201106.20739.jnareb@gmail.com>

2010/1/20 Jakub Narebski <jnareb@gmail.com>:
> On Wed, 20 Jan 2010, Johannes Schindelin wrote:
>> On Tue, 19 Jan 2010, Jakub Narebski wrote:
>>> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>>>> On Wed, 20 Jan 2010, John Tapsell wrote:
>>>>
>>>>>   Could we add a:  git locate <filename>       or git find <filename>
>>>>
>>>> How about "git ls-files \*<filename>"?
>>>
>>> Or "git ls-files '*filename'...
>>>
>>> ... but how to make an (git) alias for this?
>>
>> Add something like this to your $HOME/.gitconfig:
>>
>> [alias]
>>         locate = !sh -c 'git ls-files "\\*$1"' -
>

I think having this alias by default would be very nice though - it's
pretty common to locate/find files, and it's nice to have unixy
equivalents in git.

If this really isn't wanted, then perhaps the ls-files command should
be bash auto-completed?

Thanks!

John

^ permalink raw reply

* Error when cloning gc'ed repository
From: Andre Loker @ 2010-01-20 10:45 UTC (permalink / raw)
  To: git

Hi,

First of all, my setup:

Server:
Win 2008
cygwin git 1.6.6, built from source
gitosis

Client:
Win 7
cygwin git 1.6.6, built from source

The server is hosting several repositories, they all work fine, except 
for one (at least I've experienced the following error with only one of 
the repos). For this repository, cloning fails if the repository has 
been repacked (or gc'ed) on the client side:

$ git clone git@theserver:the/repository.git
Initialized empty Git repository in /e/Temp/dr/.git/
remote: Counting objects: 1396, done.
remote: Compressing objects: 100% (654/654), done.
fatal: The remote end hung up unexpectedly
fatal: early EOFs:  47% (657/1396)
fatal: index-pack failed

However, if I unpack the objects completely and delete the pack file, I 
can clone the repository without any problem:

$ git clone git@theserver:the/repository.git
Initialized empty Git repository in /e/Temp/dr/.git/
remote: Counting objects: 1396, done.
remote: Compressing objects: 100% (1293/1293), done.
remote: Total 1396 (delta 639), reused 0 (delta 0)
Receiving objects: 100% (1396/1396), 4.99 MiB | 1.70 MiB/s, done.
Resolving deltas: 100% (639/639), done.

fsck shows no error

Does this problem sound familiar to anyone? May it's a network issue, 
but other repositories (also larger ones) work flawlessly even when in a 
packed state. Any help is appreciated!

Kind regards,
Andre Loker

P.S.:

Here's a trace:
$ GIT_TRACE=1 git clone git@theserver:the/repository.git
trace: built-in: git 'clone' 'git@theserver:the/repository.git'
Initialized empty Git repository in /e/Temp/dr/.git/
trace: run_command: 'ssh' 'git@theserver' 'git-upload-pack 
'\''the/repository.git'\'''
trace: run_command: 'index-pack' '--stdin' '-v' '--fix-thin' 
'--keep=fetch-pack 5208 on Phobos'
trace: exec: 'git' 'index-pack' '--stdin' '-v' '--fix-thin' 
'--keep=fetch-pack 5208 on Phobos'
remote: Counting objects: 1396, done.
remote: Compressing objects:  19% (125/654)   race: exec: 
'git-index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 5208 on 
Phobos'
remote: Compressing objects:  21% (138/654)
remote: Compressing objects: 100% (654/654), done.
fatal: The remote end hung up unexpectedly
fatal: early EOFs:  88% (1229/1396), 4.76 MiB | 9.23 MiB/s
fatal: index-pack failed

And here's a trace of a successful run:

$ GIT_TRACE=1 git clone git@theserver:the/repository.git
trace: built-in: git 'clone' 'git@theserver:the/repository.git'
Initialized empty Git repository in /e/Temp/dr/.git/
trace: run_command: 'ssh' 'git@theserver' 'git-upload-pack 
'\''the/repository.git'\'''
trace: run_command: 'index-pack' '--stdin' '-v' '--fix-thin' 
'--keep=fetch-pack 4624 on Phobos'
trace: exec: 'git' 'index-pack' '--stdin' '-v' '--fix-thin' 
'--keep=fetch-pack 4624 on Phobos'
trace: exec: 'git-index-pack' '--stdin' '-v' '--fix-thin' 
'--keep=fetch-pack 4624 on Phobos'
trace: run_command: 'git-index-pack' '--stdin' '-v' '--fix-thin' 
'--keep=fetch-pack 4624 on Phobos'
remote: Counting objects: 1396, done.
remote: Compressing objects: 100% (1293/1293), done.
remote: Total 1396 (delta 639), reused 0 (delta 0)
Receiving objects: 100% (1396/1396), 4.99 MiB | 1.68 MiB/s, done.
Resolving deltas: 100% (639/639), done.

^ permalink raw reply

* Re: git notes: notes
From: Johan Herland @ 2010-01-20 10:48 UTC (permalink / raw)
  To: Joey Hess; +Cc: git
In-Reply-To: <20100120050343.GA12860@gnu.kitenet.net>

On Wednesday 20 January 2010, Joey Hess wrote:
> Just a quick note that the new notes feature can break things that parse
> git log. For example a parser that assumes it can split the log on blank
> lines to separate the header and commit message, can easily become
> confused by the new blank line before "Notes:".

As Thomas already stated, git log is porcelain, and its output format is not 
set in stone. If you need a stable, script-friendly format, you should 
probably use the --format option, or use plumbing instead (such as e.g. git 
rev-list, which also has a --format option).

> Might be worth documenting in release notes, maybe too late now though.
> But really, it's all good, notes are a great feature.
> 
> PS, Has anyone thought about using notes to warn bisect away from
> commits that are known to be unbuildable or otherwise cause bisection
> trouble?

No, I haven't thought of that specific use case. Great idea! :)

BTW, since I started talking about git notes, people on this list have found 
more and more interesting use cases for them:

- Free-form text extension to the commit message

- Help in bug tracking with header-like lines such as:
    - Causes-Bug: #12345
    - Fixes-Bug: #54321

- Store after-the-fact "Acked-By", "Reviewed-By", etc. annotations

- In a repo converted from a merge-unfriendly VCS (such as CVS), use notes
  to identify merges without having to rewrite Git history (note that you
  can also use grafts, or "git replace" to accomplish this).

- Refer to related commits elsewhere in the repo (i.e. relationships that
  are not already apparent from the commit graph)

- When cherry-picking, add a reverse link from the source commit to the
  cherry-picked commit (since it may be of interest to people reviewing the
  source commit

- Rebasing public branches is forbidden, but if you wanted to change that,
  you could potentially help solve it by using notes to add reverse links
  from source commits to rebased commits, so that downstream people could
  more easily traverse your history when rebasing/merging their own
  branches.

- Initially, there were some discussion whether it could also be used to
  guide git blame to make better decisions, although I don't currently see
  how that would be done in practice.

In any case, it seems the notes idea may have the potential to become one of 
the more useful features in Git.


Have fun! :)

...Johan


[1]: ...almost 3 years ago (wow, time flies...):
     http://article.gmane.org/gmane.comp.version-control.git/46883

-- 
Johan Herland, <johan@herland.net>
www.herland.net

^ permalink raw reply

* how to clone from github behindd a proxy?
From: Tim Michelsen @ 2010-01-20  9:29 UTC (permalink / raw)
  To: git

Hello,
I tried to clone from behind a proxy firewall.

It doesn't work.

How shall I improve?

set GIT_CURL_VERBOSE=1

git config --global http.proxy proxy.example.com:8000

git clone http://github.com/rwl/traitsbackendpyjamas
Initialized empty Git repository in D:\sourcecode/traitsbackendpyjamas/.git/
* Couldn't find host github.com in the _netrc file; using defaults
* About to connect() to proxy proxy.example.com on port 8000 (#0)
*   Trying 149.233.100.7... * Connected to proxy.example.com (149.233.100.7)
port 8000 (#0)
 GET http://github.com/rwl/traitsbackendpyjamas/info/refs HTTP/1.1
User-Agent: git/1.6.5.1.1366.g8ed9
Host: github.com
Accept: */*
Proxy-Connection: Keep-Alive
Pragma: no-cache

* The requested URL returned error: 404
* Closing connection #0
fatal: http://github.com/rwl/traitsbackendpyjamas/info/refs not found: did you
run git update-server-info on the server?

Thanks in advance,
Timmie

^ permalink raw reply

* Re: git-status segmentation fault in master / OS X
From: Jonathan del Strother @ 2010-01-20 10:43 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jeff King, Git Mailing List
In-Reply-To: <7vd4157fwt.fsf@alter.siamese.dyndns.org>

2010/1/20 Junio C Hamano <gitster@pobox.com>:
> Jeff King <peff@peff.net> writes:
>
>> Could be a bad interaction between commits on nd/sparse and whatever was
>> done since it had branched. You can try rebasing nd/sparse and bisecting
>> a linearised version, like this:
>>
>>   bad_merge=73d66323
>>   # pretend we are on nd/sparse
>>   git checkout -b test $bad_merge^2
>>   # rebase onto what we merged onto
>>   git rebase $bad_merge^1
>
> That is a very good suggestion.
>
> You will get hit by a few conflicts during the rebase, but I managed to
> arrive at the same tree as $bad_merge after running the rebase procedure
> above.  Just for Jonathan's convenience, the result is at:
>
>  git://repo.or.cz/alt-git.git junk-linearized-nd-sparse-for-bisection
>
> I'll remove this after a few days.
>
>>   # now bisect. what we have now is presumably
>>   # bad (though you should probably double check)
>>   # and from the previous bisect we know that
>>   # everything pre-merge is good
>>   git bisect start
>>   git bisect good $bad_merge^1
>>   git bisect bad
>
> It would be interesting to hear the result of the test in the particular
> repository Jonathan is seeing the problem with.  The issue didn't
> reproduce for me, either but I only tried "having a staged change" case
> without any more detailed set-up.
>

OK, found some more interesting results from that.  The new bad commit is :

commit 66dce7bdb6742cb06433f8ef25441690b71c7995
Author: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date:   Thu Aug 20 20:47:01 2009 +0700

    Read .gitignore from index if it is skip-worktree


I still haven't been able to come up with a minimal test case, but gdb
gave me this:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x00000000000001c8
0x0000000100093e69 in excluded_1 (pathname=0x7fff5fbfd8b0
"shared/config/environments/.gitignore", pathlen=37,
basename=0x7fff5fbfd8cb ".gitignore", dtype=0x7fff5fbfd8a4,
el=0x7fff5fbfeb00) at dir.c:378
378					if (*exclude == '/')
(gdb) bt
#0  0x0000000100093e69 in excluded_1 (pathname=0x7fff5fbfd8b0
"shared/config/environments/.gitignore", pathlen=37,
basename=0x7fff5fbfd8cb ".gitignore", dtype=0x7fff5fbfd8a4,
el=0x7fff5fbfeb00) at dir.c:378
#1  0x0000000100093fd0 in excluded (dir=0x7fff5fbfeac0,
pathname=0x7fff5fbfd8b0 "shared/config/environments/.gitignore",
dtype_p=0x7fff5fbfd8a4) at dir.c:410
#2  0x0000000100094a10 in read_directory_recursive
(dir=0x7fff5fbfeac0, base=0x7fff5fbfdd20
"shared/config/environments/", baselen=27, check_only=0, simplify=0x0)
at dir.c:688
#3  0x0000000100094bfa in read_directory_recursive
(dir=0x7fff5fbfeac0, base=0x7fff5fbfe190 "shared/config/", baselen=14,
check_only=0, simplify=0x0) at dir.c:727
#4  0x0000000100094bfa in read_directory_recursive
(dir=0x7fff5fbfeac0, base=0x7fff5fbfe600 "shared/", baselen=7,
check_only=0, simplify=0x0) at dir.c:727
#5  0x0000000100094bfa in read_directory_recursive
(dir=0x7fff5fbfeac0, base=0x1000f48d0 "", baselen=0, check_only=0,
simplify=0x0) at dir.c:727
#6  0x0000000100094ecc in read_directory (dir=0x7fff5fbfeac0,
path=0x1000f48d0 "", len=0, pathspec=0x0) at dir.c:813
#7  0x0000000100093118 in fill_directory (dir=0x7fff5fbfeac0,
pathspec=0x0) at dir.c:70
#8  0x00000001000e85a7 in wt_status_collect_untracked
(s=0x7fff5fbfef80) at wt-status.c:346
#9  0x00000001000e86cc in wt_status_collect (s=0x7fff5fbfef80) at
wt-status.c:366
#10 0x000000010001e467 in cmd_status (argc=0, argv=0x7fff5fbff248,
prefix=0x0) at builtin-commit.c:1026
#11 0x0000000100001b52 in run_builtin (p=0x10013e3b0, argc=1,
argv=0x7fff5fbff248) at git.c:257
#12 0x0000000100001d04 in handle_internal_command (argc=1,
argv=0x7fff5fbff248) at git.c:401
#13 0x0000000100001e83 in main (argc=1, argv=0x7fff5fbff248) at git.c:482


"shared/config/environments/.gitignore" contained just
"_local_config.rb", no newline.  It seemed like adding or removing
characters from that file would 'fix' the problem, but changing them
wouldn't (ie the problem was always there when .gitignore was 16
bytes), but I'm not entirely sure because it continues to be a bit of
a Schrodinger bug.


One thing I wondered about from that commit - shouldn't the "buf =
xmalloc(size);" on dir.c:252 be "buf = xmalloc(size+1);" ?  I haven't
really looked at the program flow there, so may be wrong...

^ permalink raw reply

* What's cooking in git.git (Jan 2010, #06 draft)
From: Junio C Hamano @ 2010-01-20 10:24 UTC (permalink / raw)
  To: git

This is a draft copy of the real one I would send out after my git
Wednesday is over.

But before that day begins, I need to go to sleep ;-)

---

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'.  The ones
marked with '.' do not appear in any of the integration branches, but I am
still holding onto them.

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

* sr/gfi-options (2009-12-04) 7 commits
  (merged to 'next' on 2010-01-10 at 8b305fb)
 + fast-import: add (non-)relative-marks feature
 + fast-import: allow for multiple --import-marks= arguments
 + fast-import: test the new option command
 + fast-import: add option command
 + fast-import: add feature command
 + fast-import: put marks reading in its own function
 + fast-import: put option parsing code in separate functions

* tc/smart-http-restrict (2010-01-14) 5 commits
  (merged to 'next' on 2010-01-16 at 71fc84c)
 + Test t5560: Fix test when run with dash
  (merged to 'next' on 2010-01-06 at 82736cb)
 + Smart-http tests: Test http-backend without curl or a webserver
 + Smart-http tests: Break test t5560-http-backend into pieces
 + Smart-http tests: Improve coverage in test t5560
 + Smart-http: check if repository is OK to export before serving it

* tc/clone-v-progress (2009-12-26) 4 commits
  (merged to 'next' on 2010-01-10 at ec2bfd7)
 + clone: use --progress to force progress reporting
 + clone: set transport->verbose when -v/--verbose is used
 + git-clone.txt: reword description of progress behaviour
 + check stderr with isatty() instead of stdout when deciding to show progress

Perhaps needs an entry in the Release Notes, but otherwise looked Ok.

* jk/run-command-use-shell (2010-01-01) 8 commits
  (merged to 'next' on 2010-01-10 at 7479e2a)
 + t4030, t4031: work around bogus MSYS bash path conversion
 + diff: run external diff helper with shell
 + textconv: use shell to run helper
 + editor: use run_command's shell feature
 + run-command: optimize out useless shell calls
 + run-command: convert simple callsites to use_shell
 + t0021: use $SHELL_PATH for the filter script
 + run-command: add "use shell" option

Shuffled the commits in the topic, following J6t's suggestion in
http://thread.gmane.org/gmane.comp.version-control.git/136128

* jn/makefile (2010-01-06) 4 commits
  (merged to 'next' on 2010-01-10 at f5a5d42)
 + Makefile: consolidate .FORCE-* targets
 + Makefile: learn to generate listings for targets requiring special flags
 + Makefile: use target-specific variable to pass flags to cc
 + Makefile: regenerate assembler listings when asked

* jc/maint-1.6.1-checkout-m-custom-merge (2010-01-06) 1 commit
  (merged to 'next' on 2010-01-10 at df14116)
 + checkout -m path: fix recreating conflicts

* jh/commit-status (2010-01-13) 2 commits
  (merged to 'next' on 2010-01-13 at 0905d59)
 + t7502: test commit.status, --status and --no-status
 + commit: support commit.status, --status, and --no-status

I have already given ample time for people to react, but ended up getting
tired of waiting for tests to materialize and doing it myself, as I want
to close merge window for 1.7.0-rc0 by the end of next week to have the
final release early next month.

* tc/test-locate-httpd (2010-01-02) 1 commit
  (merged to 'next' on 2010-01-06 at 9d913e5)
 + t/lib-http.sh: Restructure finding of default httpd location

* js/windows (2010-01-15) 7 commits
 - Do not use date.c:tm_to_time_t() from compat/mingw.c
 - MSVC: Windows-native implementation for subset of Pthreads API
 - MSVC: Fix an "incompatible pointer types" compiler warning
 - Windows: avoid the "dup dance" when spawning a child process
 - Windows: simplify the pipe(2) implementation
 - Windows: boost startup by avoiding a static dependency on shell32.dll
 - Windows: disable Python

* dp/maint-1.6.5-fast-import-non-commit-tag (2010-01-14) 1 commit
  (merged to 'next' on 2010-01-16 at f95ea8e)
 + fast-import: tag may point to any object type

* nd/include-termios-for-osol (2010-01-11) 1 commit
  (merged to 'next' on 2010-01-16 at 3160c76)
 + Add missing #include to support TIOCGWINSZ on Solaris

* pc/uninteresting-submodule-disappear-upon-switch-branches (2010-01-11) 1 commit
  (merged to 'next' on 2010-01-16 at b06ca1a)
 + Remove empty directories when checking out a commit with fewer submodules

Instead of using unlink(2) that will never succeed, use rmdir(2) to remove
an empty directory, knowing that this won't harm a populated directory.

* jc/rerere (2009-12-04) 1 commit
  (merged to 'next' on 2010-01-10 at e295b7f)
 + Teach --[no-]rerere-autoupdate option to merge, revert and friends

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

* jc/conflict-marker-size (2010-01-16) 8 commits
  (merged to 'next' on 2010-01-18 at f1f6023)
 + rerere: honor conflict-marker-size attribute
 + rerere: prepare for customizable conflict marker length
 + conflict-marker-size: new attribute
 + rerere: use ll_merge() instead of using xdl_merge()
 + merge-tree: use ll_merge() not xdl_merge()
 + xdl_merge(): allow passing down marker_size in xmparam_t
 + xdl_merge(): introduce xmparam_t for merge specific parameters
 + git_attr(): fix function signature
 (this branch uses jc/cache-unmerge.)

* ag/maint-apply-too-large-p (2010-01-17) 1 commit
  (merged to 'next' on 2010-01-18 at 8bd106a)
 + builtin-apply.c: Skip filenames without enough components

* il/rev-namespace (2010-01-19) 2 commits
  (merged to 'next' on 2010-01-19 at 2dbc665)
 + Fix errors in t6018
  (merged to 'next' on 2010-01-18 at 3e68978)
 + rev-parse --namespace

This probably will be dropped and replaced with the --glob one, perhaps
with minor tweaks.

* jc/grep-author-all-match-implicit (2010-01-17) 1 commit
 - "log --author=me --grep=it" should find intersection, not union

* ag/patch-header-verify (2010-01-18) 1 commit
  (merged to 'next' on 2010-01-18 at 2cd0ddc)
 + builtin-apply.c: fix the --- and +++ header filename consistency check

* il/branch-set-upstream (2010-01-18) 2 commits
  (merged to 'next' on 2010-01-18 at b9b0993)
 + branch: warn and refuse to set a branch as a tracking branch of itself.
 + Add branch --set-upstream

* il/remote-updates (2010-01-18) 1 commit
  (merged to 'next' on 2010-01-18 at 5c3e805)
 + Add git remote set-url

* bw/cvsimport (2010-01-19) 3 commits
  (merged to 'next' on 2010-01-19 at 63f4c8d)
 + cvsimport: standarize system() calls to external git tools
 + cvsimport: standarize open() calls to external git tools
 + cvsimport: modernize callouts to git subcommands

* jc/checkout-merge-base (2010-01-19) 1 commit
  (merged to 'next' on 2010-01-19 at 3665110)
 + Fix "checkout A..." synonym for "checkout A...HEAD" on Windows

* jc/maint-refresh-index-is-optional-for-status (2010-01-19) 1 commit
 - status: don't require the repository to be writable

--------------------------------------------------
[Will merge to 'master' soon unless somebody complains]

* rr/core-tutorial (2010-01-16) 1 commit
  (merged to 'next' on 2010-01-16 at d9dd8bd)
 + Documentation: Update git core tutorial clarifying reference to scripts

* il/push-set-upstream (2010-01-16) 1 commit
  (merged to 'next' on 2010-01-16 at e3a7a60)
 + Add push --set-upstream

* jk/warn-author-committer-after-commit (2010-01-17) 6 commits
  (merged to 'next' on 2010-01-17 at c2bb7fd)
 + user_ident_sufficiently_given(): refactor the logic to be usable from elsewhere
 + commit.c::print_summary: do not release the format string too early
  (merged to 'next' on 2010-01-16 at f22c077)
 + commit: allow suppression of implicit identity advice
 + commit: show interesting ident information in summary
 + strbuf: add strbuf_addbuf_percentquote
 + strbuf_expand: convert "%%" to "%"

* jc/ident (2010-01-17) 5 commits
  (merged to 'next' on 2010-01-19 at 9fba1c0)
 + ident.c: replace fprintf with fputs to suppress compiler warning
  (merged to 'next' on 2010-01-17 at 625670d)
 + user_ident_sufficiently_given(): refactor the logic to be usable from elsewhere
 + ident.c: treat $EMAIL as giving user.email identity explicitly
  (merged to 'next' on 2010-01-10 at f1f9ded)
 + ident.c: check explicit identity for name and email separately
 + ident.c: remove unused variables

* tr/http-push-ref-status (2010-01-08) 6 commits
  (merged to 'next' on 2010-01-16 at 7e872ac)
 + transport-helper.c::push_refs(): emit "no refs" error message
 + transport-helper.c::push_refs(): ignore helper-reported status if ref is not to be pushed
 + transport.c::transport_push(): make ref status affect return value
 + refactor ref status logic for pushing
 + t5541-http-push.sh: add test for unmatched, non-fast-forwarded refs
 + t5541-http-push.sh: add tests for non-fast-forward pushes

* bk/fix-relative-gitdir-file (2010-01-08) 2 commits
  (merged to 'next' on 2010-01-16 at cc4ae57)
 + Handle relative paths in submodule .git files
 + Test update-index for a gitlink to a .git file

* sd/cd-p-show-toplevel (2010-01-12) 2 commits
  (merged to 'next' on 2010-01-16 at 57d6d31)
 + Use $(git rev-parse --show-toplevel) in cd_to_toplevel().
 + Add 'git rev-parse --show-toplevel' option.

Avoid having to use "cd -P" that may not be available on some platforms'
shells.

* jc/symbol-static (2010-01-18) 17 commits
  (merged to 'next' on 2010-01-18 at d063267)
 + Replace parse_blob() with an explanatory comment
 + symlinks.c: remove unused functions
 + object.c: remove unused functions
 + strbuf.c: remove unused function
 + sha1_file.c: remove unused function
 + mailmap.c: remove unused function
  (merged to 'next' on 2010-01-17 at d7346b1)
 + utf8.c: mark file-local function static
 + submodule.c: mark file-local function static
 + quote.c: mark file-local function static
 + remote-curl.c: mark file-local function static
 + read-cache.c: mark file-local functions static
 + parse-options.c: mark file-local function static
 + entry.c: mark file-local function static
 + http.c: mark file-local functions static
 + pretty.c: mark file-local function static
 + builtin-rev-list.c: mark file-local function static
 + bisect.c: mark file-local function static

Mark file-local symbols "static", and remove unused functions.

--------------------------------------------------
[Will merge to 'master' after a bit more cooking in 'next']

* nd/status-partial-refresh (2010-01-17) 2 commits
  (merged to 'next' on 2010-01-19 at 64f0c0b)
 + rm: only refresh entries that we may touch
  (merged to 'next' on 2010-01-16 at f77bc8f)
 + status: only touch path we may need to check

* mh/rebase-fixup (2010-01-14) 23 commits
  (merged to 'next' on 2010-01-16 at 7ccb228)
 + rebase -i: Retain user-edited commit messages after squash/fixup conflicts
 + t3404: Set up more of the test repo in the "setup" step
 + rebase -i: For fixup commands without squashes, do not start editor
 + rebase -i: Change function make_squash_message into update_squash_message
 + rebase -i: Extract function do_with_author
 + rebase -i: Handle the author script all in one place in do_next
 + rebase -i: Extract a function "commit_message"
 + rebase -i: Simplify commit counting for generated commit messages
 + rebase -i: Improve consistency of commit count in generated commit messages
 + t3404: Test the commit count in commit messages generated by "rebase -i"
 + rebase -i: Introduce a constant AMEND
 + rebase -i: Introduce a constant AUTHOR_SCRIPT
 + rebase -i: Document how temporary files are used
 + rebase -i: Use symbolic constant $MSG consistently
 + rebase -i: Use "test -n" instead of "test ! -z"
 + rebase -i: Inline expression
 + rebase -i: Remove dead code
 + rebase -i: Make the condition for an "if" more transparent
  (merged to 'next' on 2010-01-12 at e84eab0)
 + rebase-i: Ignore comments and blank lines in peek_next_command
 + lib-rebase: Allow comments and blank lines to be added to the rebase script
 + lib-rebase: Provide clearer debugging info about what the editor did
 + Add a command "fixup" to rebase --interactive
 + t3404: Use test_commit to set up test repository
 (this branch is used by ns/rebase-auto-squash.)

* ns/rebase-auto-squash (2009-12-08) 1 commit
  (merged to 'next' on 2010-01-06 at da4e2f5)
 + rebase -i --autosquash: auto-squash commits
 (this branch uses mh/rebase-fixup.)

* da/difftool (2010-01-15) 10 commits
  (merged to 'next' on 2010-01-16 at 609f0da)
 + difftool: Update copyright notices to list each year separately
 + difftool: Use eval to expand '--extcmd' expressions
 + difftool: Add '-x' and as an alias for '--extcmd'
 + t7800-difftool.sh: Simplify the --extcmd test
  (merged to 'next' on 2010-01-10 at 749c870)
 + git-diff.txt: Link to git-difftool
 + difftool: Allow specifying unconfigured commands with --extcmd
 + difftool--helper: Remove use of the GIT_MERGE_TOOL variable
 + difftool--helper: Update copyright and remove distracting comments
  (merged to 'next' on 2010-01-06 at e957395)
 + git-difftool: Add '--gui' for selecting a GUI tool
 + t7800-difftool: Set a bogus tool for use by tests

* mm/conflict-advice (2010-01-12) 1 commit
  (merged to 'next' on 2010-01-16 at b83be11)
 + Be more user-friendly when refusing to do something because of conflict.

* jc/maint-strbuf-add-fix-doubling (2010-01-12) 1 commit
  (merged to 'next' on 2010-01-16 at 5959eee)
 + strbuf_addbuf(): allow passing the same buf to dst and src

* jc/maint-1.6.4-grep-lookahead (2010-01-10) 1 commit
  (merged to 'next' on 2010-01-13 at 20f8f4b)
 + grep: optimize built-in grep by skipping lines that do not hit
 (this branch is used by jc/grep-lookahead and jc/maint-grep-lookahead.)

Optimize the "line-by-line" internal grep by skiping en masse over lines
that cannot possibly match.

* jc/maint-grep-lookahead (2010-01-12) 0 commits
 (this branch uses jc/maint-1.6.4-grep-lookahead; is used by jc/grep-lookahead.)

Early conflict resolution for the above for recent git.

* jc/grep-lookahead (2010-01-15) 4 commits
  (merged to 'next' on 2010-01-17 at 4a5be2d)
 + grep --no-index: allow use of "git grep" outside a git repository
 + grep: prepare to run outside of a work tree
  (merged to 'next' on 2010-01-13 at 20f8f4b)
 + grep: rip out pessimization to use fixmatch()
 + grep: rip out support for external grep
 (this branch uses jc/maint-1.6.4-grep-lookahead and jc/maint-grep-lookahead.)

* jl/submodule-diff (2010-01-18) 4 commits
 - Performance optimization for detection of modified submodules
  (merged to 'next' on 2010-01-17 at 525075b)
 + git status: Show uncommitted submodule changes too when enabled
  (merged to 'next' on 2010-01-16 at 0a99e3c)
 + Teach diff that modified submodule directory is dirty
 + Show submodules as modified when they contain a dirty work tree

* jc/ls-files-ignored-pathspec (2010-01-08) 4 commits
  (merged to 'next' on 2010-01-16 at d36016a)
 + ls-files: fix overeager pathspec optimization
 + read_directory(): further split treat_path()
 + read_directory_recursive(): refactor handling of a single path into a separate function
 + t3001: test ls-files -o ignored/dir

* js/exec-error-report (2010-01-12) 4 commits
  (merged to 'next' on 2010-01-16 at 0e28d02)
 + Improve error message when a transport helper was not found
 + start_command: detect execvp failures early
 + run-command: move wait_or_whine earlier
 + start_command: report child process setup errors to the parent's stderr

* jc/fix-tree-walk (2009-09-14) 7 commits
  (merged to 'next' on 2010-01-13 at 1c01b87)
 + read-tree --debug-unpack
 + unpack-trees.c: look ahead in the index
 + unpack-trees.c: prepare for looking ahead in the index
 + Aggressive three-way merge: fix D/F case
 + traverse_trees(): handle D/F conflict case sanely
 + more D/F conflict tests
 + tests: move convenience regexp to match object names to test-lib.sh

Resurrected from "Ejected" category.  This is fix for a tricky codepath
and testing and improving before it hits 'master' is greatly appreciated.
(I have been using this in my private build for some time).

* jc/cache-unmerge (2009-12-25) 9 commits
  (merged to 'next' on 2010-01-13 at 2290c44)
 + rerere forget path: forget recorded resolution
 + rerere: refactor rerere logic to make it independent from I/O
 + rerere: remove silly 1024-byte line limit
 + resolve-undo: teach "update-index --unresolve" to use resolve-undo info
 + resolve-undo: "checkout -m path" uses resolve-undo information
 + resolve-undo: allow plumbing to clear the information
 + resolve-undo: basic tests
 + resolve-undo: record resolved conflicts in a new index extension section
 + builtin-merge.c: use standard active_cache macros
 (this branch is used by jc/conflict-marker-size.)

* ap/merge-backend-opts (2008-07-18) 7 commits
  (merged to 'next' on 2010-01-18 at cb1f6b7)
 + Document that merge strategies can now take their own options
 + Extend merge-subtree tests to test -Xsubtree=dir.
 + Make "subtree" part more orthogonal to the rest of merge-recursive.
 + pull: Fix parsing of -X<option>
 + Teach git-pull to pass -X<option> to git-merge
 + git merge -X<option>
 + git-merge-file --ours, --theirs

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

* js/refer-upstream (2010-01-19) 3 commits
 - Teach @{upstream} syntax to strbuf_branchanme()
 - t1506: more test for @{upstream} syntax
 - Introduce <branch>@{upstream} notation

Updated to teach the new syntax to commands like "checkout" and "merge"
that want to behave better when they know what were given was a branch
name, not a random SHA-1 or a full refname.

* jh/notes (2010-01-17) 23 commits
 - builtin-gc: Teach the new --notes option to garbage-collect notes
 - Notes API: gc_notes(): Prune notes that belong to non-existing objects
 - t3305: Verify that removing notes triggers automatic fanout consolidation
 - builtin-notes: Teach -d option for deleting existing notes
 - Teach builtin-notes to remove empty notes
 - Teach notes code to properly preserve non-notes in the notes tree
 - t3305: Verify that adding many notes with git-notes triggers increased fanout
 - t3301: Verify successful annotation of non-commits
 - Builtin-ify git-notes
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - Notes API: write_notes_tree(): Store the notes tree in the database
 - Notes API: for_each_note(): Traverse the entire notes tree with a callback
 - Notes API: get_note(): Return the note annotating the given object
 - Notes API: remove_note(): Remove note objects from the notes tree structure
 - Notes API: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Add tests for checking correct handling of $GIT_NOTES_REF and core.notesRef
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor non-functional fixes to notes.c
  (merged to 'next' on 2010-01-02 at ae42130)
 + Add more testcases to test fast-import of notes
 + Rename t9301 to t9350, to make room for more fast-import tests
 + fast-import: Proper notes tree manipulation

Updated with a re-roll.

* jh/gitweb-cached (2010-01-13) 9 commits
 - gitweb: File based caching layer (from git.kernel.org)
 - gitweb: Convert output to using indirect file handle
 - gitweb: cleanup error message produced by undefined $site_header
 - gitweb: add a get function to compliment print_sort_th
 - gitweb: add a get function to compliment print_local_time
 - gitweb: Makefile improvements
 - gitweb: Add option to force version match
 - gitweb: change die_error to take "extra" argument for extended die information
 - gitweb: Load checking

Replaced with a re-roll.  Update to t9500 is probably needed.

* jc/branch-d (2009-12-29) 1 commit
  (merged to 'next' on 2010-01-10 at 61a14b7)
 + branch -d: base the "already-merged" safety on the branch it merges with

^ 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