threads / discuss / 16819

What's cooking in git.git (Dec 2008, #03; Sun, 21)

Subject: What's cooking in git.git (Dec 2008, #03; Sun, 21)

## tl;dr

8 messages between Dec 21, 2008 and Dec 24, 2008.

replies: 7people: 4as markdown or json

Junio C Hamano· Dec 21, 2008, 12:23 UTC · lore

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 branches, but I am still holding onto them.

The topics list the commits in reverse chronological order. The topics meant to be merged to the maintenance series have "maint-" in their names.

As we have already passed -rc3, things queued in 'next' let alone 'pu' are unlikely to be merged to 'master' by the end of year unless otherwise noted.

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

* mk/gitweb-feature (Mon Dec 15 22:16:19 2008 -0800) 1 commit
 - gitweb: unify boolean feature subroutines
* cb/merge-recursive-fix (Mon Dec 15 02:41:24 2008 -0800) 3 commits
 - Merge branch 'cb/maint-merge-recursive-fix' into cb/merge-
   recursive-fix
 - merge-recursive: do not clobber untracked working tree garbage
 - modify/delete conflict resolution overwrites untracked file
* cb/maint-merge-recursive-fix (Sun Dec 14 19:40:09 2008 -0800) 2 commits
 - merge-recursive: do not clobber untracked working tree garbage
 - modify/delete conflict resolution overwrites untracked file
* js/notes (Sat Dec 20 13:06:03 2008 +0100) 4 commits
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes
* js/rebase-i-p (Mon Dec 15 11:05:31 2008 +0100) 2 commits
 - rebase -i -p: Fix --continue after a merge could not be redone
 - Show a failure of rebase -p if the merge had a conflict

I am undecided whether I should include these in 1.6.1 and have been waiting for comments from Dscho.

---------------------------------------------------------------- [Post 1.6.1 items]

* wp/add-p-goto (Thu Dec 4 10:22:40 2008 +0000) 2 commits
 + Add 'g' command to go to a hunk
 + Add subroutine to display one-line summary of hunks
* jn/gitweb-blame (Thu Dec 11 01:33:29 2008 +0100) 3 commits
 - gitweb: cache $parent_commit info in git_blame()
 - gitweb: A bit of code cleanup in git_blame()
 - gitweb: Move 'lineno' id from link to row element in git_blame

I've briefly looked at the resurrection of Ajaxy blame that comes on top of this series and it looked promising.

* mv/um-pdf (Wed Dec 10 23:44:50 2008 +0100) 1 commit
 - Add support for a pdf version of the user manual

I do not have a new enough combination of dblatex and asciidoc myself but this may help interested people.

* np/auto-thread (Mon Dec 15 20:44:30 2008 +0100) 3 commits
 + Force t5302 to use a single thread
 + pack-objects: don't use too many threads with few objects
 + autodetect number of CPUs by default when using threads
* sc/gitweb-category (Fri Dec 12 00:45:12 2008 +0100) 3 commits
 - gitweb: Optional grouping of projects by category
 - gitweb: Split git_project_list_body in two functions
 - gitweb: Modularized git_get_project_description to be more generic
* gb/gitweb-patch (Thu Dec 18 08:13:19 2008 +0100) 4 commits
 - gitweb: link to patch(es) view in commit(diff) and (short)log view
 - gitweb: add patches view
 - gitweb: change call pattern for git_commitdiff
 - gitweb: add patch view
Updated series.
* lt/reset-merge (Wed Dec 3 18:00:12 2008 -0800) 2 commits
 + Document "git-reset --merge"
 + Add 'merge' mode to 'git reset'
* wp/add-patch-find (Thu Nov 27 04:08:03 2008 +0000) 3 commits
 . In add --patch, Handle K,k,J,j slightly more gracefully.
 . Add / command in add --patch
 . git-add -i/-p: Change prompt separater from slash to comma

I am still holding onto this earlier topic to add '/' subcommand to allow finding a hunk with given text, but I'd rather not merge/rebase it on top of wp/add-p-goto series myself. Waiting for a reroll.

* cb/mergetool (Fri Dec 12 21:48:41 2008 +0000) 4 commits
 - mergetool: Don't keep temporary merge files unless told to
 - mergetool: Add prompt to continue after failing to merge a file
 - Add -y/--no-prompt option to mergetool
 - Fix some tab/space inconsistencies in git-mergetool.sh

Updated series. Waiting for comments from the original author (Ted) and other interested parties.

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

Nothing cooking was "not so trivial but want to have in final".

---------------------------------------------------------------- [Will merge to "master" soon]

What are you looking for?  We are in -rc ;-)

---------------------------------------------------------------- [On Hold]

* kb/am-directory (Fri Aug 29 15:27:50 2008 -0700) 1 commit
 . git-am: Pass the --directory option through to git-apply

A reroll of this by Simon Schubert triggered a series to fix a parameter propagation bug, and another reroll to add "git am --directory=path/" should be much easier now. I am not likely to use the feature myself, so it is up to intrested volunteers to carry it forward.

* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 2 commits
 + blame: show "previous" information in --porcelain/--incremental
   format
 + git-blame: refactor code to emit "porcelain format" output
* ds/uintmax-config (Mon Nov 3 09:14:28 2008 -0900) 1 commit
 - autoconf: Enable threaded delta search when pthreads are supported
Rebased to 'master', that introduced NO_PTHREADS.
* cc/bisect-replace (Mon Nov 24 22:20:30 2008 +0100) 9 commits
 - bisect: add "--no-replace" option to bisect without using replace
   refs
 - rev-list: make it possible to disable replacing using "--no-
   bisect-replace"
 - bisect: use "--bisect-replace" options when checking merge bases
 - merge-base: add "--bisect-replace" option to use fixed up revs
 - commit: add "bisect_replace_all" prototype to "commit.h"
 - rev-list: add "--bisect-replace" to list revisions with fixed up
   history
 - Documentation: add "git bisect replace" documentation
 - bisect: add test cases for "git bisect replace"
 - bisect: add "git bisect replace" subcommand

I really hate the idea of introducing a potentially much more useful replacement of the existing graft mechanism and tie it very tightly to bisect, making it unusable from outside.

 (1) I do not think "bisect replace" workflow is a practical and usable
     one;
 (2) The underlying mechanism to express "this object replaces that other
     object" is much easier to work with than what the graft does which is
     "the parents of this commit are these", and idea to use the normal
     ref to point at them means this can potentially be used for
     transferring the graft information across repositories, which the
     current graft mechanism cannot do.
 (3) Because I like the aspect (2) of this series so much, it deeply
     disappoints and troubles me that this is implemented minimally near
     the surface, and that it is controlled by the "bisect" Porcelain
     alone, by explicitly passing command line arguments.

I think a mechanism like this should be added to replace grafts, but it should always be enabled for normal revision traversal operation, while always disabled for object enumeration and transfer operation (iow, fsck, fetch and push should use the real ancestry information recorded in the underlying objects, while rev-list, log, etc. should always use the replaced objects). I have a suspicion that even cat-file could honor it.

* nd/narrow (Sun Nov 30 17:54:38 2008 +0700) 17 commits
 - wt-status: show sparse checkout info
 - Introduce default sparse patterns (core.defaultsparse)
 - checkout: add new options to support sparse checkout
 - clone: support sparse checkout with --sparse-checkout option
 - unpack_trees(): add support for sparse checkout
 - unpack_trees(): keep track of unmerged entries
 - Introduce "sparse patterns"
 - Merge branch 'master' into nd/narrow
 + t2104: touch portability fix
 + grep: skip files outside sparse checkout area
 + checkout_entry(): CE_NO_CHECKOUT on checked out entries.
 + Prevent diff machinery from examining worktree outside sparse
   checkout
 + ls-files: Add tests for --sparse and friends
 + update-index: add --checkout/--no-checkout to update
   CE_NO_CHECKOUT bit
 + update-index: refactor mark_valid() in preparation for new options
 + ls-files: add options to support sparse checkout
 + Introduce CE_NO_CHECKOUT bit

Kicked back to 'on hold' until 1.6.1 final by popular demand; will be dropped from 'next' (see recent discussion on the interaction between the checkout area and commands such as "grep").

* jc/clone-symref-2 (Sat Nov 29 23:38:21 2008 -0800) 7 commits
 - clone: test the new HEAD detection logic
 - Merge commit 'HEAD@{2}' into HEAD
 - upload-pack: send the HEAD information
 - clone: find the current branch more explicitly
 - connect.c::read_extra_info(): find where HEAD points at
 - connect.c::read_extra_info(): prepare to receive more than server
   capabilities
 - get_remote_heads(): refactor code to read "server capabilities"
This is no way meant for 1.6.1, let alone next, yet.
* jc/send-pack-tell-me-more (Thu Mar 20 00:44:11 2008 -0700) 1 commit
 - "git push": tellme-more protocol extension

This seems to have a deadlock during communication between the peers. Someone needs to pick up this topic and resolve the deadlock before it can continue.

* jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit
 - diff: enable "too large a rename" warning when -M/-C is explicitly
   asked for

This would be the right thing to do for command line use, but gitk will be hit due to tcl/tk's limitation, so I am holding this back for now.

* jc/stripspace (Sun Mar 9 00:30:35 2008 -0800) 6 commits
 - git-am --forge: add Signed-off-by: line for the author
 - git-am: clean-up Signed-off-by: lines
 - stripspace: add --log-clean option to clean up signed-off-by:
   lines
 - stripspace: use parse_options()
 - Add "git am -s" test
 - git-am: refactor code to add signed-off-by line for the committer
* jc/post-simplify (Fri Aug 15 01:34:51 2008 -0700) 2 commits
 . revision --simplify-merges: incremental simplification
 . revision --simplify-merges: prepare for incremental simplification
* jc/clone-symref (Sat Nov 29 23:38:21 2008 -0800) 6 commits
 . clone: test the new HEAD detection logic
 . Merge sender side of "symbolic-ref" protocol extension
 . upload-pack: implement protocol extension "symbolic-ref"
 . clone: find the current branch more explicitly
 . get_remote_heads(): do not assume that the operation is one-way
 . upload-pack.c: refactor receive_needs()
* jk/valgrind (Thu Oct 23 04:30:45 2008 +0000) 2 commits
 . valgrind: ignore ldso errors
 . add valgrind support in test scripts
* jc/apply (Sun Sep 7 14:36:24 2008 -0700) 1 commit
 . WIP
Jakub Narebski· Dec 21, 2008, 19:03 UTC · re: Junio C Hamano · lore

Re: What's cooking in git.git (Dec 2008, #03; Sun, 21)

Junio C Hamano <gitster@pobox.com> writes:
Show 5 quoted lines
> ----------------------------------------------------------------
> [New Topics]
> 
> * mk/gitweb-feature (Mon Dec 15 22:16:19 2008 -0800) 1 commit
>  - gitweb: unify boolean feature subroutines
The last version, I assume? IMHO it is a good change.
 
Show 5 quoted lines
> * js/notes (Sat Dec 20 13:06:03 2008 +0100) 4 commits
>  - Add an expensive test for git-notes
>  - Speed up git notes lookup
>  - Add a script to edit/inspect notes
>  - Introduce commit notes
Nice to see it resurrected.
 
Show 7 quoted lines
> * jn/gitweb-blame (Thu Dec 11 01:33:29 2008 +0100) 3 commits
>  - gitweb: cache $parent_commit info in git_blame()
>  - gitweb: A bit of code cleanup in git_blame()
>  - gitweb: Move 'lineno' id from link to row element in git_blame
> 
> I've briefly looked at the resurrection of Ajaxy blame that comes on top
> of this series and it looked promising.
There are a few issues to test and to resolve with Ajaxy blame
(blame_incremental):
 * does it work correctly with browsers other than Mozilla 1.17.2
   and Konqueror 3.5.3?
 * what gives better performance, and better visible performance
   on the client side: onreadystatechange or setInterval (and what
   interval)?
 * is it better to do more work on the server side, and for example
   send JSON with ready commits data; it is better to enable autoflush
   if sending raw "git blame --incremental" output?
 * the 'how long it took to generate page' patch should be decoupled,
   improved, and send separately...
 
> * sc/gitweb-category (Fri Dec 12 00:45:12 2008 +0100) 3 commits
>  - gitweb: Optional grouping of projects by category
>  - gitweb: Split git_project_list_body in two functions
>  - gitweb: Modularized git_get_project_description to be more generic
I think it is not yet finished, but it looks nice.
 
Show 7 quoted lines
> * gb/gitweb-patch (Thu Dec 18 08:13:19 2008 +0100) 4 commits
>  - gitweb: link to patch(es) view in commit(diff) and (short)log view
>  - gitweb: add patches view
>  - gitweb: change call pattern for git_commitdiff
>  - gitweb: add patch view
> 
> Updated series.

I'd have to review resend series, but I think it would get Ack from me.

> * cc/bisect-replace (Mon Nov 24 22:20:30 2008 +0100) 9 commits
> * nd/narrow (Sun Nov 30 17:54:38 2008 +0700) 17 commits
> * jc/clone-symref-2 (Sat Nov 29 23:38:21 2008 -0800) 7 commits
> * jc/clone-symref (Sat Nov 29 23:38:21 2008 -0800) 6 commits
Those are interesting...
> * jc/apply (Sun Sep 7 14:36:24 2008 -0700) 1 commit
>  . WIP
Uh?
-- 
Jakub Narebski
Poland
ShadeHawk on #git
Jeff King· Dec 23, 2008, 12:05 UTC · re: Junio C Hamano · lore

Re: What's cooking in git.git (Dec 2008, #03; Sun, 21)

On Sun, Dec 21, 2008 at 04:23:22AM -0800, Junio C Hamano wrote:
Show 5 quoted lines
> * js/notes (Sat Dec 20 13:06:03 2008 +0100) 4 commits
>  - Add an expensive test for git-notes
>  - Speed up git notes lookup
>  - Add a script to edit/inspect notes
>  - Introduce commit notes

I haven't had much time to really look at this closely, and I probably won't for another week or so due to the holidays. But from my cursory examination, I think I want to propose something that is a bit different. So if nobody objects (and I think Dscho already said he was going to be out of touch for two weeks due to the holidays) I'd like this to remain in pu for the time being.

-Peff
Johannes Schindelin· Dec 23, 2008, 16:26 UTC · re: Jeff King · lore

Re: What's cooking in git.git (Dec 2008, #03; Sun, 21)

Hi,
On Tue, 23 Dec 2008, Jeff King wrote:
Show 12 quoted lines
> On Sun, Dec 21, 2008 at 04:23:22AM -0800, Junio C Hamano wrote:
> 
> > * js/notes (Sat Dec 20 13:06:03 2008 +0100) 4 commits
> >  - Add an expensive test for git-notes
> >  - Speed up git notes lookup
> >  - Add a script to edit/inspect notes
> >  - Introduce commit notes
> 
> I haven't had much time to really look at this closely, and I probably 
> won't for another week or so due to the holidays. But from my cursory 
> examination, I think I want to propose something that is a bit 
> different.
Could you be a bit more, like, specific, please?

Ciao, Dscho

Jeff King· Dec 23, 2008, 16:38 UTC · re: Johannes Schindelin · lore

Re: What's cooking in git.git (Dec 2008, #03; Sun, 21)

On Tue, Dec 23, 2008 at 05:26:01PM +0100, Johannes Schindelin wrote:
Show 6 quoted lines
> > I haven't had much time to really look at this closely, and I probably 
> > won't for another week or so due to the holidays. But from my cursory 
> > examination, I think I want to propose something that is a bit 
> > different.
> 
> Could you be a bit more, like, specific, please?

The way that GIT_NOTES_REF and core.notesref work aren't what I had in mind. I imagined something more amenable to having lots of different metadata notes. Refer to the other messages I have written on "naming".

I don't want to hold up progress, so if people want those patches in "next", then go for it. What I really meant by my email was that I think my suggested changes might be simpler to see as a re-roll rather than patches on top, but since I can't work on them for a while, I didn't want Junio to take silence as "OK, nobody has complained, so it's time for this to graduate to next." But again, if people are ready to start playing with this and building on top of it, then I don't want to stand in the way.

-Peff
Johannes Schindelin· Dec 23, 2008, 16:52 UTC · re: Jeff King · lore

Re: What's cooking in git.git (Dec 2008, #03; Sun, 21)

Hi,
On Tue, 23 Dec 2008, Jeff King wrote:
Show 12 quoted lines
> On Tue, Dec 23, 2008 at 05:26:01PM +0100, Johannes Schindelin wrote:
> 
> > > I haven't had much time to really look at this closely, and I probably 
> > > won't for another week or so due to the holidays. But from my cursory 
> > > examination, I think I want to propose something that is a bit 
> > > different.
> > 
> > Could you be a bit more, like, specific, please?
> 
> The way that GIT_NOTES_REF and core.notesref work aren't what I had in 
> mind. I imagined something more amenable to having lots of different 
> metadata notes.  Refer to the other messages I have written on "naming".

Unfortunately, there were way too many messages between you and Govind, with not enough new stuff that could interest me, so I had to stop reading them to avoid depleting my Git time budget each and every single day.

However, note that without something like core.notesref you will never be able to have private and public notes.

And I very much want to have private notes _and_ public notes on the very same commits of the very same branches.

Show 8 quoted lines
> I don't want to hold up progress, so if people want those patches in 
> "next", then go for it. What I really meant by my email was that I think 
> my suggested changes might be simpler to see as a re-roll rather than 
> patches on top, but since I can't work on them for a while, I didn't 
> want Junio to take silence as "OK, nobody has complained, so it's time 
> for this to graduate to next." But again, if people are ready to start 
> playing with this and building on top of it, then I don't want to stand 
> in the way.

I just wanted to fiddle a little bit with profiling, as I really do not understand why the new notes perform that badly against the old notes, even allowing for reading a complete, possibly huge tree into a hashmap.

And while I am almost sure that there is a stupid bug lurking that will kick the performance again, I think the basic design is sound, and it should be easy to modify no matter which way you want to change the behavior with regards to trees/blobs or refs.

Of course, I'd like Miklos' read-tree bug solved before any more work is done on notes, since we are in -rc4 after all, and that is a potentially pretty serious bug.

Ciao, Dscho

Jeff King· Dec 23, 2008, 17:34 UTC · re: Johannes Schindelin · lore

Re: What's cooking in git.git (Dec 2008, #03; Sun, 21)

On Tue, Dec 23, 2008 at 05:52:54PM +0100, Johannes Schindelin wrote:
Show 5 quoted lines
> However, note that without something like core.notesref you will never be 
> able to have private and public notes.
> 
> And I very much want to have private notes _and_ public notes on the very 
> same commits of the very same branches.

Right. I think core.notesref doesn't go far enough, because it doesn't provide a way to talk about notes from two sources at the same time. Like:

  git log --pretty=format:'%N(my-private-notes:foo) %N(public-notes:bar)'
> I just wanted to fiddle a little bit with profiling, as I really do not 
> understand why the new notes perform that badly against the old notes, 
> even allowing for reading a complete, possibly huge tree into a hashmap.
I haven't looked closely at the latest series yet, so I can't comment.
> And while I am almost sure that there is a stupid bug lurking that will 
> kick the performance again, I think the basic design is sound, and it 
> should be easy to modify no matter which way you want to change the 
> behavior with regards to trees/blobs or refs.

I agree that the data structure is sound, so I can probably work on top of what you posted, too. I was planning on doing git-notes in C, though.

-Peff
Johannes Schindelin· Dec 24, 2008, 11:55 UTC · re: Jeff King · lore

Re: What's cooking in git.git (Dec 2008, #03; Sun, 21)

Hi,
On Tue, 23 Dec 2008, Jeff King wrote:
Show 13 quoted lines
> On Tue, Dec 23, 2008 at 05:52:54PM +0100, Johannes Schindelin wrote:
> 
> > However, note that without something like core.notesref you will never 
> > be able to have private and public notes.
> > 
> > And I very much want to have private notes _and_ public notes on the 
> > very same commits of the very same branches.
> 
> Right. I think core.notesref doesn't go far enough, because it doesn't
> provide a way to talk about notes from two sources at the same time.
> Like:
> 
>   git log --pretty=format:'%N(my-private-notes:foo) %N(public-notes:bar)'

Ah. That should be easy to do incrementally, by adding a ref_name parameter to the functions in notes.h, which can be NULL (falling back to the default ref).

Show 7 quoted lines
> > And while I am almost sure that there is a stupid bug lurking that 
> > will kick the performance again, I think the basic design is sound, 
> > and it should be easy to modify no matter which way you want to change 
> > the behavior with regards to trees/blobs or refs.
> 
> I agree that the data structure is sound, so I can probably work on top
> of what you posted, too. I was planning on doing git-notes in C, though.

Sure. git-notes.sh is only in shell script to provide a proof-of-concept, and an example how to have an ultra-narrow "checkout" of the notes ref's tree.

Ciao, Dscho

← back to recent threads