threads / discuss / 15118

What's cooking in git.git (Aug 2008, #06; Wed, 20)

Subject: What's cooking in git.git (Aug 2008, #06; Wed, 20)

## tl;dr

7 messages between Aug 21, 2008 and Aug 21, 2008.

replies: 6people: 4as markdown or json

Junio C Hamano· Aug 21, 2008, 00:30 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 topics list the commits in reverse chronological order. The topics meant to be merged to the maintenance series have "maint-" in their names.

Today's 'pu' does not pass tests for me; it seems my box does not like new tests for gitweb somehow.

By the way, here is a list of issues without any corresponding topic branches yet:

 * Windows relocatable install 
   Steffen Prohaska ($gmane/92605), Johannes Sixt.
 * Haiku port
   Andreas Färber ($gmane/92582)
 * ksh "trap foo EXIT" triggers on function return, loses exit status
   Brandon Casey ($gmane/92873)
 * document webdav debugging tip with davfs2
   Giovanni Funchal ($gmane/92745)
 * update "rebase -i" documentation with examples
   Eric Hanchrow ($gmane/92669)
 * pre-push hook
   Scott Chacon ($gmane/92900, $gmane/92936)

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

* jc/no-slim-shell (Tue Aug 19 18:05:43 2008 -0700) 2 commits
 + Build-in "git-shell"
 + shell: do not play duplicated definition games to shrink the
   executable

---------------------------------------------------------------- [Stalled -- Needs Updates]

I've moved the "Stalled" section up so that it grabs more attention from people.

* lt/time-reject-fractional-seconds (Sat Aug 16 21:25:40 2008 -0700) 1 commit
 - date/time: do not get confused by fractional seconds

Linus hints further enhancements as "the right way", so let's see if somebody else steps up and tries it before merging this to 'next'.

* sp/smart-http (Sun Aug 3 00:25:17 2008 -0700) 2 commits
 - [do not merge -- original version] Add Git-aware CGI for Git-aware
   smart HTTP transport
 - Add backdoor options to receive-pack for use in Git-aware CGI

The "magic" detection protocol was revised to use POST to info/refs; the top one queued is from before that discussion.

* cc/bisect (Fri Jul 25 05:36:37 2008 +0200) 2 commits
 - bisect: only check merge bases when needed
 - bisect: test merge base if good rev is not an ancestor of bad rev

The first one alone does not pass its self-test but combined together they seem to. It does not build confidence as the latter one is supposed to be an optimization only. Resend of fixed-up series is needed.

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

* jc/cc-ld-dynpath (Sat Aug 16 15:01:23 2008 +0200) 2 commits
 - configure: auto detect dynamic library path switches
 - Makefile: Allow CC_LD_DYNPATH to be overriden

Needs success reports from people who do use user-defined dynamic library path when they build their "git" before this series can go anywhere.

* sb/daemon (Thu Aug 14 20:02:20 2008 +0200) 4 commits
 - git-daemon: rewrite kindergarden, new option --max-connections
 - git-daemon: Simplify dead-children reaping logic
 - git-daemon: use LOG_PID, simplify logging code
 - git-daemon: call logerror() instead of error()
Can somebody who actually runs the daemon standalone comment on this one?
* mv/merge-recursive (Tue Aug 12 22:14:00 2008 +0200) 3 commits
 - Make builtin-revert.c use merge_recursive_generic()
 - merge-recursive.c: Add more generic merge_recursive_generic()
 - Split out merge_recursive() to merge-recursive.c
Miklos will be working on updates.
* lw/gitweb (Mon Aug 18 21:39:49 2008 +0200) 3 commits
 - gitweb: use new Git::Repo API, and add optional caching
 - add new Perl API: Git::Repo, Git::Commit, Git::Tag, and
   Git::RepoRoot
 - gitweb: add test suite with Test::WWW::Mechanize::CGI
* jc/diff-prefix (Mon Aug 18 20:08:09 2008 -0700) 1 commit
 - diff: vary default prefix depending on what are compared
* sp/missing-thin-base (Tue Aug 12 11:31:06 2008 -0700) 1 commit
 + pack-objects: Allow missing base objects when creating thin packs
* tr/filter-branch (Tue Aug 12 10:45:59 2008 +0200) 3 commits
 + filter-branch: use --simplify-merges
 + filter-branch: fix ref rewriting with --subdirectory-filter
 + filter-branch: Extend test to show rewriting bug
Fixes a longstanding filter branch bug.  Success stories?
* jc/post-simplify (Fri Aug 15 01:34:51 2008 -0700) 8 commits
 - revision --simplify-merges: incremental simplification
 - revision --simplify-merges: prepare for incremental simplification
 - revision --simplify-merges: make it a no-op without pathspec
 + revision --simplify-merges: do not leave commits unprocessed
 + revision --simplify-merges: use decoration instead of commit->util
   field
 + Topo-sort before --simplify-merges
 + revision traversal: show full history with merge simplification
 + revision.c: whitespace fix

"log --full-history" is with too much clutter, "log" itself is too cleverer than some people, and here is the middle level of merge simplification.

I started making this incremental but the progress is not so great.
* tr/rev-list-docs (Tue Aug 12 01:55:37 2008 +0200) 1 commit
 + Documentation: rev-list-options: move --simplify-merges
   documentation

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

* ml/submodule-foreach (Sun Aug 10 19:10:04 2008 -0400) 1 commit
 + git-submodule - Add 'foreach' subcommand
* pm/log-exit-code (Mon Aug 11 08:46:25 2008 +0200) 2 commits
 + Teach git log --exit-code to return an appropriate exit code
 + Teach git log --check to return an appropriate exit code
* sb/commit-tree-minileak (Tue Aug 12 00:35:11 2008 +0200) 1 commit
 + Fix commit_tree() buffer leak
* pb/reflog-dwim (Sun Aug 10 22:22:21 2008 +0200) 1 commit
 + builtin-reflog: Allow reflog expire to name partial ref
* jc/add-stop-at-symlink (Mon Aug 4 00:52:37 2008 -0700) 2 commits
 + add: refuse to add working tree items beyond symlinks
 + update-index: refuse to add working tree items beyond symlinks

Fix for a longstanding bug that allows "git add" and "git update-index" to add a path "a/b" to the index when "a" is a symbolic link. We would need a similar fix for the case where "a" is a submodule.

* mv/merge-custom (Wed Aug 13 23:32:43 2008 +0200) 7 commits
 + Update .gitignore to ignore git-help
 + Builtin git-help.
 + builtin-help: always load_command_list() in cmd_help()
 + Add a second testcase for handling invalid strategies in git-merge
 + Add a new test for using a custom merge strategy
 + builtin-merge: allow using a custom strategy
 + builtin-help: make some internal functions available to other
   builtins
* kh/diff-tree (Sun Aug 10 18:13:04 2008 +0200) 4 commits
 + Add test for diff-tree --stdin with two trees
 + Teach git diff-tree --stdin to diff trees
 + diff-tree: Note that the commit ID is printed with --stdin
 + Refactoring: Split up diff_tree_stdin
* mg/count-objects (Fri Aug 15 00:20:20 2008 -0400) 1 commit
 + count-objects: Add total pack size to verbose output
This one is without the human readable bits.
* mz/push-verbose (Sat Aug 16 19:58:32 2008 +0200) 1 commit
 + Make push more verbose about illegal combination of options
* jc/index-extended-flags (Sat Aug 16 23:02:08 2008 -0700) 1 commit
 + index: future proof for "extended" index entries
* cc/merge-base-many (Sun Jul 27 13:47:22 2008 -0700) 4 commits
 + git-merge-octopus: use (merge-base A (merge B C D E...)) for
   stepwise merge
 + merge-base-many: add trivial tests based on the documentation
 + documentation: merge-base: explain "git merge-base" with more than
   2 args
 + merge-base: teach "git merge-base" to drive underlying
   merge_bases_many()
* jc/add-addremove (Tue Jul 22 22:30:40 2008 -0700) 2 commits
 + builtin-add.c: optimize -A option and "git add ."
 + builtin-add.c: restructure the code for maintainability
* am/cherry-pick-rerere (Sun Aug 10 17:18:55 2008 +0530) 1 commit
 + Make cherry-pick use rerere for conflict resolution.
* js/parallel-test (Mon Aug 18 12:25:40 2008 -0400) 4 commits
 + Update t/.gitignore to ignore all trash directories
 + Enable parallel tests
 + tests: Clarify dependencies between tests, 'aggregate-results' and
   'clean'
 + t9700: remove useless check
* jc/test-deeper (Fri Aug 8 02:26:28 2008 -0700) 1 commit
 + tests: use $TEST_DIRECTORY to refer to the t/ directory

This does not actually move "t/test directory" any deeper, but fixes test scripts that assume they run immediately below "t/" to use TEST_DIRECTORY variable.

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

* 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/send-pack-tell-me-more (Thu Mar 20 00:44:11 2008 -0700) 1 commit
 - "git push": tellme-more protocol extension
* jc/merge-whitespace (Sun Feb 24 23:29:36 2008 -0800) 1 commit
 - WIP: start teaching the --whitespace=fix to merge machinery
* 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
* sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit
 + merge: remove deprecated summary and diffstat options and config
   variables

This was previously in "will be in master soon" category, but it turns out that the synonyms to the ones this one deletes are fairly new invention that happend in 1.5.6 timeframe, and we cannot do this just yet. Perhaps in 1.7.0.

* jc/dashless (Wed Jun 25 15:55:11 2008 -0700) 1 commit
 - Make clients ask for "git program" over ssh and local transport

This is the "botched" one. Will be resurrected during 1.7.0 or 1.8.0 timeframe.

* 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.

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

* js/mingw-stat (Mon Aug 18 22:01:06 2008 +0200) 2 commits
 + Revert "Windows: Use a customized struct stat that also has the
   st_blocks member."
 + compat: introduce on_disk_bytes()

This gets rid of use of st_blocks member (which is XSI but not POSIX proper), which was originally prompted by recent Haiku port but it turns out MinGW has the same issue as well. Queued on 'pu' just to have a chance to make sure I munged the version j6t sent me correctly before merging it upwards.

* js/checkout-dwim-local (Sat Aug 9 16:00:12 2008 +0200) 1 commit
 + checkout --track: make up a sensible branch name if '-b' was
   omitted
Alex has update to dwim "checkout --track remotes/origin/hack" as well.
* bd/diff-strbuf (Wed Aug 13 23:18:22 2008 -0700) 3 commits
 + xdiff-interface: hide the whole "xdiff_emit_state" business from
   the caller
 + Use strbuf for struct xdiff_emit_state's remainder
 + Make xdi_diff_outf interface for running xdiff_outf diffs

Gives measurable performance improvement to textual diff generation. For improving "blame" performance, it might be more effective to hook directly to lower level of xdiff machinery so that we do not even have to generate patch only to discard after reading "@@ -l,k +m,n @@" lines, but that would be a separate topic.

* dp/hash-literally (Sun Aug 3 18:36:22 2008 +0400) 6 commits
 + add --no-filters option to git hash-object
 + add --path option to git hash-object
 + use parse_options() in git hash-object
 + correct usage help string for git-hash-object
 + correct argument checking test for git hash-object
 + teach index_fd to work with pipes

Gives a bit more flexibility to hash-objects by allowing us to lie about the path the contents comes from.

* rs/imap (Wed Jul 9 22:29:02 2008 +0100) 5 commits
 + Documentation: Improve documentation for git-imap-send(1)
 + imap-send.c: more style fixes
 + imap-send.c: style fixes
 + git-imap-send: Support SSL
 + git-imap-send: Allow the program to be run from subdirectories of
   a git tree

Some people seem to prefer having this feature available also with gnutls. Such an enhancement can be done in-tree on top of this series if they are so inclined.

* jk/pager-swap (Tue Jul 22 03:14:12 2008 -0400) 2 commits
 + spawn pager via run_command interface
 + run-command: add pre-exec callback

This changes the parent-child relationship between the pager and the git process. We used to make pager the parent which meant that the exit status from git is lost from the caller.

* ph/enable-threaded (Mon Jul 21 11:23:43 2008 +0200) 1 commit
 + Enable threaded delta search on *BSD and Linux.
Jeff King· Aug 21, 2008, 01:18 UTC · re: Junio C Hamano · lore

Re: What's cooking in git.git (Aug 2008, #06; Wed, 20)

On Wed, Aug 20, 2008 at 05:30:16PM -0700, Junio C Hamano wrote:
Show 6 quoted lines
> * js/parallel-test (Mon Aug 18 12:25:40 2008 -0400) 4 commits
>  + Update t/.gitignore to ignore all trash directories
>  + Enable parallel tests
>  + tests: Clarify dependencies between tests, 'aggregate-results' and
>    'clean'
>  + t9700: remove useless check

I really liked this the first time I ran "make -j4 test". However, it now cleans up the trash directory automagically after a successful run. This bit me today when I added a test that should have failed but accidentally passed. I wanted to look at the output, but it was gone.

Probably it's not worth worrying about, since that is certainly the less common case, and I can work around it by editing the passing test script to provoke failure. And I can't think of a more sane behavior. But I wanted to register my slight "this new thing annoyed me" feeling.

-Peff
Junio C Hamano· Aug 21, 2008, 02:30 UTC · re: Jeff King · lore

Re: What's cooking in git.git (Aug 2008, #06; Wed, 20)

Jeff King <peff@peff.net> writes:
Show 8 quoted lines
> I really liked this the first time I ran "make -j4 test". However, it
> now cleans up the trash directory automagically after a successful run.
> This bit me today when I added a test that should have failed but
> accidentally passed. I wanted to look at the output, but it was gone.
>
> Probably it's not worth worrying about, since that is certainly the less
> common case, and I can work around it by editing the passing test script
> to provoke failure.
When I add to an existing test, I usually:
 * guess where I want to start the new test;
 * insert an "exit" there to cause failure;
 * run it and inspect the state of the test directory;
 * write the new test just before the "exit";
 * run it until I like the new test;
 * remove the "exit".
Johannes Schindelin· Aug 21, 2008, 07:49 UTC · re: Jeff King · lore

[PATCH] test-lib: do not remove trash_directory if called with --debug

Sometimes you want to keep the trash directory, even if all tests passed. For example, when extending tests, it comes it quite handy.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
	On Wed, 20 Aug 2008, Jeff King wrote:
	> On Wed, Aug 20, 2008 at 05:30:16PM -0700, Junio C Hamano wrote:
	> 
	> > * js/parallel-test (Mon Aug 18 12:25:40 2008 -0400) 4 commits
	> >  + Update t/.gitignore to ignore all trash directories
	> >  + Enable parallel tests
	> >  + tests: Clarify dependencies between tests, 'aggregate-results' and
	> >    'clean'
	> >  + t9700: remove useless check
	> 
	> I really liked this the first time I ran "make -j4 test". 
	> However, it now cleans up the trash directory automagically after a 
	> successful run. This bit me today when I added a test that should
	> have failed but accidentally passed. I wanted to look at the 
	> output, but it was gone.
	> 
	> Probably it's not worth worrying about, since that is certainly 
	> the less common case, and I can work around it by editing the passing 
	> test script to provoke failure. And I can't think of a more sane 
	> behavior. But I wanted to register my slight "this new thing annoyed 
	> me" feeling.
	My original patch tried to be clever and _not_ do the automagical 
	cleanup when run without -j.
	However, this was not liked.
	So I have this in my personal git fork.  Maybe it is good enough 
	for you?
	(Usage: run sh t0000-bla.sh -i -v -d)
 t/test-lib.sh |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 6212c46..e2b106c 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -491,7 +491,7 @@ fi
 
 # Test repository
 test="trash directory.$(basename "$0" .sh)"
-remove_trash="$TEST_DIRECTORY/$test"
+test ! -z "$debug" || remove_trash="$TEST_DIRECTORY/$test"
 rm -fr "$test" || {
 	trap - exit
 	echo >&5 "FATAL: Cannot prepare test area"
-- 
1.6.0.172.g459f5
Junio C Hamano· Aug 21, 2008, 08:52 UTC · re: Johannes Schindelin · lore

Re: [PATCH] test-lib: do not remove trash_directory if called with --debug

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> Sometimes you want to keep the trash directory, even if all tests
> passed.  For example, when extending tests, it comes it quite handy.

Yeah, I think hooking this with --debug is makes actual sense. Much saner than changing the behaviour magically with "make -j".

Even though I personally do not particularly like having an _easy_ way to leave the cruft around, I'll apply it if Jeff and other people like this behaviour.

Jeff King· Aug 21, 2008, 12:55 UTC · re: Junio C Hamano · lore

Re: [PATCH] test-lib: do not remove trash_directory if called with --debug

On Thu, Aug 21, 2008 at 01:52:31AM -0700, Junio C Hamano wrote:
Show 6 quoted lines
> Yeah, I think hooking this with --debug is makes actual sense.  Much saner
> than changing the behaviour magically with "make -j".
> 
> Even though I personally do not particularly like having an _easy_ way to
> leave the cruft around, I'll apply it if Jeff and other people like this
> behaviour.

I think the workflow you described is probably a better one for adding a test, and I'll try to adjust to that. However, I do think Dscho's patch makes sense for any time you simply want to look at the output of a successful test (e.g., even if you aren't editing it).

My only concern with the patch is that it conditionally sets $remove_trash; if debug is set, that variable is not set at all. Yet later we look at it and "rm -rf" it. Obviously the chances of somebody accidentally passing in such a variable are quite low, but style-wise (and given that we are calling rm -rf!), I think I would prefer:

  if ! test -z "$debug"; then
    remove_trash="$TEST_DIRECTORY/$test"
  else
    remove_trash=
  fi

And a final comment on leaving cruft around: this is something that developers have to deal with _anyway_, when tests fail or when we break out of the test scripts with ^C. It eventually gets cleaned when the test runs successfully (or one runs "git clean -xd").

-Peff
Michael J Gruber· Aug 21, 2008, 12:10 UTC · re: Junio C Hamano · lore

Re: What's cooking in git.git (Aug 2008, #06; Wed, 20)

Junio C Hamano venit, vidit, dixit 21.08.2008 02:30:
Show 9 quoted lines
> Here are the topics that have been cooking.  Commits prefixed
> with '-' are only in 'pu' while commits prefixed with '+' are
> in 'next'.
> 
> The topics list the commits in reverse chronological order.  The topics
> meant to be merged to the maintenance series have "maint-" in their names.
> 
> Today's 'pu' does not pass tests for me; it seems my box does not like new
> tests for gitweb somehow.
Mine doesn't either (Kubuntu 7.10, as well as F8 in VM).
Michael

← back to recent threads