Subject: What's cooking in git.git (topics)

From: Junio C Hamano <[email-masked]>
Date: Wed, 31 Oct 2007 22:41:06 -0700

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.

I think it is time to plan freezing for 1.5.4 and this list is a
good place to start.

* js/forkexec (Fri Oct 19 21:48:06 2007 +0200) 14 commits
 + Use the asyncronous function infrastructure to run the content
   filter.
 + Avoid a dup2(2) in apply_filter() - start_command() can do it for
   us.
 + t0021-conversion.sh: Test that the clean filter really cleans
   content.
 + upload-pack: Run rev-list in an asynchronous function.
 + upload-pack: Move the revision walker into a separate function.
 + Use the asyncronous function infrastructure in builtin-fetch-
   pack.c.
 + Add infrastructure to run a function asynchronously.
 + upload-pack: Use start_command() to run pack-objects in
   create_pack_file().
 + Have start_command() create a pipe to read the stderr of the
   child.
 + Use start_comand() in builtin-fetch-pack.c instead of explicit
   fork/exec.
 + Use run_command() to spawn external diff programs instead of
   fork/exec.
 + Use start_command() to run content filters instead of explicit
   fork/exec.
 + Use start_command() in git_connect() instead of explicit
   fork/exec.
 + Change git_connect() to return a struct child_process instead of a
   pid_t.

I haven't seen anything wrong with this series and we haven't
heard breakages from people on 'next' who have been running with
this for the past ten days.  Will merge to 'master'.

* db/remote-builtin (Mon Oct 29 22:03:42 2007 -0400) 4 commits
 - Use built-in send-pack.
 - Build-in send-pack, with an API for other programs to call.
 - Build-in peek-remote, using transport infrastructure.
 - Miscellaneous const changes and utilities

Will be in 'next' soon after reviewing it again; hopefully in
'master' before 1.5.4.

* ph/parseopt (Tue Oct 30 14:15:21 2007 -0500) 23 commits
 + Fixed a command line option type for builtin-fsck.c
 + Make builtin-pack-refs.c use parse_options.
 + Make builtin-name-rev.c use parse_options.
 + Make builtin-count-objects.c use parse_options.
 + Make builtin-fsck.c use parse_options.
 + Update manpages to reflect new short and long option aliases
 + Make builtin-for-each-ref.c use parse-opts.
 + Make builtin-symbolic-ref.c use parse_options.
 + Make builtin-update-ref.c use parse_options
 + Make builtin-revert.c use parse_options.
 + Make builtin-describe.c use parse_options
 + Make builtin-branch.c use parse_options.
 + Make builtin-mv.c use parse-options
 + Make builtin-rm.c use parse_options.
 + Port builtin-add.c to use the new option parser.
 + parse-options: allow callbacks to take no arguments at all.
 + parse-options: Allow abbreviated options when unambiguous
 + Add shortcuts for very often used options.
 + parse-options: make some arguments optional, add callbacks.
 + Rework make_usage to print the usage message immediately
 + Add tests for parse-options.c
 + parse-options: be able to generate usages automatically
 + Add a simple option parser.

It appears 1.5.4 will be, to a certain extent, a "Let's clean up
the internal implementation" release.  This series should become
part of it.  Hopefully will merge to 'master' soon, but I
haven't looked this series very closely yet.

* kh/commit (Mon Sep 17 20:06:47 2007 -0400) 4 commits
 + Export rerere() and launch_editor().
 + Introduce entry point add_interactive and add_files_to_cache
 + Enable wt-status to run against non-standard index file.
 + Enable wt-status output to a given FILE pointer.

These four alone do not change anything user visible, as the
final goal of this series which is "git-commit in C" is not here
yet.  But with the other topics touching internal API left and
right that is understandable.  Will merge to 'master'.

* sp/help (Sat Oct 27 01:36:55 2007 -0700) 7 commits
 + shell should call the new setup_path() to setup $PATH
 + include $PATH in generating list of commands for "help -a"
 + use only the $PATH for exec'ing git commands
 + list_commands(): simplify code by using chdir()
 + "current_exec_path" is a misleading name, use "argv_exec_path"
 + remove unused/unneeded "pattern" argument of list_commands
 + "git" returns 1; "git help" and "git help -a" return 0

Will merge to 'master'.

* sp/mergetool (Thu Oct 18 12:25:34 2007 +0200) 3 commits
 + mergetool: avoid misleading message "Resetting to default..."
 + mergetool: add support for ECMerge
 + mergetool: use path to mergetool in config var
   mergetool.<tool>.path

Will merge to 'master'.

* jc/stash-create (Mon Jul 9 00:51:23 2007 -0700) 2 commits
 + rebase: allow starting from a dirty tree.
 + stash: implement "stash create"

Will revert at least the latter one, but perhaps both, from
'next'.  The traditional behaviour of refusing to work in a
dirty tree is much safer, as the tool cannot decide where to
unstash for you.

* js/reflog-delete (Wed Oct 17 02:50:45 2007 +0100) 1 commit
 + Teach "git reflog" a subcommand to delete single entries

This by itself is not useful; will stay in 'next' until it is
used by selective clearing of stash or something else.

* jc/revert-merge (Tue Oct 23 13:33:26 2007 -0700) 1 commit
 + revert/cherry-pick: work on merge commits as well

This allows cherry-pick and revert to act on a merge commit if
you specify which parent to pick the changes from.  I think it
would probably be handy when the need arises, but I suspect such
a need is felt only occasionally.  I haven't heard any comment
on the list since it was posted.  I am somewhat tempted to merge
this, but I am not in a hurry.

* np/progress (Wed Oct 31 23:57:04 2007 -0400) 17 commits
 . Show total transferred as part of throughput progress display
 - add throughput display to git-push
 - add some copyright notice to the progress display code
 - add throughput display to index-pack
 - add throughput to progress display
 - relax usage of the progress API
 - make struct progress an opaque type
 - prune-packed: don't call display_progress() for every file
 + Stop displaying "Pack pack-$ID created." during git-gc
 + Teach prune-packed to use the standard progress meter
 + Change 'Deltifying objects' to 'Compressing objects'
 + fix for more minor memory leaks
 + fix const issues with some functions
 + pack-objects.c: fix some global variable abuse and memory leaks
 + pack-objects: no delta possible with only one object in the list
 + cope with multiple line breaks within sideband progress messages
 + more compact progress display

This would give us a good usability enhancement.  Will merge the
first half to 'master', cook the rest in 'next' and aim to merge
the whole thing before 1.5.4.

* jc/format-patch-encoding (Wed Oct 31 14:55:17 2007 -0700) 1 commit
 - format-patch -s: add MIME encoding header if signer's name
   requires so

Topic appeared today.  I think this is a safe and sane
fix to a real problem.  Needs cherry-pick to 'maint'.

* jc/spht (Tue Oct 2 18:00:27 2007 -0700) 1 commit
 - git-diff: complain about >=8 consecutive spaces in initial indent

This is a counterpart of an earlier patch from J. Bruce Fields
to change "git-apply --whitespace" to make SP{8,} at the
beginning of line a whitespace error.

Personally, I am in favor of the stricter check, but I had to
reject the "git-apply" patch because there was no way to disable
the additional check without disabling the existing check for
trailing whitespaces.  We probably would want to revisit that
one (perhaps with a new option and/or config to selectively
enable different kinds of whitespace check).

* dz/color-addi (Tue Oct 16 21:42:23 2007 -0400) 1 commit
 - Add color support to git-add--interactive

I am not a big fan of color, and Shawn's "What's cooking"
mentioned issues with the implementation.  Will not merge to
'next'.

* sp/push-refspec (Sun Oct 28 18:46:20 2007 +0100) 6 commits
 - push: teach push to pass --verbose option to transport layer
 - push: teach push to accept --verbose option
 - push: use same rules as git-rev-parse to resolve refspecs
 - add ref_abbrev_matches_full_with_rev_parse_rules() comparing
   abbrev with full ref name
 - rename ref_matches_abbrev() to
   ref_abbrev_matches_full_with_fetch_rules()
 - push: support pushing HEAD to real branch name

I have been meaning to review these again and merge to 'next'
but it seems I've been spending more time discussing the ones I
did not even pick up for 'pu'.  Will try to find time to do so.

* jk/terse-fetch (Fri Oct 19 03:40:57 2007 -0400) 2 commits
 - park
 - git-fetch: mega-terse fetch output

No change ;-)

* jc/nu (Sun Oct 14 22:07:34 2007 -0700) 3 commits
 - merge-nu: a new merge backend without using unpack_trees()
 - read_tree: take an explicit index structure
 - gcc 4.2.1 -Werror -Wall -ansi -pedantic -std=c99: minimum fix

I was hoping that I can work on this series while in Japan, but
attending funeral and helping others to deal with the fallout
sucked all my energy and time.  This is still a wip and not
progressing.

* jc/pathspec (Thu Sep 13 13:38:19 2007 -0700) 3 commits
 - pathspec_can_match(): move it from builtin-ls-tree.c to tree.c
 - ls-tree.c: refactor show_recursive() and rename it.
 - tree-diff.c: split out a function to match a single pattern.

My pet project to unify the pathspec handling between tree-diff
family and ls-files family (one side only knows "in this
directory" match, and the other knows how to handle fnmatch
globs as well).  Stalled.

* jk/rename (Tue Oct 30 00:24:42 2007 -0400) 3 commits
 . handle renames using similarity engine
 . introduce generic similarity library
 . change hash table calling conventions

Aiming for a worthy goal, but not merged to 'pu' yet.

* tf/afs (Fri Oct 19 07:38:16 2007 -0500) 1 commit
 . Better support AFS hardlinking across object directories

Will drop from topic queue.  This is labelled as "AFS hack", but
it hacks around a problem AFS has by breaking the safety we had
from very early days of git for everybody else.