git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [ANNOUNCE] Cogito-0.11.2
@ 2005-06-08 23:07  3% Petr Baudis
  0 siblings, 0 replies; 200+ results
From: Petr Baudis @ 2005-06-08 23:07 UTC (permalink / raw)
  To: git

  Hello,

  I'm happy to announce Cogito-0.11.2, next version of my SCMish layer
over Linus' GIT tree history storage tool. You can get it as usual on

	kernel.org/pub/software/scm/cogito/

or by doing cg-update in your cogito.git repository.

  The changes include especially some bugfixes and portability and
performance enhancements, as well as all the sweet stuff from Linus.

  Note that I discovered a bug few minutes after releasing (as usual).
cg-log won't work correctly if ran with some files specified (the
"cg-log file" usage). I think it actually does not get used like this so
frequently, so I don't think it's worth another release by itself. But
expect new release as soon as some non-trivial amount of bugfixes piles
up (including core git bugfixes), quite soon hopefully.


  Here's git-rev-list --pretty HEAD ^cogito-0.11.1 | git-shortlog
(BTW, Dan, what about another cg-log option for git-shortlog output? ;-):


C. Cooke:
  Check whether the git repository is present before executing the command

Catalin Marinas:
  cg-commit: Fix the log file readin from stdin
  [PATCH Cogito] Add -f parameter also to cg-update

Chris Wedgwood:
  cogitio: sh != bash

Christian Meder:
  Miniscule correction of diff-format.txt

Dan Holmsand:
  Make cg-add use xargs -0

Daniel Barkalow:
  Document git-ssh-pull and git-ssh-push
  -w support for git-ssh-pull/push
  Generic support for pulling refs
  rsh.c environment variable
  Operations on refs
  ssh-protocol version, command types, response code

Eugene Surovegin:
  fix cg-commit new file handling

Jason McMullan:
  Anal retentive 'const unsigned char *sha1'
  Modify git-rev-list to linearise the commit history in merge order.

Jon Seymour:
  three --merge-order bug fixes

Jonas Fonseca:
  cg-commit: prefix pathspec argument with --
  git-diff-cache: handle pathspec beginning with a dash
  git-diff-cache: handle pathspec beginning with a dash
  cg-log: cleanup line wrapping by using bash internals
  Documentation improvements
  Misc cg-log documentation fixes
  Cleanup commit messages with git-stripspace
  [PATCH 10/10] Add -s option to show log summary
  [PATCH 9/10] Move file matching inside the loop.
  [PATCH 8/10] Move the username matching inside the loop
  [PATCH 7/10] Move log printing to separate function
  [PATCH 6/10] Remove the catch all rule
  [PATCH 5/10] Move printing of the commit info line inside the loop
  [PATCH 4/10] First parse all commit header entries then print them
  [PATCH 3/10] Separate handling of author and committer in commit headers
  [PATCH 2/10] Separate handling of tree and parent in commit headers
  [PATCH 1/10] Cleanup conversion to human readable date
  cg-Xnormid: support revision ids specified by date

Junio C Hamano:
  Tests: read-tree -m test updates.
  Documentation: describe diff tweaking (fix).
  Start cvs-migration documentation
  read-tree: update documentation for 3-way merge.
  read-tree: save more user hassles during fast-forward.
  index locking like everybody else
  3-way merge tests for new "git-read-tree -m"?
  rename git-rpush and git-rpull to git-ssh-push and git-ssh-pull
  Documentation: describe git extended diff headers.
  Documentation: describe diff tweaking.
  pull: gracefully recover from delta retrieval failure.
  diffcore-break.c: various fixes.
  diff.c: -B argument passing fix.
  diff.c: locate_size_cache() fix.
  diff: Update -B heuristics.
  diff: Clean up diff_scoreopt_parse().
  diff: Fix docs and add -O to diff-helper.
  Tweak count-delta interface
  Find size of SHA1 object without inflating everything.
  Handle deltified object correctly in git-*-pull family.

Linus Torvalds:
  Remove MERGE_HEAD after committing merge
  Make "git commit" work correctly in the presense of a manual merge
  cvs-migration: add more of a header to the "annotate" discussion
  Leave merge failures in the filesystem
  Fix SIGSEGV on unmerged files in git-diff-files -p
  Make default merge messages denser.
  git-apply: creatign empty files is nonfatal
  Talk about "git cvsimport" in the cvs migration docs
  git-read-tree: -u without -m is meaningless. Don't allow it.
  git-read-tree: make one-way merge also honor the "update" flag
  Add CVS import scripts and programs
  git-ssh-push/pull: usability improvements
  git-resolve-script: stop when the automated merge fails
  Make fetch/pull scripts terminate cleanly on errors
  git-resolve-script: don't wait for three seconds any more
  git-read-tree: some "final" cleanups
  git-read-tree: simplify merge loops enormously
  Add "__noreturn__" attribute to die() and usage()
  git-rev-list: make sure to link with ssl libraries
  Fix off-by-one in new three-way-merge updates
  Three-way merge: fix silly bug that made trivial merges not work
  Fix entry.c dependency and compile problem
  git-read-tree: fix up two-way merge
  More work on merging with git-read-tree..
  Make fiel checkout function available to the git library
  git-read-tree: fix up three-way merge tests
  git-read-tree: be a lot more careful about merging dirty trees
  diff 'rename' format change.
  git-apply: consider it an error to apply no changes
  git-apply: fix rename header parsing
  git-apply: actually apply patches and update the index
  git-apply: fix apply of a new file
  git-apply: find offset fragments, and really apply them
  git-apply: first cut at actually checking fragment data
  git-fsck-cache: complain if no default references found
  pretty_print_commit: add different formats
  git-shortlog: add name translations for 'sparse' repo
  Add git-shortlog perl script
  git-rev-list: allow arbitrary head selections, use git-rev-tree syntax
  Clarify git-diff-cache semantics in the tutorial.

Mark Allen:
  Modify cg-Xlib for non-GNU date.

Michal Rokos:
  [cogito] Sync objects only when needed
  [cogito] paged output for cg-diff
  Abstracted out $PAGER invocation to a pager() function

Petr Baudis:
  Fix cg-log called on specified files
  cogito-0.11.2
  Added trivial cg wrapper
  Use portable sed stuff in cg-log Signed-off-by highlighting
  showdate() now uses $(()) instead of $(expr)
  Fixed cg-log -u
  cg-merge now sometimes allows tree merge + local changes
  Add the t6001 testcase which got missed out at the last merge.
  Move commit line processing to process_commit_line
  Improved cg-Xmergefile
  Fix git-merge-one-file permissions auto-merging
  Fix cg-patch reverting file removal
  Reindent print_commit_log() body
  cg-log is now pure git-rev-list --pretty=raw frontend
  Fix cg-commit doing shell expansion on -m arguments
  Fix mismerged git-r* -> git-ssh-* rename in Makefile
  Move print_commit_log() in cg-log
  Fix an errorneous cg-clone example in the README
  Make git-update-cache --force-remove regular
  Portability sed fix in cg-commit
  Improve git-rev-list --header output
  Implement cg-rm -n for untracking files
  Fixed cg-Xnormid " " call
  cg-commit now updates cache separately for different change types
  Pass revisions to commit-id, parent-id, tree-id and cg-Xnormid quoted
  Do rm -f in make uninstall
  make dist will now produce tarball with sensible name

Rene Scharfe:
  git-tar-tree: do only basic tests in t/t5000-git-tar-tree.sh
  git-tar-tree: fix write_trailer
  git-tar-tree: add a test case
  git-tar-tree: small doc update
  git-tar-tree: cleanup write_trailer()

Sven Verdoolaege:
  git-cvs2git: create tags

Timo Hirvonen:
  Use ntohs instead of htons to convert ce_flags to host byte order


  Have fun,

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
<Espy> be careful, some twit might quote you out of context..

^ permalink raw reply	[relevance 3%]

* GIT 0.99.7d, and end of week status.
@ 2005-09-25  8:36  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2005-09-25  8:36 UTC (permalink / raw)
  To: git

* The fourth minor fix release, GIT 0.99.7d, is available at the
  usual places.

  RPMs and Debs are found in http://kernel.org/pub/software/scm/

  With git:

  $ git fetch http://kernel.org/pub/scm/git/git.git tag v0.99.7d
  $ git checkout -b <new-branch> v0.99.7d

  Fixes since 0.99.7c are:

  - Fix show-branch output that named commits incorrectly.
  - Fix git-grep -e not passing -e to underlying grep.

* Recent updates to the master branch includes:

  - The GIT_VERSION is now 0.99.7.GIT (thanks Pasky for the
    idea).

  - The symlinks for backward compatible names are not installed
    anymore (but existing ones are not automatically removed).

  - git-diff-* family acquired a new option, --name-status, to
    show the status and name for changed files.  Also -l<num>
    option disables rename/copy detection when the number of
    rename target candidates are more than <num> (idea by Linus
    some time ago).

* Proposed updates, not yet graduated to the master branch
  includes:

  - git-merge fix, not to require a clean tree.

  - Likewise for git-revert and git-cherry-pick fix, not to
    require a clean tree.

  - Use git-merge from git-pull, again.

  - A couple of test fixes for further Solaris portability.

  - update-index takes -z --stdin to read NUL terminated list of
    paths from the standard input instead of from the command
    line.  This is to help platforms with xargs that cannot grok
    -0.  git-commit is updated to use this.

^ permalink raw reply	[relevance 2%]

* [PATCH] show-branch: make the current branch stand out.
@ 2006-01-12  0:05 21% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-01-12  0:05 UTC (permalink / raw)
  To: git

This changes the character used to mark the commits that is on the
branch from '+' to '*' for the current branch, to make it stand out.
When you have a handful branches with relatively long diversion, it
is easier to see which one is the current branch this way.

Signed-off-by: Junio C Hamano <junkio@cox.net>

---
 * Currently in "pu".

 Documentation/git-show-branch.txt            |    6 ++-
 Documentation/howto/revert-branch-rebase.txt |   24 +++++++-------
 Documentation/tutorial.txt                   |   46 +++++++++++++-------------
 show-branch.c                                |    5 ++-
 t/t1200-tutorial.sh                          |    6 ++-
 5 files changed, 45 insertions(+), 42 deletions(-)

825abb210cb5fd776a120589a1da41f6a06db191
diff --git a/Documentation/git-show-branch.txt b/Documentation/git-show-branch.txt
index 90e2a5c..a2b8eb9 100644
--- a/Documentation/git-show-branch.txt
+++ b/Documentation/git-show-branch.txt
@@ -103,7 +103,7 @@ and "mhf":
 
 ------------------------------------------------
 $ git show-branch master fixes mhf
-! [master] Add 'git show-branch'.
+* [master] Add 'git show-branch'.
  ! [fixes] Introduce "reset type" flag to "git reset"
   ! [mhf] Allow "+remote:local" refspec to cause --force when fetching.
 ---
@@ -117,13 +117,13 @@ $ git show-branch master fixes mhf
   + [mhf~6] Retire git-parse-remote.
   + [mhf~7] Multi-head fetch.
   + [mhf~8] Start adding the $GIT_DIR/remotes/ support.
-+++ [master] Add 'git show-branch'.
+*++ [master] Add 'git show-branch'.
 ------------------------------------------------
 
 These three branches all forked from a common commit, [master],
 whose commit message is "Add 'git show-branch'.  "fixes" branch
 adds one commit 'Introduce "reset type"'.  "mhf" branch has many
-other commits.
+other commits.  The current branch is "master".
 
 
 EXAMPLE
diff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt
index 5a7e0cf..a83ce1c 100644
--- a/Documentation/howto/revert-branch-rebase.txt
+++ b/Documentation/howto/revert-branch-rebase.txt
@@ -32,16 +32,16 @@ merge introduced 5 commits or so:
 
 ------------------------------------------------
 $ git show-branch --more=4 master master^2 | head
-! [master] Merge refs/heads/portable from http://www.cs.berkeley....
+* [master] Merge refs/heads/portable from http://www.cs.berkeley....
  ! [master^2] Replace C99 array initializers with code.
 --
-+  [master] Merge refs/heads/portable from http://www.cs.berkeley....
-++ [master^2] Replace C99 array initializers with code.
-++ [master^2~1] Replace unsetenv() and setenv() with older putenv().
-++ [master^2~2] Include sys/time.h in daemon.c.
-++ [master^2~3] Fix ?: statements.
-++ [master^2~4] Replace zero-length array decls with [].
-+  [master~1] tutorial note about git branch
+*  [master] Merge refs/heads/portable from http://www.cs.berkeley....
+*+ [master^2] Replace C99 array initializers with code.
+*+ [master^2~1] Replace unsetenv() and setenv() with older putenv().
+*+ [master^2~2] Include sys/time.h in daemon.c.
+*+ [master^2~3] Fix ?: statements.
+*+ [master^2~4] Replace zero-length array decls with [].
+*  [master~1] tutorial note about git branch
 ------------------------------------------------
 
 The '--more=4' above means "after we reach the merge base of refs,
@@ -193,8 +193,8 @@ $ git show-branch --more=1 master pu rc
  +  [pu~4] Document "git cherry-pick" and "git revert"
  +  [pu~5] Remove git-apply-patch-script.
  +  [pu~6] Redo "revert" using three-way merge machinery.
-  + [rc] Merge refs/heads/master from .
-+++ [master] Revert "Replace zero-length array decls with []."
-  + [rc~1] Merge refs/heads/master from .
-+++ [master~1] Merge refs/heads/portable from http://www.cs.berkeley....
+  * [rc] Merge refs/heads/master from .
+++* [master] Revert "Replace zero-length array decls with []."
+  * [rc~1] Merge refs/heads/master from .
+++* [master~1] Merge refs/heads/portable from http://www.cs.berkeley....
 ------------------------------------------------
diff --git a/Documentation/tutorial.txt b/Documentation/tutorial.txt
index edd91cb..43a1975 100644
--- a/Documentation/tutorial.txt
+++ b/Documentation/tutorial.txt
@@ -968,8 +968,8 @@ $ git show-branch master mybranch
 * [master] Merge work in mybranch
  ! [mybranch] Some work.
 --
-+  [master] Merge work in mybranch
-++ [mybranch] Some work.
+*  [master] Merge work in mybranch
+*+ [mybranch] Some work.
 ------------------------------------------------
 
 The first two lines indicate that it is showing the two branches
@@ -1024,7 +1024,7 @@ $ git show-branch master mybranch
 ! [master] Merge work in mybranch
  * [mybranch] Merge work in mybranch
 --
-++ [master] Merge work in mybranch
++* [master] Merge work in mybranch
 ------------------------------------------------
 
 
@@ -1199,9 +1199,9 @@ $ git show-branch --more=3 master mybran
 ! [master] Merge work in mybranch
  * [mybranch] Merge work in mybranch
 --
-++ [master] Merge work in mybranch
-++ [master^2] Some work.
-++ [master^] Some fun.
++* [master] Merge work in mybranch
++* [master^2] Some work.
++* [master^] Some fun.
 ------------
 
 Remember, before running `git merge`, our `master` head was at
@@ -1223,8 +1223,8 @@ $ git show-branch
  ! [mybranch] Some work.
 --
  + [mybranch] Some work.
-+  [master] Some fun.
-++ [mybranch^] New day.
+*  [master] Some fun.
+*+ [mybranch^] New day.
 ------------
 
 Now we are ready to experiment with the merge by hand.
@@ -1743,8 +1743,8 @@ $ git show-branch
  +  [diff-fix] Fix rename detection.
  +  [diff-fix~1] Better common substring algorithm.
 +   [commit-fix] Fix commit message normalization.
-  + [master] Release candidate #1
-+++ [diff-fix~2] Pretty-print messages.
+  * [master] Release candidate #1
+++* [diff-fix~2] Pretty-print messages.
 ------------
 
 Both fixes are tested well, and at this point, you want to merge
@@ -1764,13 +1764,13 @@ $ git show-branch
  ! [diff-fix] Fix rename detection.
   * [master] Merge fix in commit-fix
 ---
-  + [master] Merge fix in commit-fix
-+ + [commit-fix] Fix commit message normalization.
-  + [master~1] Merge fix in diff-fix
- ++ [diff-fix] Fix rename detection.
- ++ [diff-fix~1] Better common substring algorithm.
-  + [master~2] Release candidate #1
-+++ [master~3] Pretty-print messages.
+  * [master] Merge fix in commit-fix
++ * [commit-fix] Fix commit message normalization.
+  * [master~1] Merge fix in diff-fix
+ +* [diff-fix] Fix rename detection.
+ +* [diff-fix~1] Better common substring algorithm.
+  * [master~2] Release candidate #1
+++* [master~3] Pretty-print messages.
 ------------
 
 However, there is no particular reason to merge in one branch
@@ -1797,12 +1797,12 @@ $ git show-branch
  ! [diff-fix] Fix rename detection.
   * [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
 ---
-  + [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
-+ + [commit-fix] Fix commit message normalization.
- ++ [diff-fix] Fix rename detection.
- ++ [diff-fix~1] Better common substring algorithm.
-  + [master~1] Release candidate #1
-+++ [master~2] Pretty-print messages.
+  * [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
++ * [commit-fix] Fix commit message normalization.
+ +* [diff-fix] Fix rename detection.
+ +* [diff-fix~1] Better common substring algorithm.
+  * [master~1] Release candidate #1
+++* [master~2] Pretty-print messages.
 ------------
 
 Note that you should not do Octopus because you can.  An octopus
diff --git a/show-branch.c b/show-branch.c
index f296a87..03324aa 100644
--- a/show-branch.c
+++ b/show-branch.c
@@ -545,6 +545,7 @@ int main(int ac, char **av)
 	int sha1_name = 0;
 	int shown_merge_point = 0;
 	int no_current_branch = 0;
+	int head_at = -1;
 
 	git_config(git_show_branch_config);
 	setup_git_directory();
@@ -696,6 +697,8 @@ int main(int ac, char **av)
 			}
 			/* header lines never need name */
 			show_one_commit(rev[i], 1);
+			if (is_head)
+				head_at = i;
 		}
 		if (0 <= extra) {
 			for (i = 0; i < num_rev; i++)
@@ -725,7 +728,7 @@ int main(int ac, char **av)
 		if (1 < num_rev) {
 			for (i = 0; i < num_rev; i++)
 				putchar((this_flag & (1u << (i + REV_SHIFT)))
-					? '+' : ' ');
+					? (i == head_at ? '*' : '+') : ' ');
 			putchar(' ');
 		}
 		show_one_commit(commit, no_name);
diff --git a/t/t1200-tutorial.sh b/t/t1200-tutorial.sh
index d7562e9..7879b49 100755
--- a/t/t1200-tutorial.sh
+++ b/t/t1200-tutorial.sh
@@ -118,8 +118,8 @@ cat > show-branch.expect << EOF
 * [master] Merged "mybranch" changes.
  ! [mybranch] Some work.
 --
-+  [master] Merged "mybranch" changes.
-++ [mybranch] Some work.
+*  [master] Merged "mybranch" changes.
+*+ [mybranch] Some work.
 EOF
 
 git show-branch --topo-order master mybranch > show-branch.output
@@ -142,7 +142,7 @@ cat > show-branch2.expect << EOF
 ! [master] Merged "mybranch" changes.
  * [mybranch] Merged "mybranch" changes.
 --
-++ [master] Merged "mybranch" changes.
++* [master] Merged "mybranch" changes.
 EOF
 
 git show-branch --topo-order master mybranch > show-branch2.output
-- 
1.1.1-g8ecb

^ permalink raw reply related	[relevance 21%]

* Re: [PATCH] new tutorial
  @ 2006-01-23  4:57  6%                   ` J. Bruce Fields
  0 siblings, 0 replies; 200+ results
From: J. Bruce Fields @ 2006-01-23  4:57 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Sun, Jan 15, 2006 at 03:26:53PM -0800, Junio C Hamano wrote:
> I have a mixed feeling on this one.  I tend to recommend --soft
> instead --mixed to people, but both have their pros and cons:

Yeah.  My goal here is to pare this down to the minimum of text required
to get people up and running and having fun.  To that end, I'd rather
just not explain what the index file is or how it's used.  And really
git-reset could probably be left out entirely.  So I've cut most of this
out, and left just one mention of git-reset --hard.

> If this is intended to be a beginner documentation, I'd prefer
> if it did not talk about cat-file, nor how commit objects are
> internally represented.

Fair enough.  I was trying to find a way to show the structure of the
commit graph.  But that was probably overkill.

So I've cut that out.  I've also left out discussion of the SHA1's
entirely, though we might want to add that back in at some point.  For
now it seems you can do enough without paying attention to them.

> These days by default "git fetch" (and "git pull") fetches the
> tags that refer to the commits you fetch as part of regular
> updates, so this part is mostly redundant.

Got it.

> BTW^2, it might be interesting to do
> 
> 	$ git format-patch -C origin..master
> 
> the next time around.

Here's take two.--b.

The current Documentation/tutorial.txt concentrates on the lower-level
git interfaces.  So it's useful to people developing alternative
porcelains, to advanced users, etc., but not so much to beginning users.

I think it makes sense for the main tutorial to address those
beginnning users, so with this patch I'm proposing that we move
Documentation/tutorial.txt to Documentation/core-tutorial.txt and
replace it by a new tutorial.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

---

 Documentation/core-tutorial.txt |    0 
 Documentation/tutorial.txt      | 2023 ++++++---------------------------------
 2 files changed, 303 insertions(+), 1720 deletions(-)
 copy Documentation/{tutorial.txt => core-tutorial.txt} (100%)

99f6a432f3a4da666d3f535e78cba04085aa1b46
diff --git a/Documentation/tutorial.txt b/Documentation/core-tutorial.txt
similarity index 100%
copy from Documentation/tutorial.txt
copy to Documentation/core-tutorial.txt
diff --git a/Documentation/tutorial.txt b/Documentation/tutorial.txt
index b8fa299..a09bbea 100644
--- a/Documentation/tutorial.txt
+++ b/Documentation/tutorial.txt
@@ -1,1821 +1,404 @@
-A short git tutorial
-====================
+A tutorial introduction to git
+==============================
 
-Introduction
-------------
+This tutorial explains how to import a new project into git, make
+changes to it, and share changes with other developers.
 
-This is trying to be a short tutorial on setting up and using a git
-repository, mainly because being hands-on and using explicit examples is
-often the best way of explaining what is going on.
+First, note that you can get documentation for a command such as "git
+diff" with:
 
-In normal life, most people wouldn't use the "core" git programs
-directly, but rather script around them to make them more palatable. 
-Understanding the core git stuff may help some people get those scripts
-done, though, and it may also be instructive in helping people
-understand what it is that the higher-level helper scripts are actually
-doing. 
+------------------------------------------------
+$ man git-diff
+------------------------------------------------
 
-The core git is often called "plumbing", with the prettier user
-interfaces on top of it called "porcelain". You may not want to use the
-plumbing directly very often, but it can be good to know what the
-plumbing does for when the porcelain isn't flushing.
+Importing a new project
+-----------------------
 
-The material presented here often goes deep describing how things
-work internally.  If you are mostly interested in using git as a
-SCM, you can skip them during your first pass.
+Assume you have a tarball project.tar.gz with your initial work.  You
+can place it under git revision control as follows.
 
-[NOTE]
-And those "too deep" descriptions are often marked as Note.
+------------------------------------------------
+$ tar -xzf project.tar.gz
+$ cd project
+$ git init-db
+------------------------------------------------
 
-[NOTE]
-If you are already familiar with another version control system,
-like CVS, you may want to take a look at
-link:everyday.html[Everyday GIT in 20 commands or so] first
-before reading this.
+Git will reply
 
+------------------------------------------------
+defaulting to local storage area
+------------------------------------------------
 
-Creating a git repository
--------------------------
+You've now initialized the working directory--you may notice a new
+directory created, named ".git".  Tell git that you want it to track
+every file under the current directory with
 
-Creating a new git repository couldn't be easier: all git repositories start
-out empty, and the only thing you need to do is find yourself a
-subdirectory that you want to use as a working tree - either an empty
-one for a totally new project, or an existing working tree that you want
-to import into git. 
+------------------------------------------------
+$ git add .
+------------------------------------------------
 
-For our first example, we're going to start a totally new repository from
-scratch, with no pre-existing files, and we'll call it `git-tutorial`.
-To start up, create a subdirectory for it, change into that
-subdirectory, and initialize the git infrastructure with `git-init-db`:
+Finally,
 
 ------------------------------------------------
-$ mkdir git-tutorial
-$ cd git-tutorial
-$ git-init-db
+$ git commit -a
 ------------------------------------------------
 
-to which git will reply
+will prompt you for a commit message, then record the current state
+of all the files to the repository.
 
-----------------
-defaulting to local storage area
-----------------
+Try modifying some files, then run
 
-which is just git's way of saying that you haven't been doing anything
-strange, and that it will have created a local `.git` directory setup for
-your new project. You will now have a `.git` directory, and you can
-inspect that with `ls`. For your new empty project, it should show you
-three entries, among other things:
-
- - a symlink called `HEAD`, pointing to `refs/heads/master` (if your
-   platform does not have native symlinks, it is a file containing the
-   line "ref: refs/heads/master")
-+
-Don't worry about the fact that the file that the `HEAD` link points to
-doesn't even exist yet -- you haven't created the commit that will
-start your `HEAD` development branch yet.
-
- - a subdirectory called `objects`, which will contain all the
-   objects of your project. You should never have any real reason to
-   look at the objects directly, but you might want to know that these
-   objects are what contains all the real 'data' in your repository.
-
- - a subdirectory called `refs`, which contains references to objects.
-
-In particular, the `refs` subdirectory will contain two other
-subdirectories, named `heads` and `tags` respectively. They do
-exactly what their names imply: they contain references to any number
-of different 'heads' of development (aka 'branches'), and to any
-'tags' that you have created to name specific versions in your
-repository.
-
-One note: the special `master` head is the default branch, which is
-why the `.git/HEAD` file was created as a symlink to it even if it
-doesn't yet exist. Basically, the `HEAD` link is supposed to always
-point to the branch you are working on right now, and you always
-start out expecting to work on the `master` branch.
-
-However, this is only a convention, and you can name your branches
-anything you want, and don't have to ever even 'have' a `master`
-branch. A number of the git tools will assume that `.git/HEAD` is
-valid, though.
-
-[NOTE]
-An 'object' is identified by its 160-bit SHA1 hash, aka 'object name',
-and a reference to an object is always the 40-byte hex
-representation of that SHA1 name. The files in the `refs`
-subdirectory are expected to contain these hex references
-(usually with a final `\'\n\'` at the end), and you should thus
-expect to see a number of 41-byte files containing these
-references in these `refs` subdirectories when you actually start
-populating your tree.
-
-[NOTE]
-An advanced user may want to take a look at the
-link:repository-layout.html[repository layout] document
-after finishing this tutorial.
+------------------------------------------------
+$ git diff
+------------------------------------------------
 
-You have now created your first git repository. Of course, since it's
-empty, that's not very useful, so let's start populating it with data.
+to review your changes.  When you're done,
 
+------------------------------------------------
+$ git commit -a
+------------------------------------------------
 
-Populating a git repository
----------------------------
+will again prompt your for a message describing the change, and then
+record the new versions of the modified files.
 
-We'll keep this simple and stupid, so we'll start off with populating a
-few trivial files just to get a feel for it.
+A note on commit messages: Though not required, it's a good idea to
+begin the commit message with a single short (less than 50 character)
+line summarizing the change, followed by a blank line and then a more
+thorough description.  Tools that turn commits into email, for
+example, use the first line on the Subject line and the rest of the
+commit in the body.
 
-Start off with just creating any random files that you want to maintain
-in your git repository. We'll start off with a few bad examples, just to
-get a feel for how this works:
+To add a new file, first create the file, then
 
 ------------------------------------------------
-$ echo "Hello World" >hello
-$ echo "Silly example" >example
+$ git add path/to/new/file
 ------------------------------------------------
 
-you have now created two files in your working tree (aka 'working directory'), but to
-actually check in your hard work, you will have to go through two steps:
+then commit as usual.  No special command is required when removing a
+file; just remove it, then commit.
 
- - fill in the 'index' file (aka 'cache') with the information about your
-   working tree state.
+At any point you can view the history of your changes using
 
- - commit that index file as an object.
+------------------------------------------------
+$ git whatchanged
+------------------------------------------------
 
-The first step is trivial: when you want to tell git about any changes
-to your working tree, you use the `git-update-index` program. That
-program normally just takes a list of filenames you want to update, but
-to avoid trivial mistakes, it refuses to add new entries to the index
-(or remove existing ones) unless you explicitly tell it that you're
-adding a new entry with the `\--add` flag (or removing an entry with the
-`\--remove`) flag.
+If you also want to see complete diffs at each step, use
 
-So to populate the index with the two files you just created, you can do
+------------------------------------------------
+$ git whatchanged -p
+------------------------------------------------
+
+Managing branches
+-----------------
+
+A single git repository can maintain multiple branches of
+development.  To create a new branch named "experimental", use
 
 ------------------------------------------------
-$ git-update-index --add hello example
+$ git branch experimental
 ------------------------------------------------
 
-and you have now told git to track those two files.
+If you now run
 
-In fact, as you did that, if you now look into your object directory,
-you'll notice that git will have added two new objects to the object
-database. If you did exactly the steps above, you should now be able to do
+------------------------------------------------
+$ git branch
+------------------------------------------------
 
+you'll get a list of all existing branches:
 
-----------------
-$ ls .git/objects/??/*
-----------------
+------------------------------------------------
+  experimental
+* master
+------------------------------------------------
 
-and see two files:
+The "experimental" branch is the one you just created, and the
+"master" branch is a default branch that was created for you
+automatically.  The asterisk marks the branch you are currently on;
+type
 
-----------------
-.git/objects/55/7db03de997c86a4a028e1ebd3a1ceb225be238 
-.git/objects/f2/4c74a2e500f5ee1332c86b94199f52b1d1d962
-----------------
+------------------------------------------------
+$ git checkout experimental
+------------------------------------------------
 
-which correspond with the objects with names of 557db... and f24c7..
-respectively.
+to switch to the experimental branch.  Now edit a file, commit the
+change, and switch back to the master branch:
 
-If you want to, you can use `git-cat-file` to look at those objects, but
-you'll have to use the object name, not the filename of the object:
+------------------------------------------------
+(edit file)
+$ git commit -a
+$ git checkout master
+------------------------------------------------
 
-----------------
-$ git-cat-file -t 557db03de997c86a4a028e1ebd3a1ceb225be238
-----------------
+Check that the change you made is no longer visible, since it was
+made on the experimental branch and you're back on the master branch.
 
-where the `-t` tells `git-cat-file` to tell you what the "type" of the
-object is. git will tell you that you have a "blob" object (ie just a
-regular file), and you can see the contents with
+You can make a different change on the master branch:
 
-----------------
-$ git-cat-file "blob" 557db03
-----------------
+------------------------------------------------
+(edit file)
+$ git commit -a
+------------------------------------------------
 
-which will print out "Hello World". The object 557db03 is nothing
-more than the contents of your file `hello`.
+at this point the two branches have diverged, with different changes
+made in each.  To merge the changes made in the two branches, run
 
-[NOTE]
-Don't confuse that object with the file `hello` itself. The
-object is literally just those specific *contents* of the file, and
-however much you later change the contents in file `hello`, the object
-we just looked at will never change. Objects are immutable.
+------------------------------------------------
+$ git pull . experimental
+------------------------------------------------
 
-[NOTE]
-The second example demonstrates that you can
-abbreviate the object name to only the first several
-hexadecimal digits in most places.
+If the changes don't conflict, you're done.  If there are conflicts,
+markers will be left in the problematic files showing the conflict;
 
-Anyway, as we mentioned previously, you normally never actually take a
-look at the objects themselves, and typing long 40-character hex
-names is not something you'd normally want to do. The above digression
-was just to show that `git-update-index` did something magical, and
-actually saved away the contents of your files into the git object
-database.
+------------------------------------------------
+$ git diff
+------------------------------------------------
 
-Updating the index did something else too: it created a `.git/index`
-file. This is the index that describes your current working tree, and
-something you should be very aware of. Again, you normally never worry
-about the index file itself, but you should be aware of the fact that
-you have not actually really "checked in" your files into git so far,
-you've only *told* git about them.
+will show this.  Once you've edited the files to resolve the
+conflicts,
 
-However, since git knows about them, you can now start using some of the
-most basic git commands to manipulate the files or look at their status. 
+------------------------------------------------
+$ git commit -a
+------------------------------------------------
 
-In particular, let's not even check in the two files into git yet, we'll
-start off by adding another line to `hello` first:
+will commit the result of the merge. Finally,
 
 ------------------------------------------------
-$ echo "It's a new day for git" >>hello
+$ gitk
 ------------------------------------------------
 
-and you can now, since you told git about the previous state of `hello`, ask
-git what has changed in the tree compared to your old index, using the
-`git-diff-files` command:
+will show a nice graphical representation of the resulting history.
 
-------------
-$ git-diff-files
-------------
+If you develop on a branch crazy-idea, then regret it, you can always
+delete the branch with
 
-Oops. That wasn't very readable. It just spit out its own internal
-version of a `diff`, but that internal version really just tells you
-that it has noticed that "hello" has been modified, and that the old object
-contents it had have been replaced with something else.
+-------------------------------------
+$ git branch -D crazy-idea
+-------------------------------------
 
-To make it readable, we can tell git-diff-files to output the
-differences as a patch, using the `-p` flag:
+Branches are cheap and easy, so this is a good way to try something
+out.
 
-------------
-$ git-diff-files -p
-diff --git a/hello b/hello
-index 557db03..263414f 100644
---- a/hello
-+++ b/hello
-@@ -1 +1,2 @@
- Hello World
-+It's a new day for git
-----
+Using git for collaboration
+---------------------------
 
-i.e. the diff of the change we caused by adding another line to `hello`.
+Suppose that Alice has started a new project with a git repository in
+/home/alice/project, and that Bob, who has a home directory on the
+same machine, wants to contribute.
 
-In other words, `git-diff-files` always shows us the difference between
-what is recorded in the index, and what is currently in the working
-tree. That's very useful.
+Bob begins with:
 
-A common shorthand for `git-diff-files -p` is to just write `git
-diff`, which will do the same thing.
+------------------------------------------------
+$ git clone /home/alice/project myrepo
+------------------------------------------------
 
-------------
-$ git diff
-diff --git a/hello b/hello
-index 557db03..263414f 100644
---- a/hello
-+++ b/hello
-@@ -1 +1,2 @@
- Hello World
-+It's a new day for git
-------------
-
-
-Committing git state
---------------------
-
-Now, we want to go to the next stage in git, which is to take the files
-that git knows about in the index, and commit them as a real tree. We do
-that in two phases: creating a 'tree' object, and committing that 'tree'
-object as a 'commit' object together with an explanation of what the
-tree was all about, along with information of how we came to that state.
-
-Creating a tree object is trivial, and is done with `git-write-tree`.
-There are no options or other input: git-write-tree will take the
-current index state, and write an object that describes that whole
-index. In other words, we're now tying together all the different
-filenames with their contents (and their permissions), and we're
-creating the equivalent of a git "directory" object:
-
-------------------------------------------------
-$ git-write-tree
-------------------------------------------------
-
-and this will just output the name of the resulting tree, in this case
-(if you have done exactly as I've described) it should be
-
-----------------
-8988da15d077d4829fc51d8544c097def6644dbb
-----------------
-
-which is another incomprehensible object name. Again, if you want to,
-you can use `git-cat-file -t 8988d\...` to see that this time the object
-is not a "blob" object, but a "tree" object (you can also use
-`git-cat-file` to actually output the raw object contents, but you'll see
-mainly a binary mess, so that's less interesting).
-
-However -- normally you'd never use `git-write-tree` on its own, because
-normally you always commit a tree into a commit object using the
-`git-commit-tree` command. In fact, it's easier to not actually use
-`git-write-tree` on its own at all, but to just pass its result in as an
-argument to `git-commit-tree`.
-
-`git-commit-tree` normally takes several arguments -- it wants to know
-what the 'parent' of a commit was, but since this is the first commit
-ever in this new repository, and it has no parents, we only need to pass in
-the object name of the tree. However, `git-commit-tree`
-also wants to get a commit message
-on its standard input, and it will write out the resulting object name for the
-commit to its standard output.
-
-And this is where we create the `.git/refs/heads/master` file
-which is pointed at by `HEAD`. This file is supposed to contain
-the reference to the top-of-tree of the master branch, and since
-that's exactly what `git-commit-tree` spits out, we can do this
-all with a sequence of simple shell commands:
-
-------------------------------------------------
-$ tree=$(git-write-tree)
-$ commit=$(echo 'Initial commit' | git-commit-tree $tree)
-$ git-update-ref HEAD $commit
-------------------------------------------------
-
-which will say:
-
-----------------
-Committing initial tree 8988da15d077d4829fc51d8544c097def6644dbb
-----------------
-
-just to warn you about the fact that it created a totally new commit
-that is not related to anything else. Normally you do this only *once*
-for a project ever, and all later commits will be parented on top of an
-earlier commit, and you'll never see this "Committing initial tree"
-message ever again.
-
-Again, normally you'd never actually do this by hand. There is a
-helpful script called `git commit` that will do all of this for you. So
-you could have just written `git commit`
-instead, and it would have done the above magic scripting for you.
-
-
-Making a change
----------------
-
-Remember how we did the `git-update-index` on file `hello` and then we
-changed `hello` afterward, and could compare the new state of `hello` with the
-state we saved in the index file? 
-
-Further, remember how I said that `git-write-tree` writes the contents
-of the *index* file to the tree, and thus what we just committed was in
-fact the *original* contents of the file `hello`, not the new ones. We did
-that on purpose, to show the difference between the index state, and the
-state in the working tree, and how they don't have to match, even
-when we commit things.
-
-As before, if we do `git-diff-files -p` in our git-tutorial project,
-we'll still see the same difference we saw last time: the index file
-hasn't changed by the act of committing anything. However, now that we
-have committed something, we can also learn to use a new command:
-`git-diff-index`.
-
-Unlike `git-diff-files`, which showed the difference between the index
-file and the working tree, `git-diff-index` shows the differences
-between a committed *tree* and either the index file or the working
-tree. In other words, `git-diff-index` wants a tree to be diffed
-against, and before we did the commit, we couldn't do that, because we
-didn't have anything to diff against. 
-
-But now we can do
-
-----------------
-$ git-diff-index -p HEAD
-----------------
-
-(where `-p` has the same meaning as it did in `git-diff-files`), and it
-will show us the same difference, but for a totally different reason. 
-Now we're comparing the working tree not against the index file,
-but against the tree we just wrote. It just so happens that those two
-are obviously the same, so we get the same result.
-
-Again, because this is a common operation, you can also just shorthand
-it with
-
-----------------
-$ git diff HEAD
-----------------
-
-which ends up doing the above for you.
-
-In other words, `git-diff-index` normally compares a tree against the
-working tree, but when given the `\--cached` flag, it is told to
-instead compare against just the index cache contents, and ignore the
-current working tree state entirely. Since we just wrote the index
-file to HEAD, doing `git-diff-index \--cached -p HEAD` should thus return
-an empty set of differences, and that's exactly what it does. 
-
-[NOTE]
-================
-`git-diff-index` really always uses the index for its
-comparisons, and saying that it compares a tree against the working
-tree is thus not strictly accurate. In particular, the list of
-files to compare (the "meta-data") *always* comes from the index file,
-regardless of whether the `\--cached` flag is used or not. The `\--cached`
-flag really only determines whether the file *contents* to be compared
-come from the working tree or not.
-
-This is not hard to understand, as soon as you realize that git simply
-never knows (or cares) about files that it is not told about
-explicitly. git will never go *looking* for files to compare, it
-expects you to tell it what the files are, and that's what the index
-is there for.
-================
-
-However, our next step is to commit the *change* we did, and again, to
-understand what's going on, keep in mind the difference between "working
-tree contents", "index file" and "committed tree". We have changes
-in the working tree that we want to commit, and we always have to
-work through the index file, so the first thing we need to do is to
-update the index cache:
-
-------------------------------------------------
-$ git-update-index hello
-------------------------------------------------
-
-(note how we didn't need the `\--add` flag this time, since git knew
-about the file already).
-
-Note what happens to the different `git-diff-\*` versions here. After
-we've updated `hello` in the index, `git-diff-files -p` now shows no
-differences, but `git-diff-index -p HEAD` still *does* show that the
-current state is different from the state we committed. In fact, now
-`git-diff-index` shows the same difference whether we use the `--cached`
-flag or not, since now the index is coherent with the working tree.
-
-Now, since we've updated `hello` in the index, we can commit the new
-version. We could do it by writing the tree by hand again, and
-committing the tree (this time we'd have to use the `-p HEAD` flag to
-tell commit that the HEAD was the *parent* of the new commit, and that
-this wasn't an initial commit any more), but you've done that once
-already, so let's just use the helpful script this time:
-
-------------------------------------------------
-$ git commit
-------------------------------------------------
-
-which starts an editor for you to write the commit message and tells you
-a bit about what you have done.
-
-Write whatever message you want, and all the lines that start with '#'
-will be pruned out, and the rest will be used as the commit message for
-the change. If you decide you don't want to commit anything after all at
-this point (you can continue to edit things and update the index), you
-can just leave an empty message. Otherwise `git commit` will commit
-the change for you.
-
-You've now made your first real git commit. And if you're interested in
-looking at what `git commit` really does, feel free to investigate:
-it's a few very simple shell scripts to generate the helpful (?) commit
-message headers, and a few one-liners that actually do the
-commit itself (`git-commit`).
-
-
-Inspecting Changes
-------------------
-
-While creating changes is useful, it's even more useful if you can tell
-later what changed. The most useful command for this is another of the
-`diff` family, namely `git-diff-tree`.
-
-`git-diff-tree` can be given two arbitrary trees, and it will tell you the
-differences between them. Perhaps even more commonly, though, you can
-give it just a single commit object, and it will figure out the parent
-of that commit itself, and show the difference directly. Thus, to get
-the same diff that we've already seen several times, we can now do
-
-----------------
-$ git-diff-tree -p HEAD
-----------------
-
-(again, `-p` means to show the difference as a human-readable patch),
-and it will show what the last commit (in `HEAD`) actually changed.
-
-[NOTE]
-============
-Here is an ASCII art by Jon Loeliger that illustrates how
-various diff-\* commands compare things.
-
-                      diff-tree
-                       +----+
-                       |    |
-                       |    |
-                       V    V
-                    +-----------+
-                    | Object DB |
-                    |  Backing  |
-                    |   Store   |
-                    +-----------+
-                      ^    ^
-                      |    |
-                      |    |  diff-index --cached
-                      |    |
-          diff-index  |    V
-                      |  +-----------+
-                      |  |   Index   |
-                      |  |  "cache"  |
-                      |  +-----------+
-                      |    ^
-                      |    |
-                      |    |  diff-files
-                      |    |
-                      V    V
-                    +-----------+
-                    |  Working  |
-                    | Directory |
-                    +-----------+
-============
-
-More interestingly, you can also give `git-diff-tree` the `-v` flag, which
-tells it to also show the commit message and author and date of the
-commit, and you can tell it to show a whole series of diffs.
-Alternatively, you can tell it to be "silent", and not show the diffs at
-all, but just show the actual commit message.
-
-In fact, together with the `git-rev-list` program (which generates a
-list of revisions), `git-diff-tree` ends up being a veritable fount of
-changes. A trivial (but very useful) script called `git-whatchanged` is
-included with git which does exactly this, and shows a log of recent
-activities.
-
-To see the whole history of our pitiful little git-tutorial project, you
-can do
-
-----------------
-$ git log
-----------------
-
-which shows just the log messages, or if we want to see the log together
-with the associated patches use the more complex (and much more
-powerful)
-
-----------------
-$ git-whatchanged -p --root
-----------------
-
-and you will see exactly what has changed in the repository over its
-short history. 
-
-[NOTE]
-The `\--root` flag is a flag to `git-diff-tree` to tell it to
-show the initial aka 'root' commit too. Normally you'd probably not
-want to see the initial import diff, but since the tutorial project
-was started from scratch and is so small, we use it to make the result
-a bit more interesting.
-
-With that, you should now be having some inkling of what git does, and
-can explore on your own.
-
-[NOTE]
-Most likely, you are not directly using the core
-git Plumbing commands, but using Porcelain like Cogito on top
-of it. Cogito works a bit differently and you usually do not
-have to run `git-update-index` yourself for changed files (you
-do tell underlying git about additions and removals via
-`cg-add` and `cg-rm` commands). Just before you make a commit
-with `cg-commit`, Cogito figures out which files you modified,
-and runs `git-update-index` on them for you.
+This creates a new directory "myrepo" containing a clone of Alice's
+repository.  The clone is on an equal footing with the original
+project, posessing its own copy of the original project's history.
 
+Bob then makes some changes and commits them:
 
-Tagging a version
------------------
+------------------------------------------------
+(edit files)
+$ git commit -a
+(repeat as necessary)
+------------------------------------------------
+
+When he's ready, he tells Alice to pull changes from the repository
+at /home/bob/myrepo.  She does this with:
+
+------------------------------------------------
+$ cd /home/alice/project
+$ git pull /home/bob/myrepo
+------------------------------------------------
+
+This actually pulls changes from the branch in Bob's repository named
+"master".  Alice could request a different branch by adding the name
+of the branch to the end of the git pull command line.
+
+This merges Bob's changes into her repository; "git whatchanged" will
+now show the new commits.  If Alice has made her own changes in the
+meantime, then Bob's changes will be merged in, and she will need to
+manually fix any conflicts.
 
-In git, there are two kinds of tags, a "light" one, and an "annotated tag".
+A more cautious Alice might wish to examine Bob's changes before
+pulling them.  She can do this by creating a temporary branch just
+for the purpose of studying Bob's changes:
 
-A "light" tag is technically nothing more than a branch, except we put
-it in the `.git/refs/tags/` subdirectory instead of calling it a `head`.
-So the simplest form of tag involves nothing more than
-
-------------------------------------------------
-$ git tag my-first-tag
-------------------------------------------------
-
-which just writes the current `HEAD` into the `.git/refs/tags/my-first-tag`
-file, after which point you can then use this symbolic name for that
-particular state. You can, for example, do
-
-----------------
-$ git diff my-first-tag
-----------------
-
-to diff your current state against that tag (which at this point will
-obviously be an empty diff, but if you continue to develop and commit
-stuff, you can use your tag as an "anchor-point" to see what has changed
-since you tagged it.
-
-An "annotated tag" is actually a real git object, and contains not only a
-pointer to the state you want to tag, but also a small tag name and
-message, along with optionally a PGP signature that says that yes,
-you really did
-that tag. You create these annotated tags with either the `-a` or
-`-s` flag to `git tag`:
-
-----------------
-$ git tag -s <tagname>
-----------------
-
-which will sign the current `HEAD` (but you can also give it another
-argument that specifies the thing to tag, ie you could have tagged the
-current `mybranch` point by using `git tag <tagname> mybranch`).
-
-You normally only do signed tags for major releases or things
-like that, while the light-weight tags are useful for any marking you
-want to do -- any time you decide that you want to remember a certain
-point, just create a private tag for it, and you have a nice symbolic
-name for the state at that point.
-
-
-Copying repositories
---------------------
-
-git repositories are normally totally self-sufficient and relocatable
-Unlike CVS, for example, there is no separate notion of
-"repository" and "working tree". A git repository normally *is* the
-working tree, with the local git information hidden in the `.git`
-subdirectory. There is nothing else. What you see is what you got.
-
-[NOTE]
-You can tell git to split the git internal information from
-the directory that it tracks, but we'll ignore that for now: it's not
-how normal projects work, and it's really only meant for special uses.
-So the mental model of "the git information is always tied directly to
-the working tree that it describes" may not be technically 100%
-accurate, but it's a good model for all normal use.
-
-This has two implications: 
-
- - if you grow bored with the tutorial repository you created (or you've
-   made a mistake and want to start all over), you can just do simple
-+
-----------------
-$ rm -rf git-tutorial
-----------------
-+
-and it will be gone. There's no external repository, and there's no
-history outside the project you created.
-
- - if you want to move or duplicate a git repository, you can do so. There
-   is `git clone` command, but if all you want to do is just to
-   create a copy of your repository (with all the full history that
-   went along with it), you can do so with a regular
-   `cp -a git-tutorial new-git-tutorial`.
-+
-Note that when you've moved or copied a git repository, your git index
-file (which caches various information, notably some of the "stat"
-information for the files involved) will likely need to be refreshed.
-So after you do a `cp -a` to create a new copy, you'll want to do
-+
-----------------
-$ git-update-index --refresh
-----------------
-+
-in the new repository to make sure that the index file is up-to-date.
-
-Note that the second point is true even across machines. You can
-duplicate a remote git repository with *any* regular copy mechanism, be it
-`scp`, `rsync` or `wget`.
-
-When copying a remote repository, you'll want to at a minimum update the
-index cache when you do this, and especially with other peoples'
-repositories you often want to make sure that the index cache is in some
-known state (you don't know *what* they've done and not yet checked in),
-so usually you'll precede the `git-update-index` with a
-
-----------------
-$ git-read-tree --reset HEAD
-$ git-update-index --refresh
-----------------
-
-which will force a total index re-build from the tree pointed to by `HEAD`.
-It resets the index contents to `HEAD`, and then the `git-update-index`
-makes sure to match up all index entries with the checked-out files.
-If the original repository had uncommitted changes in its
-working tree, `git-update-index --refresh` notices them and
-tells you they need to be updated.
-
-The above can also be written as simply
-
-----------------
-$ git reset
-----------------
-
-and in fact a lot of the common git command combinations can be scripted
-with the `git xyz` interfaces.  You can learn things by just looking
-at what the various git scripts do.  For example, `git reset` is the
-above two lines implemented in `git-reset`, but some things like
-`git status` and `git commit` are slightly more complex scripts around
-the basic git commands.
-
-Many (most?) public remote repositories will not contain any of
-the checked out files or even an index file, and will *only* contain the
-actual core git files. Such a repository usually doesn't even have the
-`.git` subdirectory, but has all the git files directly in the
-repository. 
-
-To create your own local live copy of such a "raw" git repository, you'd
-first create your own subdirectory for the project, and then copy the
-raw repository contents into the `.git` directory. For example, to
-create your own copy of the git repository, you'd do the following
-
-----------------
-$ mkdir my-git
-$ cd my-git
-$ rsync -rL rsync://rsync.kernel.org/pub/scm/git/git.git/ .git
-----------------
-
-followed by 
-
-----------------
-$ git-read-tree HEAD
-----------------
-
-to populate the index. However, now you have populated the index, and
-you have all the git internal files, but you will notice that you don't
-actually have any of the working tree files to work on. To get
-those, you'd check them out with
-
-----------------
-$ git-checkout-index -u -a
-----------------
-
-where the `-u` flag means that you want the checkout to keep the index
-up-to-date (so that you don't have to refresh it afterward), and the
-`-a` flag means "check out all files" (if you have a stale copy or an
-older version of a checked out tree you may also need to add the `-f`
-flag first, to tell git-checkout-index to *force* overwriting of any old
-files). 
-
-Again, this can all be simplified with
-
-----------------
-$ git clone rsync://rsync.kernel.org/pub/scm/git/git.git/ my-git
-$ cd my-git
-$ git checkout
-----------------
-
-which will end up doing all of the above for you.
-
-You have now successfully copied somebody else's (mine) remote
-repository, and checked it out. 
-
-
-Creating a new branch
----------------------
-
-Branches in git are really nothing more than pointers into the git
-object database from within the `.git/refs/` subdirectory, and as we
-already discussed, the `HEAD` branch is nothing but a symlink to one of
-these object pointers. 
-
-You can at any time create a new branch by just picking an arbitrary
-point in the project history, and just writing the SHA1 name of that
-object into a file under `.git/refs/heads/`. You can use any filename you
-want (and indeed, subdirectories), but the convention is that the
-"normal" branch is called `master`. That's just a convention, though,
-and nothing enforces it. 
-
-To show that as an example, let's go back to the git-tutorial repository we
-used earlier, and create a branch in it. You do that by simply just
-saying that you want to check out a new branch:
-
-------------
-$ git checkout -b mybranch
-------------
-
-will create a new branch based at the current `HEAD` position, and switch
-to it. 
-
-[NOTE]
-================================================
-If you make the decision to start your new branch at some
-other point in the history than the current `HEAD`, you can do so by
-just telling `git checkout` what the base of the checkout would be.
-In other words, if you have an earlier tag or branch, you'd just do
-
-------------
-$ git checkout -b mybranch earlier-commit
-------------
-
-and it would create the new branch `mybranch` at the earlier commit,
-and check out the state at that time.
-================================================
+-------------------------------------
+$ git fetch /home/bob/myrepo master:bob-incoming
+-------------------------------------
+
+which fetches the changes from Bob's master branch into a new branch
+named bob-incoming.  (Unlike git pull, git fetch just fetches a copy
+of Bob's line of development without doing any merging).  Then
+
+-------------------------------------
+$ git whatchanged -p master..bob-incoming
+-------------------------------------
 
-You can always just jump back to your original `master` branch by doing
+shows a list of all the changes that Bob made since he branched from
+Alice's master branch.
 
-------------
+After examing those changes, and possibly fixing things, Alice can
+pull the changes into her master branch:
+
+-------------------------------------
 $ git checkout master
-------------
+$ git pull . bob-incoming
+-------------------------------------
 
-(or any other branch-name, for that matter) and if you forget which
-branch you happen to be on, a simple
+The last command is a pull from the "bob-incoming" branch in Alice's
+own repository.
 
-------------
-$ ls -l .git/HEAD
-------------
+Later, Bob can update his repo with Alice's latest changes using
 
-will tell you where it's pointing (Note that on platforms with bad or no
-symlink support, you have to execute
+-------------------------------------
+$ git pull
+-------------------------------------
 
-------------
-$ cat .git/HEAD
-------------
+Note that he doesn't need to give the path to Alice's repository;
+when Bob cloned Alice's repository, git stored the location of her
+repository in the file .git/remotes/origin, and that location is used
+as the default for pulls.
 
-instead). To get the list of branches you have, you can say
+Bob may also notice a branch in his repository that he didn't create:
 
-------------
+-------------------------------------
 $ git branch
-------------
+* master
+  origin
+-------------------------------------
 
-which is nothing more than a simple script around `ls .git/refs/heads`.
-There will be asterisk in front of the branch you are currently on.
+The "origin" branch, which was created automatically by "git clone",
+is a pristine copy of Alice's master branch; Bob should never commit
+to it.
 
-Sometimes you may wish to create a new branch _without_ actually
-checking it out and switching to it. If so, just use the command
+If Bob later decides to work from a different host, he can still
+perform clones and pulls using the ssh protocol:
 
-------------
-$ git branch <branchname> [startingpoint]
-------------
+-------------------------------------
+$ git clone alice.org:/home/alice/project myrepo
+-------------------------------------
 
-which will simply _create_ the branch, but will not do anything further. 
-You can then later -- once you decide that you want to actually develop
-on that branch -- switch to that branch with a regular `git checkout`
-with the branchname as the argument.
+Alternatively, git has a native protocol, or can use rsync or http;
+see gitlink:git-pull[1] for details.
 
+Git can also be used in a CVS-like mode, with a central repository
+that various users push changes to; see gitlink:git-push[1] and
+link:cvs-migration.html[git for CVS users].
 
-Merging two branches
---------------------
+Keeping track of history
+------------------------
 
-One of the ideas of having a branch is that you do some (possibly
-experimental) work in it, and eventually merge it back to the main
-branch. So assuming you created the above `mybranch` that started out
-being the same as the original `master` branch, let's make sure we're in
-that branch, and do some work there.
+Git history is represented as a series of interrelated commits.  The
+most recent commit in the currently checked-out branch can always be
+referred to as HEAD, and the "parent" of any commit can always be
+referred to by appending a caret, "^", to the end of the name of the
+commit.  So, for example,
 
-------------------------------------------------
-$ git checkout mybranch
-$ echo "Work, work, work" >>hello
-$ git commit -m 'Some work.' hello
-------------------------------------------------
+-------------------------------------
+git diff HEAD^ HEAD
+-------------------------------------
 
-Here, we just added another line to `hello`, and we used a shorthand for
-doing both `git-update-index hello` and `git commit` by just giving the
-filename directly to `git commit`. The `-m` flag is to give the
-commit log message from the command line.
+shows the difference between the most-recently checked-in state of
+the tree and the previous state, and
 
-Now, to make it a bit more interesting, let's assume that somebody else
-does some work in the original branch, and simulate that by going back
-to the master branch, and editing the same file differently there:
+-------------------------------------
+git diff HEAD^^ HEAD^
+-------------------------------------
 
-------------
-$ git checkout master
-------------
+shows the difference between that previous state and the state two
+commits ago.  Also, HEAD~5 can be used as a shorthand for HEAD^^^^^,
+and more generally HEAD~n can refer to the nth previous commit.
+Commits representing merges have more than one parent, and you can
+specify which parent to follow in that case; see
+gitlink:git-rev-parse[1].
 
-Here, take a moment to look at the contents of `hello`, and notice how they
-don't contain the work we just did in `mybranch` -- because that work
-hasn't happened in the `master` branch at all. Then do
-
-------------
-$ echo "Play, play, play" >>hello
-$ echo "Lots of fun" >>example
-$ git commit -m 'Some fun.' hello example
-------------
-
-since the master branch is obviously in a much better mood.
-
-Now, you've got two branches, and you decide that you want to merge the
-work done. Before we do that, let's introduce a cool graphical tool that
-helps you view what's going on:
-
-----------------
-$ gitk --all
-----------------
-
-will show you graphically both of your branches (that's what the `\--all`
-means: normally it will just show you your current `HEAD`) and their
-histories. You can also see exactly how they came to be from a common
-source. 
-
-Anyway, let's exit `gitk` (`^Q` or the File menu), and decide that we want
-to merge the work we did on the `mybranch` branch into the `master`
-branch (which is currently our `HEAD` too). To do that, there's a nice
-script called `git merge`, which wants to know which branches you want
-to resolve and what the merge is all about:
-
-------------
-$ git merge "Merge work in mybranch" HEAD mybranch
-------------
-
-where the first argument is going to be used as the commit message if
-the merge can be resolved automatically.
-
-Now, in this case we've intentionally created a situation where the
-merge will need to be fixed up by hand, though, so git will do as much
-of it as it can automatically (which in this case is just merge the `example`
-file, which had no differences in the `mybranch` branch), and say:
-
-----------------
-	Trying really trivial in-index merge...
-	fatal: Merge requires file-level merging
-	Nope.
-	...
-	Auto-merging hello 
-	CONFLICT (content): Merge conflict in hello 
-	Automatic merge failed/prevented; fix up by hand
-----------------
-
-which is way too verbose, but it basically tells you that it failed the
-really trivial merge ("Simple merge") and did an "Automatic merge"
-instead, but that too failed due to conflicts in `hello`.
-
-Not to worry. It left the (trivial) conflict in `hello` in the same form you
-should already be well used to if you've ever used CVS, so let's just
-open `hello` in our editor (whatever that may be), and fix it up somehow.
-I'd suggest just making it so that `hello` contains all four lines:
-
-------------
-Hello World
-It's a new day for git
-Play, play, play
-Work, work, work
-------------
-
-and once you're happy with your manual merge, just do a
-
-------------
-$ git commit hello
-------------
-
-which will very loudly warn you that you're now committing a merge
-(which is correct, so never mind), and you can write a small merge
-message about your adventures in git-merge-land.
-
-After you're done, start up `gitk \--all` to see graphically what the
-history looks like. Notice that `mybranch` still exists, and you can
-switch to it, and continue to work with it if you want to. The
-`mybranch` branch will not contain the merge, but next time you merge it
-from the `master` branch, git will know how you merged it, so you'll not
-have to do _that_ merge again.
-
-Another useful tool, especially if you do not always work in X-Window
-environment, is `git show-branch`.
-
-------------------------------------------------
-$ git show-branch master mybranch
-* [master] Merge work in mybranch
- ! [mybranch] Some work.
---
--  [master] Merge work in mybranch
-*+ [mybranch] Some work.
-------------------------------------------------
-
-The first two lines indicate that it is showing the two branches
-and the first line of the commit log message from their
-top-of-the-tree commits, you are currently on `master` branch
-(notice the asterisk `*` character), and the first column for
-the later output lines is used to show commits contained in the
-`master` branch, and the second column for the `mybranch`
-branch. Three commits are shown along with their log messages.
-All of them have non blank characters in the first column (`*`
-shows an ordinary commit on the current branch, `.` is a merge commit), which
-means they are now part of the `master` branch. Only the "Some
-work" commit has the plus `+` character in the second column,
-because `mybranch` has not been merged to incorporate these
-commits from the master branch.  The string inside brackets
-before the commit log message is a short name you can use to
-name the commit.  In the above example, 'master' and 'mybranch'
-are branch heads.  'master~1' is the first parent of 'master'
-branch head.  Please see 'git-rev-parse' documentation if you
-see more complex cases.
-
-Now, let's pretend you are the one who did all the work in
-`mybranch`, and the fruit of your hard work has finally been merged
-to the `master` branch. Let's go back to `mybranch`, and run
-resolve to get the "upstream changes" back to your branch.
-
-------------
-$ git checkout mybranch
-$ git merge "Merge upstream changes." HEAD master
-------------
-
-This outputs something like this (the actual commit object names
-would be different)
-
-----------------
-Updating from ae3a2da... to a80b4aa....
- example |    1 +
- hello   |    1 +
- 2 files changed, 2 insertions(+), 0 deletions(-)
-----------------
-
-Because your branch did not contain anything more than what are
-already merged into the `master` branch, the resolve operation did
-not actually do a merge. Instead, it just updated the top of
-the tree of your branch to that of the `master` branch. This is
-often called 'fast forward' merge.
-
-You can run `gitk \--all` again to see how the commit ancestry
-looks like, or run `show-branch`, which tells you this.
-
-------------------------------------------------
-$ git show-branch master mybranch
-! [master] Merge work in mybranch
- * [mybranch] Merge work in mybranch
---
--- [master] Merge work in mybranch
-------------------------------------------------
-
-
-Merging external work
----------------------
-
-It's usually much more common that you merge with somebody else than
-merging with your own branches, so it's worth pointing out that git
-makes that very easy too, and in fact, it's not that different from
-doing a `git merge`. In fact, a remote merge ends up being nothing
-more than "fetch the work from a remote repository into a temporary tag"
-followed by a `git merge`.
-
-Fetching from a remote repository is done by, unsurprisingly,
-`git fetch`:
-
-----------------
-$ git fetch <remote-repository>
-----------------
-
-One of the following transports can be used to name the
-repository to download from:
-
-Rsync::
-	`rsync://remote.machine/path/to/repo.git/`
-+
-Rsync transport is usable for both uploading and downloading,
-but is completely unaware of what git does, and can produce
-unexpected results when you download from the public repository
-while the repository owner is uploading into it via `rsync`
-transport.  Most notably, it could update the files under
-`refs/` which holds the object name of the topmost commits
-before uploading the files in `objects/` -- the downloader would
-obtain head commit object name while that object itself is still
-not available in the repository.  For this reason, it is
-considered deprecated.
-
-SSH::
-	`remote.machine:/path/to/repo.git/` or
-+
-`ssh://remote.machine/path/to/repo.git/`
-+
-This transport can be used for both uploading and downloading,
-and requires you to have a log-in privilege over `ssh` to the
-remote machine.  It finds out the set of objects the other side
-lacks by exchanging the head commits both ends have and
-transfers (close to) minimum set of objects.  It is by far the
-most efficient way to exchange git objects between repositories.
-
-Local directory::
-	`/path/to/repo.git/`
-+
-This transport is the same as SSH transport but uses `sh` to run
-both ends on the local machine instead of running other end on
-the remote machine via `ssh`.
-
-git Native::
-	`git://remote.machine/path/to/repo.git/`
-+
-This transport was designed for anonymous downloading.  Like SSH
-transport, it finds out the set of objects the downstream side
-lacks and transfers (close to) minimum set of objects.
-
-HTTP(S)::
-	`http://remote.machine/path/to/repo.git/`
-+
-Downloader from http and https URL
-first obtains the topmost commit object name from the remote site
-by looking at the specified refname under `repo.git/refs/` directory,
-and then tries to obtain the
-commit object by downloading from `repo.git/objects/xx/xxx\...`
-using the object name of that commit object.  Then it reads the
-commit object to find out its parent commits and the associate
-tree object; it repeats this process until it gets all the
-necessary objects.  Because of this behaviour, they are
-sometimes also called 'commit walkers'.
-+
-The 'commit walkers' are sometimes also called 'dumb
-transports', because they do not require any git aware smart
-server like git Native transport does.  Any stock HTTP server
-that does not even support directory index would suffice.  But
-you must prepare your repository with `git-update-server-info`
-to help dumb transport downloaders.
-+
-There are (confusingly enough) `git-ssh-fetch` and `git-ssh-upload`
-programs, which are 'commit walkers'; they outlived their
-usefulness when git Native and SSH transports were introduced,
-and not used by `git pull` or `git push` scripts.
-
-Once you fetch from the remote repository, you `resolve` that
-with your current branch.
-
-However -- it's such a common thing to `fetch` and then
-immediately `resolve`, that it's called `git pull`, and you can
-simply do
-
-----------------
-$ git pull <remote-repository>
-----------------
-
-and optionally give a branch-name for the remote end as a second
-argument.
-
-[NOTE]
-You could do without using any branches at all, by
-keeping as many local repositories as you would like to have
-branches, and merging between them with `git pull`, just like
-you merge between branches. The advantage of this approach is
-that it lets you keep set of files for each `branch` checked
-out and you may find it easier to switch back and forth if you
-juggle multiple lines of development simultaneously. Of
-course, you will pay the price of more disk usage to hold
-multiple working trees, but disk space is cheap these days.
-
-[NOTE]
-You could even pull from your own repository by
-giving '.' as <remote-repository> parameter to `git pull`.  This
-is useful when you want to merge a local branch (or more, if you
-are making an Octopus) into the current branch.
-
-It is likely that you will be pulling from the same remote
-repository from time to time. As a short hand, you can store
-the remote repository URL in a file under .git/remotes/
-directory, like this:
-
-------------------------------------------------
-$ mkdir -p .git/remotes/
-$ cat >.git/remotes/linus <<\EOF
-URL: http://www.kernel.org/pub/scm/git/git.git/
-EOF
-------------------------------------------------
-
-and use the filename to `git pull` instead of the full URL.
-The URL specified in such file can even be a prefix
-of a full URL, like this:
-
-------------------------------------------------
-$ cat >.git/remotes/jgarzik <<\EOF
-URL: http://www.kernel.org/pub/scm/linux/git/jgarzik/
-EOF
-------------------------------------------------
-
-
-Examples.
-
-. `git pull linus`
-. `git pull linus tag v0.99.1`
-. `git pull jgarzik/netdev-2.6.git/ e100`
-
-the above are equivalent to:
-
-. `git pull http://www.kernel.org/pub/scm/git/git.git/ HEAD`
-. `git pull http://www.kernel.org/pub/scm/git/git.git/ tag v0.99.1`
-. `git pull http://www.kernel.org/pub/.../jgarzik/netdev-2.6.git e100`
+The name of a branch can also be used to refer to the most recent
+commit on that branch; so you can also say things like
 
+-------------------------------------
+git diff HEAD experimental
+-------------------------------------
 
-How does the merge work?
-------------------------
+to see the difference between the most-recently committed tree in
+the current branch and the most-recently committed tree in the
+experimental branch.
 
-We said this tutorial shows what plumbing does to help you cope
-with the porcelain that isn't flushing, but we so far did not
-talk about how the merge really works.  If you are following
-this tutorial the first time, I'd suggest to skip to "Publishing
-your work" section and come back here later.
-
-OK, still with me?  To give us an example to look at, let's go
-back to the earlier repository with "hello" and "example" file,
-and bring ourselves back to the pre-merge state:
-
-------------
-$ git show-branch --more=3 master mybranch
-! [master] Merge work in mybranch
- * [mybranch] Merge work in mybranch
---
--- [master] Merge work in mybranch
-+* [master^2] Some work.
-+* [master^] Some fun.
-------------
-
-Remember, before running `git merge`, our `master` head was at
-"Some fun." commit, while our `mybranch` head was at "Some
-work." commit.
-
-------------
-$ git checkout mybranch
-$ git reset --hard master^2
-$ git checkout master
-$ git reset --hard master^
-------------
+But you may find it more useful to see the list of commits made in
+the experimental branch but not in the current branch, and
 
-After rewinding, the commit structure should look like this:
+-------------------------------------
+git whatchanged HEAD..experimental
+-------------------------------------
 
-------------
-$ git show-branch
-* [master] Some fun.
- ! [mybranch] Some work.
---
- + [mybranch] Some work.
-*  [master] Some fun.
-*+ [mybranch^] New day.
-------------
-
-Now we are ready to experiment with the merge by hand.
-
-`git merge` command, when merging two branches, uses 3-way merge
-algorithm.  First, it finds the common ancestor between them.
-The command it uses is `git-merge-base`:
-
-------------
-$ mb=$(git-merge-base HEAD mybranch)
-------------
-
-The command writes the commit object name of the common ancestor
-to the standard output, so we captured its output to a variable,
-because we will be using it in the next step.  BTW, the common
-ancestor commit is the "New day." commit in this case.  You can
-tell it by:
-
-------------
-$ git-name-rev $mb
-my-first-tag
-------------
-
-After finding out a common ancestor commit, the second step is
-this:
-
-------------
-$ git-read-tree -m -u $mb HEAD mybranch
-------------
-
-This is the same `git-read-tree` command we have already seen,
-but it takes three trees, unlike previous examples.  This reads
-the contents of each tree into different 'stage' in the index
-file (the first tree goes to stage 1, the second stage 2,
-etc.).  After reading three trees into three stages, the paths
-that are the same in all three stages are 'collapsed' into stage
-0.  Also paths that are the same in two of three stages are
-collapsed into stage 0, taking the SHA1 from either stage 2 or
-stage 3, whichever is different from stage 1 (i.e. only one side
-changed from the common ancestor).
-
-After 'collapsing' operation, paths that are different in three
-trees are left in non-zero stages.  At this point, you can
-inspect the index file with this command:
-
-------------
-$ git-ls-files --stage
-100644 7f8b141b65fdcee47321e399a2598a235a032422 0	example
-100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1	hello
-100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2	hello
-100644 cc44c73eb783565da5831b4d820c962954019b69 3	hello
-------------
-
-In our example of only two files, we did not have unchanged
-files so only 'example' resulted in collapsing, but in real-life
-large projects, only small number of files change in one commit,
-and this 'collapsing' tends to trivially merge most of the paths
-fairly quickly, leaving only a handful the real changes in non-zero
-stages.
-
-To look at only non-zero stages, use `\--unmerged` flag:
-
-------------
-$ git-ls-files --unmerged
-100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1	hello
-100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2	hello
-100644 cc44c73eb783565da5831b4d820c962954019b69 3	hello
-------------
-
-The next step of merging is to merge these three versions of the
-file, using 3-way merge.  This is done by giving
-`git-merge-one-file` command as one of the arguments to
-`git-merge-index` command:
-
-------------
-$ git-merge-index git-merge-one-file hello
-Auto-merging hello.
-merge: warning: conflicts during merge
-ERROR: Merge conflict in hello.
-fatal: merge program failed
-------------
-
-`git-merge-one-file` script is called with parameters to
-describe those three versions, and is responsible to leave the
-merge results in the working tree.
-It is a fairly straightforward shell script, and
-eventually calls `merge` program from RCS suite to perform a
-file-level 3-way merge.  In this case, `merge` detects
-conflicts, and the merge result with conflict marks is left in
-the working tree..  This can be seen if you run `ls-files
---stage` again at this point:
-
-------------
-$ git-ls-files --stage
-100644 7f8b141b65fdcee47321e399a2598a235a032422 0	example
-100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1	hello
-100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2	hello
-100644 cc44c73eb783565da5831b4d820c962954019b69 3	hello
-------------
-
-This is the state of the index file and the working file after
-`git merge` returns control back to you, leaving the conflicting
-merge for you to resolve.  Notice that the path `hello` is still
-unmerged, and what you see with `git diff` at this point is
-differences since stage 2 (i.e. your version).
-
-
-Publishing your work
---------------------
-
-So we can use somebody else's work from a remote repository; but
-how can *you* prepare a repository to let other people pull from
-it?
-
-Your do your real work in your working tree that has your
-primary repository hanging under it as its `.git` subdirectory.
-You *could* make that repository accessible remotely and ask
-people to pull from it, but in practice that is not the way
-things are usually done. A recommended way is to have a public
-repository, make it reachable by other people, and when the
-changes you made in your primary working tree are in good shape,
-update the public repository from it. This is often called
-'pushing'.
-
-[NOTE]
-This public repository could further be mirrored, and that is
-how git repositories at `kernel.org` are managed.
-
-Publishing the changes from your local (private) repository to
-your remote (public) repository requires a write privilege on
-the remote machine. You need to have an SSH account there to
-run a single command, `git-receive-pack`.
-
-First, you need to create an empty repository on the remote
-machine that will house your public repository. This empty
-repository will be populated and be kept up-to-date by pushing
-into it later. Obviously, this repository creation needs to be
-done only once.
-
-[NOTE]
-`git push` uses a pair of programs,
-`git-send-pack` on your local machine, and `git-receive-pack`
-on the remote machine. The communication between the two over
-the network internally uses an SSH connection.
-
-Your private repository's git directory is usually `.git`, but
-your public repository is often named after the project name,
-i.e. `<project>.git`. Let's create such a public repository for
-project `my-git`. After logging into the remote machine, create
-an empty directory:
-
-------------
-$ mkdir my-git.git
-------------
-
-Then, make that directory into a git repository by running
-`git init-db`, but this time, since its name is not the usual
-`.git`, we do things slightly differently:
-
-------------
-$ GIT_DIR=my-git.git git-init-db
-------------
-
-Make sure this directory is available for others you want your
-changes to be pulled by via the transport of your choice. Also
-you need to make sure that you have the `git-receive-pack`
-program on the `$PATH`.
-
-[NOTE]
-Many installations of sshd do not invoke your shell as the login
-shell when you directly run programs; what this means is that if
-your login shell is `bash`, only `.bashrc` is read and not
-`.bash_profile`. As a workaround, make sure `.bashrc` sets up
-`$PATH` so that you can run `git-receive-pack` program.
-
-[NOTE]
-If you plan to publish this repository to be accessed over http,
-you should do `chmod +x my-git.git/hooks/post-update` at this
-point.  This makes sure that every time you push into this
-repository, `git-update-server-info` is run.
-
-Your "public repository" is now ready to accept your changes.
-Come back to the machine you have your private repository. From
-there, run this command:
-
-------------
-$ git push <public-host>:/path/to/my-git.git master
-------------
-
-This synchronizes your public repository to match the named
-branch head (i.e. `master` in this case) and objects reachable
-from them in your current repository.
-
-As a real example, this is how I update my public git
-repository. Kernel.org mirror network takes care of the
-propagation to other publicly visible machines:
-
-------------
-$ git push master.kernel.org:/pub/scm/git/git.git/ 
-------------
+will do that, just as
 
+-------------------------------------
+git whatchanged experimental..HEAD
+-------------------------------------
 
-Packing your repository
------------------------
+will show the list of commits made on the HEAD but not included in
+experimental.
+
+You can also give commits convenient names of your own: after running
+
+-------------------------------------
+$ git-tag v2.5 HEAD^^
+-------------------------------------
 
-Earlier, we saw that one file under `.git/objects/??/` directory
-is stored for each git object you create. This representation
-is efficient to create atomically and safely, but
-not so convenient to transport over the network. Since git objects are
-immutable once they are created, there is a way to optimize the
-storage by "packing them together". The command
-
-------------
-$ git repack
-------------
-
-will do it for you. If you followed the tutorial examples, you
-would have accumulated about 17 objects in `.git/objects/??/`
-directories by now. `git repack` tells you how many objects it
-packed, and stores the packed file in `.git/objects/pack`
-directory.
-
-[NOTE]
-You will see two files, `pack-\*.pack` and `pack-\*.idx`,
-in `.git/objects/pack` directory. They are closely related to
-each other, and if you ever copy them by hand to a different
-repository for whatever reason, you should make sure you copy
-them together. The former holds all the data from the objects
-in the pack, and the latter holds the index for random
-access.
-
-If you are paranoid, running `git-verify-pack` command would
-detect if you have a corrupt pack, but do not worry too much.
-Our programs are always perfect ;-).
-
-Once you have packed objects, you do not need to leave the
-unpacked objects that are contained in the pack file anymore.
-
-------------
-$ git prune-packed
-------------
-
-would remove them for you.
-
-You can try running `find .git/objects -type f` before and after
-you run `git prune-packed` if you are curious.  Also `git
-count-objects` would tell you how many unpacked objects are in
-your repository and how much space they are consuming.
-
-[NOTE]
-`git pull` is slightly cumbersome for HTTP transport, as a
-packed repository may contain relatively few objects in a
-relatively large pack. If you expect many HTTP pulls from your
-public repository you might want to repack & prune often, or
-never.
-
-If you run `git repack` again at this point, it will say
-"Nothing to pack". Once you continue your development and
-accumulate the changes, running `git repack` again will create a
-new pack, that contains objects created since you packed your
-repository the last time. We recommend that you pack your project
-soon after the initial import (unless you are starting your
-project from scratch), and then run `git repack` every once in a
-while, depending on how active your project is.
-
-When a repository is synchronized via `git push` and `git pull`
-objects packed in the source repository are usually stored
-unpacked in the destination, unless rsync transport is used.
-While this allows you to use different packing strategies on
-both ends, it also means you may need to repack both
-repositories every once in a while.
-
-
-Working with Others
--------------------
-
-Although git is a truly distributed system, it is often
-convenient to organize your project with an informal hierarchy
-of developers. Linux kernel development is run this way. There
-is a nice illustration (page 17, "Merges to Mainline") in Randy
-Dunlap's presentation (`http://tinyurl.com/a2jdg`).
-
-It should be stressed that this hierarchy is purely *informal*.
-There is nothing fundamental in git that enforces the "chain of
-patch flow" this hierarchy implies. You do not have to pull
-from only one remote repository.
-
-A recommended workflow for a "project lead" goes like this:
-
-1. Prepare your primary repository on your local machine. Your
-   work is done there.
-
-2. Prepare a public repository accessible to others.
-+
-If other people are pulling from your repository over dumb
-transport protocols (HTTP), you need to keep this repository
-'dumb transport friendly'.  After `git init-db`,
-`$GIT_DIR/hooks/post-update` copied from the standard templates
-would contain a call to `git-update-server-info` but the
-`post-update` hook itself is disabled by default -- enable it
-with `chmod +x post-update`.  This makes sure `git-update-server-info`
-keeps the necessary files up-to-date.
-
-3. Push into the public repository from your primary
-   repository.
-
-4. `git repack` the public repository. This establishes a big
-   pack that contains the initial set of objects as the
-   baseline, and possibly `git prune` if the transport
-   used for pulling from your repository supports packed
-   repositories.
-
-5. Keep working in your primary repository. Your changes
-   include modifications of your own, patches you receive via
-   e-mails, and merges resulting from pulling the "public"
-   repositories of your "subsystem maintainers".
-+
-You can repack this private repository whenever you feel like.
-
-6. Push your changes to the public repository, and announce it
-   to the public.
-
-7. Every once in a while, "git repack" the public repository.
-   Go back to step 5. and continue working.
-
-
-A recommended work cycle for a "subsystem maintainer" who works
-on that project and has an own "public repository" goes like this:
-
-1. Prepare your work repository, by `git clone` the public
-   repository of the "project lead". The URL used for the
-   initial cloning is stored in `.git/remotes/origin`.
-
-2. Prepare a public repository accessible to others, just like
-   the "project lead" person does.
-
-3. Copy over the packed files from "project lead" public
-   repository to your public repository, unless the "project
-   lead" repository lives on the same machine as yours.  In the
-   latter case, you can use `objects/info/alternates` file to
-   point at the repository you are borrowing from.
-
-4. Push into the public repository from your primary
-   repository. Run `git repack`, and possibly `git prune` if the
-   transport used for pulling from your repository supports
-   packed repositories.
-
-5. Keep working in your primary repository. Your changes
-   include modifications of your own, patches you receive via
-   e-mails, and merges resulting from pulling the "public"
-   repositories of your "project lead" and possibly your
-   "sub-subsystem maintainers".
-+
-You can repack this private repository whenever you feel
-like.
-
-6. Push your changes to your public repository, and ask your
-   "project lead" and possibly your "sub-subsystem
-   maintainers" to pull from it.
-
-7. Every once in a while, `git repack` the public repository.
-   Go back to step 5. and continue working.
-
-
-A recommended work cycle for an "individual developer" who does
-not have a "public" repository is somewhat different. It goes
-like this:
-
-1. Prepare your work repository, by `git clone` the public
-   repository of the "project lead" (or a "subsystem
-   maintainer", if you work on a subsystem). The URL used for
-   the initial cloning is stored in `.git/remotes/origin`.
-
-2. Do your work in your repository on 'master' branch.
-
-3. Run `git fetch origin` from the public repository of your
-   upstream every once in a while. This does only the first
-   half of `git pull` but does not merge. The head of the
-   public repository is stored in `.git/refs/heads/origin`.
-
-4. Use `git cherry origin` to see which ones of your patches
-   were accepted, and/or use `git rebase origin` to port your
-   unmerged changes forward to the updated upstream.
-
-5. Use `git format-patch origin` to prepare patches for e-mail
-   submission to your upstream and send it out. Go back to
-   step 2. and continue.
-
-
-Working with Others, Shared Repository Style
---------------------------------------------
-
-If you are coming from CVS background, the style of cooperation
-suggested in the previous section may be new to you. You do not
-have to worry. git supports "shared public repository" style of
-cooperation you are probably more familiar with as well.
-
-For this, set up a public repository on a machine that is
-reachable via SSH by people with "commit privileges".  Put the
-committers in the same user group and make the repository
-writable by that group.  Make sure their umasks are set up to
-allow group members to write into directories other members
-have created.
-
-You, as an individual committer, then:
-
-- First clone the shared repository to a local repository:
-------------------------------------------------
-$ git clone repo.shared.xz:/pub/scm/project.git/ my-project
-$ cd my-project
-$ hack away
-------------------------------------------------
-
-- Merge the work others might have done while you were hacking
-  away:
-------------------------------------------------
-$ git pull origin
-$ test the merge result
-------------------------------------------------
-[NOTE]
-================================
-The first `git clone` would have placed the following in
-`my-project/.git/remotes/origin` file, and that's why this and
-the next step work.
-------------
-URL: repo.shared.xz:/pub/scm/project.git/ my-project
-Pull: master:origin
-------------
-================================
-
-- push your work as the new head of the shared
-  repository.
-------------------------------------------------
-$ git push origin master
-------------------------------------------------
-If somebody else pushed into the same shared repository while
-you were working locally, `git push` in the last step would
-complain, telling you that the remote `master` head does not
-fast forward.  You need to pull and merge those other changes
-back before you push your work when it happens.
-
-
-Advanced Shared Repository Management
--------------------------------------
-
-Being able to push into a shared repository means being able to
-write into it.  If your developers are coming over the network,
-this means you, as the repository administrator, need to give
-each of them an SSH access to the shared repository machine.
-
-In some cases, though, you may not want to give a normal shell
-account to them, but want to restrict them to be able to only
-do `git push` into the repository and nothing else.
-
-You can achieve this by setting the login shell of your
-developers on the shared repository host to `git-shell` program.
-
-[NOTE]
-Most likely you would also need to list `git-shell` program in
-`/etc/shells` file.
-
-This restricts the set of commands that can be run from incoming
-SSH connection for these users to only `receive-pack` and
-`upload-pack`, so the only thing they can do are `git fetch` and
-`git push`.
-
-You still need to create UNIX user accounts for each developer,
-and put them in the same group.  Make sure that the repository
-shared among these developers is writable by that group.
-
-. Initializing the shared repository with `git-init-db --shared`
-helps somewhat.
-
-. Run the following in the shared repository:
-+
-------------
-$ chgrp -R $group repo.git
-$ find repo.git -type d -print | xargs chmod ug+rwx,g+s
-$ GIT_DIR=repo.git git repo-config core.sharedrepository true
-------------
-
-The above measures make sure that directories lazily created in
-`$GIT_DIR` are writable by group members.  You, as the
-repository administrator, are still responsible to make sure
-your developers belong to that shared repository group and set
-their umask to a value no stricter than 027 (i.e. at least allow
-reading and searching by group members).
-
-You can implement finer grained branch policies using update
-hooks.  There is a document ("control access to branches") in
-Documentation/howto by Carl Baldwin and JC outlining how to (1)
-limit access to branch per user, (2) forbid overwriting existing
-tags.
+you can refer to HEAD^^ by the name "v2.5".  If you intend to share
+this name with other people (for example, to identify a release
+version), you should create a "tag" object, and perhaps sign it; see
+gitlink:git-tag[1] for details.
 
+You can revisit the old state of a tree, and make further
+modifications if you wish, using git branch: the command
 
-Bundling your work together
----------------------------
+-------------------------------------
+$ git branch stable-release v2.5
+-------------------------------------
+
+will create a new branch named "stable-release" starting from the
+commit which you tagged with the name v2.5.
 
-It is likely that you will be working on more than one thing at
-a time.  It is easy to manage those more-or-less independent tasks
-using branches with git.
-
-We have already seen how branches work previously,
-with "fun and work" example using two branches.  The idea is the
-same if there are more than two branches.  Let's say you started
-out from "master" head, and have some new code in the "master"
-branch, and two independent fixes in the "commit-fix" and
-"diff-fix" branches:
-
-------------
-$ git show-branch
-! [commit-fix] Fix commit message normalization.
- ! [diff-fix] Fix rename detection.
-  * [master] Release candidate #1
----
- +  [diff-fix] Fix rename detection.
- +  [diff-fix~1] Better common substring algorithm.
-+   [commit-fix] Fix commit message normalization.
-  * [master] Release candidate #1
-++* [diff-fix~2] Pretty-print messages.
-------------
-
-Both fixes are tested well, and at this point, you want to merge
-in both of them.  You could merge in 'diff-fix' first and then
-'commit-fix' next, like this:
-
-------------
-$ git merge 'Merge fix in diff-fix' master diff-fix
-$ git merge 'Merge fix in commit-fix' master commit-fix
-------------
-
-Which would result in:
-
-------------
-$ git show-branch
-! [commit-fix] Fix commit message normalization.
- ! [diff-fix] Fix rename detection.
-  * [master] Merge fix in commit-fix
----
-  - [master] Merge fix in commit-fix
-+ * [commit-fix] Fix commit message normalization.
-  - [master~1] Merge fix in diff-fix
- +* [diff-fix] Fix rename detection.
- +* [diff-fix~1] Better common substring algorithm.
-  * [master~2] Release candidate #1
-++* [master~3] Pretty-print messages.
-------------
-
-However, there is no particular reason to merge in one branch
-first and the other next, when what you have are a set of truly
-independent changes (if the order mattered, then they are not
-independent by definition).  You could instead merge those two
-branches into the current branch at once.  First let's undo what
-we just did and start over.  We would want to get the master
-branch before these two merges by resetting it to 'master~2':
-
-------------
-$ git reset --hard master~2
-------------
-
-You can make sure 'git show-branch' matches the state before
-those two 'git merge' you just did.  Then, instead of running
-two 'git merge' commands in a row, you would pull these two
-branch heads (this is known as 'making an Octopus'):
-
-------------
-$ git pull . commit-fix diff-fix
-$ git show-branch
-! [commit-fix] Fix commit message normalization.
- ! [diff-fix] Fix rename detection.
-  * [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
----
-  - [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
-+ * [commit-fix] Fix commit message normalization.
- +* [diff-fix] Fix rename detection.
- +* [diff-fix~1] Better common substring algorithm.
-  * [master~1] Release candidate #1
-++* [master~2] Pretty-print messages.
-------------
-
-Note that you should not do Octopus because you can.  An octopus
-is a valid thing to do and often makes it easier to view the
-commit history if you are pulling more than two independent
-changes at the same time.  However, if you have merge conflicts
-with any of the branches you are merging in and need to hand
-resolve, that is an indication that the development happened in
-those branches were not independent after all, and you should
-merge two at a time, documenting how you resolved the conflicts,
-and the reason why you preferred changes made in one side over
-the other.  Otherwise it would make the project history harder
-to follow, not easier.
+You can reset the state of any branch to an earlier commit at any
+time with
+
+-------------------------------------
+$ git reset --hard v2.5
+-------------------------------------
 
-[ to be continued.. cvsimports ]
+This will remove all later commits from this branch and reset the
+working tree to the state it had when the given commit was made.  If
+this branch is the only branch containing the later commits, those
+later changes will be lost.  Don't use "git reset" on a
+publicly-visible branch that other developers pull from, as git will
+be confused by history that disappears in this way.
+
+Next Steps
+----------
+
+Some good commands to explore next:
+
+  * gitlink:git-diff[1]: This flexible command does much more than
+    we've seen in the few examples above.
+
+  * gitlink:git-format-patch[1], gitlink:git-am[1]: These convert
+    series of git commits into emailed patches, and vice versa,
+    useful for projects such as the linux kernel which rely heavily
+    on emailed patches.
+
+  * gitlink:git-bisect[1]: When there is a regression in your
+    project, one way to track down the bug is by searching through
+    the history to find the exact commit that's to blame.  Git bisect
+    can help you perform a binary search for that commit.  It is
+    smart enough to perform a close-to-optimal search even in the
+    case of complex non-linear history with lots of merged branches.
+
+Other good starting points include link:everyday.html[Everday GIT
+with 20 Commands Or So] and link:cvs-migration.html[git for CVS
+users].  Also, link:core-tutorial.html[A short git tutorial] gives an
+introduction to lower-level git commands for advanced users and
+developers.
-- 
0.99.8b-g58e3

^ permalink raw reply related	[relevance 6%]

* Re: Why would merge fail on a one-line addition?
  @ 2006-03-26  1:32  2% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-03-26  1:32 UTC (permalink / raw)
  To: Marc Singer; +Cc: git

Marc Singer <elf@buici.com> writes:

> One of the unmerged files leaves this trail.
>
>   elf@florence ~...git/linux-2.6 > git-ls-files --unmerged
>   100644 6262d449120cdcde5db1b079806dcc0d9b5e6b7c 1       arch/arm/mach-lh7a40x/irq-lpd7a40x.c
>   100644 dcb4e17b941990eabe8992680c9aa9b67afb6fd4 3       arch/arm/mach-lh7a40x/irq-lpd7a40x.c

> Why would git have a problem with this?

Your change and the change in the other branch are conflicting
and git is helping you notice that.

The index has different #1 and #3 with #2 missing.  This means
the common ancestor (#1) had it, you (#2) _removed_ it, while
the other branch (#3) modified it.  Should it carry forward the
modification (one line addition) made by the other branch and
then remove the file to match yours, or should it remove it to
match yours and ignore what the other branch did?

If you do not want to have that file in the result, record the
path as such and make a commit.  Since there is no #2, your
working tree probably do not have that path, so:

        $ git update-index --remove arch/arm/mach-lh7a40x/irq-lpa7a40x.c

to resolve the path, resolve other conflicts if you have any and
then commit the result.

However, this _might_ be a case where your line of development
somewhere between the common ancestor and your tip moved that
file somewhere else in which case you may want to do three-way
merge between 6262d4 blob, your tip and dcb4e1 blob _and_ commit
the result at the path you have.  I do not know if that is the
case and even if so I do not know where you have the
corresponding file in your tree, but just as an example if you
have it in arch/arm/mach-foo/irq-lpd7a40x.c, you would:

	$ cd arch/arm/mach-foo/
	$ common=$(git unpack-file 6262d4)
        $ his=$(git unpack-file dcb4e1)
        $ merge irq-lpd7a40x.c $common $his
        $ rm -f $common $his

And then eyeball the result of the merge, fix it up as
necessary, and then:

	$ git update-index --remove arch/arm/mach-lh7a40x/irq-lpa7a40x.c
        $ git update-index arch/arm/mach-foo/irq-lpd7a40x.c

before committing.

^ permalink raw reply	[relevance 2%]

* Re: Simplify "git reset --hard"
  @ 2006-05-15  7:46  2%       ` Junio C Hamano
  2006-05-15 14:55  0%         ` Linus Torvalds
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2006-05-15  7:46 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: git

Junio C Hamano <junkio@cox.net> writes:

> Junio C Hamano <junkio@cox.net> writes:
>
>>> Instead, just pass in "-u" to git-read-tree when we do a hard reset, and 
>>> depend on git-read-tree to update the working tree appropriately.
>>
>> Well, this is wrong.  Local modifications remain after your
>> version of "git-reset --hard HEAD". which is not what we want
>> from a hard reset.
>
> ... and attempting to paper it over in git-reset.sh is also
> wrong.  Keep your "--hard is noop" change in git-reset.sh and
> replace it with this would be the right fix.

-- >8 --
read-tree -u one-way merge fix to check out locally modified paths.

The "-u" flag means "update the working tree files", but to
other types of merges, it also implies "I want to keep my local
changes" -- because they prevent local changes from getting lost
by using verify_uptodate.  The one-way merge is different from
other merges in that its purpose is opposite of doing something
else while keeping unrelated local changes.  The point of
one-way merge is to nuke local changes.  So while it feels
somewhat wrong that this actively loses local changes, it is the
right thing to do.

The earlier one marked old->ce_flags to be updated
unconditionally, but that would cause 18,000 paths to be updated
when you have only a few paths different from the HEAD you are
switching to, which is far worse than what we used to do in
git-reset by hand.

Signed-off-by: Junio C Hamano <junkio@cox.net>

---

 * Third time lucky ;-)

diff --git a/read-tree.c b/read-tree.c
index 11157f4..d847c6f 100644
--- a/read-tree.c
+++ b/read-tree.c
@@ -686,6 +698,9 @@ static int oneway_merge(struct cache_ent
 	if (!a)
 		return deleted_entry(old, NULL);
 	if (old && same(old, a)) {
+		struct stat st;
+		if (lstat(old->name, &st) || ce_match_stat(old, &st, 1))
+			old->ce_flags |= htons(CE_UPDATE);
 		return keep_entry(old);
 	}
 	return merged_entry(a, NULL);

^ permalink raw reply related	[relevance 2%]

* Re: Simplify "git reset --hard"
  2006-05-15  7:46  2%       ` Junio C Hamano
@ 2006-05-15 14:55  0%         ` Linus Torvalds
  0 siblings, 0 replies; 200+ results
From: Linus Torvalds @ 2006-05-15 14:55 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git



On Mon, 15 May 2006, Junio C Hamano wrote:
>
> read-tree -u one-way merge fix to check out locally modified paths.
> 
> The "-u" flag means "update the working tree files", but to
> other types of merges, it also implies "I want to keep my local
> changes" -- because they prevent local changes from getting lost
> by using verify_uptodate.  The one-way merge is different from
> other merges in that its purpose is opposite of doing something
> else while keeping unrelated local changes.  The point of
> one-way merge is to nuke local changes.  So while it feels
> somewhat wrong that this actively loses local changes, it is the
> right thing to do.

Ack. On the other hand, I wonder if it might not make sense to have this 
part potentially depend on the "--reset" flag.

That way you wouldn't even have to apologize for it.

		Linus

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] GIT 1.4.0
@ 2006-06-10 21:16  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-06-10 21:16 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

The latest feature release GIT 1.4.0 is available at the
usual places:

	http://www.kernel.org/pub/software/scm/git/

	git-1.4.0.tar.{gz,bz2}			(tarball)
	git-htmldocs-1.4.0.tar.{gz,bz2}		(preformatted documentation)
	git-manpages-1.4.0.tar.{gz,bz2}		(preformatted documentation)
	RPMS/$arch/git-*-1.4.0-1.$arch.rpm	(RPM)

This is a significant update since v1.3.0 (and v1.3.3 which is
the same codebase with bugfixes-only).  User visible changes
are:

 - Many commands are now coded in C instead of implemented as
   shell scripts.

 - Checkout is more careful not to clobber untracked files.

 - You can "alias" git commands with leading arguments in your
   configuration file.

 - Documentation set, especially the tutorial, has been reworked.

 - Comes with the latest gitk, gitweb, and contributed software.

----------------------------------------------------------------

Changes since v1.3.0 are as follows:

Alex Riesen:
      make update-index --chmod work with multiple files and --stdin
      remove superflous "const"

Aneesh Kumar K.V:
      gitview: Add key binding for F5.
      gitview: Move the console error messages to message dialog
      gitview: Add some useful keybindings.

Ben Clifford:
      include header to define uint32_t, necessary on Mac OS X

Björn Engelmann:
      remove the artificial restriction tagsize < 8kb
      add more informative error messages to git-mktag

Catalin Marinas:
      Add a test-case for git-apply trying to add an ending line

Christian Couder:
      Builtin git-rev-parse.

Dennis Stosberg:
      Fix git-pack-objects for 64-bit platforms
      Fix compilation on newer NetBSD systems
      git-write-tree writes garbage on sparc64
      git-clean fails on files beginning with a dash
      Update documentation for git-format-patch

Dmitry V. Levin:
      Separate object name errors from usage errors
      execv_git_cmd: Fix stack buffer overflow.
      git_exec_path, execv_git_cmd: ignore empty environment variables

Elrond:
      git-cvsimport: Handle "Removed" from pserver

Eric W. Biederman:
      Implement git-quiltimport
      Implement a --dry-run option to git-quiltimport
      Make read_one_header_line return a flag not a length.
      Move B and Q decoding into check header.
      Refactor commit messge handling.
      In handle_body only read a line if we don't already have one.
      More accurately detect header lines in read_one_header_line
      Allow in body headers beyond the in body header prefix.

Eric Wong:
      git-svn: documentation updates
      git-svn 1.0.0
      apply: fix infinite loop with multiple patches with --index
      send-email: address expansion for common mailers
      Install git-send-email by default
      send-email: allow sendmail binary to be used instead of SMTP
      send-email: quiet some warnings, reject invalid addresses
      Install git-send-email by default
      commit: allow --pretty= args to be abbreviated
      git-svn: starting a 1.1.0-pre development version
      git-svn: ignore expansion of svn:keywords
      t3300-funny-names: shell portability fixes
      tests: Remove heredoc usage inside quotes
      t5500-fetch-pack: remove local (bashism) usage.
      t6000lib: workaround a possible dash bug
      git-svn: t0001: workaround a heredoc bug in old versions of dash
      git-svn: remove assertion that broke with older versions of svn

Florian Forster:
      git-svnimport: Improved detection of merges.

Francis Daly:
      Some doc typo fixes
      config.txt grammar, typo, and asciidoc fixes
      git-cvsserver asciidoc formatting tweaks

Fredrik Kuivinen:
      blame: Fix path pruning
      Update the documentation for git-merge-base

Horst H. von Brand:
      Documentation: Spelling fixes
      Cleanup git-send-email.perl:extract_valid_email
      Add example xinetd(8) configuration to Documentation/everyday.txt
      Fix Documentation/everyday.txt: Junio's workflow
      Fix formatting of Documentation/git-clone.txt

Horst von Brand:
      Fix some documentation typoes

Huw Davies:
      git-format-patch: Use rfc2822 compliant date.

J. Bruce Fields:
      tutorial: replace "whatchanged" by "log"
      tutorial: expanded discussion of commit history
      tutorial: add discussion of index file, object database
      documentation: mention gitk font adjustment in tutorial
      documentation: add brief mention of cat-file to tutorial part I
      Documentation: retitle the git-core tutorial
      Documentation: fix a tutorial-2 typo

Jeff King:
      cvsimport: use git-update-index --index-info
      cvsimport: cleanup commit function
      cvsimport: set up commit environment in perl instead of using env
      cat-file: document -p option
      cvsimport: avoid "use" with :tag
      handle concurrent pruning of packed objects
      sha1_file: avoid re-preparing duplicate packs

Jim Meyering:
      Don't write directly to a make target ($@).

Johannes Schindelin:
      builtin-push: resurrect parsing of Push: lines
      cache-tree: replace a sscanf() by two strtol() calls
      builtin-push: also ask config for remote information
      fetch, pull: ask config for remote information
      repo-config: fix segfault with no argument.
      repo-config: trim white-space before comment
      repo-config: support --get-regexp
      repo-config: deconvolute logics
      fetch, pull: ask config for remote information
      Add a conversion tool to migrate remote information into the config
      builtin-push: --all and --tags _are_ explicit refspecs
      Teach fmt-patch to write individual files.
      fmt-patch: output file names to stdout
      fmt-patch: implement -o <dir>
      Teach fmt-patch about --numbered
      Teach fmt-patch about --keep-subject
      repo-config: trim white-space before comment
      fmt-patch: understand old <his> notation
      Fix users of prefix_path() to free() only when necessary
      Fix users of prefix_path() to free() only when necessary
      Fix crash when reading the empty tree
      diff family: add --check option
      fmt-patch: Support --attach
      git-format-patch --start-number <n>
      send-email: only 'require' instead of 'use' Net::SMTP
      format-patch: resurrect extra headers from config
      If you have a config containing something like this:

Jon Loeliger:
      Alphabetize the glossary.
      Added definitions for a few words:
      Add a few more words to the glossary.
      Refactor git_tcp_connect() functions a little.

Jonas Fonseca:
      Fix filename scaling for binary files
      Misc doc improvements
      Document git-ls-tree --fullname

Josef Weidendorfer:
      gitk: Add a visual tag for remote refs

Junio C Hamano:
      Fix up default abbrev in setup_revisions() argument parser.
      Fix up rev-list option parsing.
      Split init_revisions() out of setup_revisions()
      rev-list option parser fix.
      Built-in git-whatchanged.
      Do not fork PAGER=cat
      Simplify common default options setup for built-in log family.
      log/whatchanged/show - log formatting cleanup.
      rev-list --header: output format fix
      git.c: LOGSIZE is unused after log printing cleanup.
      combine-diff: show diffstat with the first parent.
      Fix "git log --stat": make sure to set recursive with --stat.
      Tentative built-in format-patch.
      sha1_name.c: prepare to make get_tree_entry() reusable from others.
      sha1_name.c: no need to include diff.h; tree-walk.h will do.
      get_tree_entry(): make it available from tree-walk
      Minor tweak on subject line in --pretty=email
      git-merge: a bit more readable user guidance.
      pre-commit hook: complain about conflict markers.
      diff: move diff.c to diff-lib.c to make room.
      Add git-unresolve <paths>...
      diff --stat: do not drop rename information.
      git-update-index --unresolve
      git-commit --amend: two fixes.
      rename internal format-patch wip
      pack-objects: do not stop at object that is "too small"
      mailinfo: decode underscore used in "Q" encoding properly.
      Makefile: dependency for builtin-help.o
      Add colordiff for git to contrib/colordiff.
      Fix "git show --stat"
      Libify diff-files.
      Libify diff-index.
      git-fmt-patch: thinkofix to show properly.
      Libified diff-index: backward compatibility fix.
      read-cache/write-cache: optionally return cache checksum SHA1.
      Add cache-tree.
      Update write-tree to use cache-tree.
      Invalidate cache-tree entries for touched paths in git-apply.
      Use cache-tree in update-index.
      Add test-dump-cache-tree
      cache-tree: protect against "git prune".
      index: make the index file format extensible.
      Teach fsck-objects about cache-tree.
      cache-tree: sort the subtree entries.
      test-dump-cache-tree: report number of subtrees.
      Makefile: remove and create libgit.a from scratch.
      diff --stat: show complete rewrites consistently.
      git-cvsserver: typofixes
      t0000-basic: Add ls-tree recursive test back.
      Makefile: remove and create xdiff library from scratch.
      commit-tree: allow generic object name for the tree as well.
      rebase: typofix.
      commit-tree.c: check_valid() microoptimization.
      revision parsing: make "rev -- paths" checks stronger.
      t0000-basic: more commit-tree tests.
      update-index: when --unresolve, smudge the relevant cache-tree entries.
      read-tree: teach 1 and 2 way merges about cache-tree.
      read-tree: teach 1-way merege and plain read to prime cache-tree.
      diff-index: fix compilation warnings.
      verify-pack: check integrity in a saner order.
      cache_tree_update: give an option to update cache-tree only.
      test-dump-cache-tree: validate the cached data as well.
      pack-objects: update size heuristucs.
      built-in count-objects.
      cache-tree.c: typefix
      git-am --resolved: more usable error message.
      built-in diff.
      built-in diff: assorted updates.
      builtin-diff.c: die() formatting type fix.
      Fix builtin-push to honor Push: lines in remotes file.
      Extended SHA1 -- "rev^@" syntax to mean "all parents"
      get_sha1(): :path and :[0-3]:path to extract from index.
      built-in "git grep"
      Use RFC2822 dates from "git fmt-patch".
      builtin-grep: wildcard pathspec fixes
      builtin-grep: support '-l' option.
      builtin-grep: do not use setup_revisions()
      fsck-objects: mark objects reachable from cache-tree
      builtin-count-objects: make it official.
      builtin-diff: call it "git-diff", really.
      builtin-log/whatchanged/show: make them official.
      show-branch: omit uninteresting merges.
      builtin-push: make it official.
      builtin-grep: printf %.*s length is int, not ptrdiff_t.
      Revert "fetch, pull: ask config for remote information"
      builtin-grep: allow -<n> and -[ABC]<n> notation for context lines.
      builtin-grep: allow more than one patterns.
      builtin-grep: support -c (--count).
      builtin-grep: support -w (--word-regexp).
      builtin-grep: tighten path wildcard vs tree traversal.
      core.prefersymlinkrefs: use symlinks for .git/HEAD
      repo-config: readability fixups.
      builtin-count-objects: open packs when running -v
      Fix test-dump-cache-tree in one-tree disappeared case.
      read-tree: invalidate cache-tree entry when a new index entry is added.
      cache-tree: a bit more debugging support.
      builtin-grep: terminate correctly at EOF
      builtin-grep: binary files -a and -I
      fsck-objects: do not segfault on missing tree in cache-tree
      builtin-grep: -L (--files-without-match).
      Makefile: do not link rev-list any specially.
      delta: stricter constness
      core.prefersymlinkrefs: use symlinks for .git/HEAD
      pack-object: squelch eye-candy on non-tty
      binary patch.
      binary diff: further updates.
      update-index --unresolve: work from a subdirectory.
      checkout-index: plug memory leak from prefix_path()
      update-index: plug memory leak from prefix_path()
      update-index --again
      update-index --again: take optional pathspecs
      binary diff and apply: testsuite.
      repo-config: document what value_regexp does a bit more clearly.
      Fix repo-config set-multivar error return path.
      Teach -f <file> option to builtin-grep.
      builtin-grep: documentation
      Documentation: {caret} fixes (git-rev-list.txt)
      get_sha1() - fix infinite loop on nonexistent stage.
      Teach git-clean optional <paths>... parameters.
      builtin-grep: tighten argument parsing.
      builtin-grep: typofix
      builtin-grep: -w fix
      builtin-grep: -F (--fixed-strings)
      checkout: use --aggressive when running a 3-way merge (-m).
      checkout: use --aggressive when running a 3-way merge (-m).
      diffstat rename squashing fix.
      read-tree -u one-way merge fix to check out locally modified paths.
      apply --numstat: show new name, not old name.
      Fix pack-index issue on 64-bit platforms a bit more portably.
      builtin-grep: unparse more command line options.
      apply --cached: apply a patch without using working tree.
      git-am: use apply --cached
      builtin-diff: fix comparison between two blobs.
      merge-base: Clarify the comments on post processing.
      read-tree -m -u: do not overwrite or remove untracked working tree files.
      builtin-grep: workaround for non GNU grep.
      Revert "builtin-grep: workaround for non GNU grep."
      apply --cached: do not check newly added file in the working tree
      builtin-add: fix unmatched pathspec warnings.
      builtin-diff: do not say files are renamed when blob and file are given
      Fix build procedure for builtin-init-db
      built-in tar-tree and remote tar-tree
      git-format-patch: now built-in.
      checkdiff_consume: strtol parameter fix.
      git-rebase: use canonical A..B syntax to format-patch
      tutorial-2: typofix in examples.
      mailinfo: skip bogus UNIX From line inside body
      CMIT_FMT_EMAIL: Q-encode Subject: and display-name part of From: fields.
      builtin format-patch: squelch content-type for 7-bit ASCII
      diff: minor option combination fix.
      fetch-pack: output refs in the order they were given on the command line.
      Tutorial #2: broken link fix.
      builtin-rm: squelch compiler warnings.
      cvsimport: do not barf on creation of an empty file.
      apply: force matching at the beginning.
      fetch.c: remove an unused variable and dead code.
      ls-remote: fix rsync:// to report HEAD
      mailinfo: More carefully parse header lines in read_one_header_line()
      gitk: start-up bugfix
      built-in format-patch: various fixups.
      format-patch: -n and -k are mutually exclusive.
      Let git-clone to pass --template=dir option to git-init-db.
      git-fetch: avoid using "case ... in (arm)"
      adjust to the rebased series by Linus.
      send-email: do not pass bogus address to local sendmail binary
      format-patch --signoff
      fetch.c: do not pass uninitialized lock to unlock_ref().
      fetch.c: do not call process_tree() from process_tree().
      fetch: do not report "same" unless -verbose.
      read-tree --reset: update working tree file for conflicted paths.
      git alias: try alias last.
      rev-parse: tighten constness properly.
      send-email: be more lenient and just catch obvious mistakes.
      send-email: a bit more careful domain regexp.
      git-format-patch: add --output-directory long option again
      HTTP cleanup
      Make index file locking code reusable to others.
      refs.c: convert it to use lockfile interface.
      ref-log: style fixes.
      Documentation: add missing docs make check-docs found.
      make clean: remove dist-doc targets.
      Documentation: git-ls-tree (typofix)
      Documentation: add another example to git-ls-files
      git-clone: fix duplicated "master" in $GIT_DIR/remotes/origin
      git-rm: honor -n flag.
      builtin-init-db: spell the in-program configuration variable in lowercase.
      shared repository - add a few missing calls to adjust_shared_perm().
      git-clone: fix --bare over dumb-http
      GIT 1.4.0

Linus Torvalds:
      Common option parsing for "git log --diff" and friends
      Tentative built-in "git show"
      Fixes for option parsing
      Log message printout cleanups
      Log message printout cleanups (#2)
      Log message printout cleanups (#3): fix --pretty=oneline
      Fix uninteresting tags in new revision parsing
      get_sha1() shorthands for blob/tree objects
      Allow "git repack" users to specify repacking window/depth
      git log: don't do merge diffs by default
      git-log produces no output
      Split up builtin commands into separate files from git.c
      Fix filename verification when in a subdirectory
      Fix "git help -a" terminal autosizing
      git builtin "push"
      Fix "git-log --parents" breakage post v1.3.0
      sha1_to_hex() usage cleanup
      Fix "git diff --stat" with long filenames
      revert/cherry-pick: use aggressive merge.
      git config syntax updates
      git diff: support "-U" and "--unified" options properly
      Allow one-way tree merge to remove old files
      Simplify "git reset --hard"
      builtin-grep: use external grep when we can take advantage of it
      read-tree --reset -u fix.
      Fix silly typo in new builtin grep
      Remove old "git-grep.sh" remnants
      libify git-ls-files directory traversal
      Clean up git-ls-file directory walking library interface
      Do "git add" as a builtin
      builtin-add: warn on unmatched pathspecs
      builtin-grep: workaround for non GNU grep.
      Remove old "git-add.sh" remnants
      Prevent bogus paths from being added to the index.
      Make "git rev-list" be a builtin
      Libify the index refresh logic
      Move pathspec matching from builtin-add.c into dir.c
      Add builtin "git rm" command
      cvsimport: repack every kilo-commits.
      apply: treat EOF as proper context.
      Clean up sha1 file writing
      bogus "fatal: Not a git repository"
      t1002: use -U0 instead of --unified=0
      Fix "--abbrev=xyz" for revision listing
      Fix memory leak in "git rev-list --objects"
      Don't use "sscanf()" for tree mode scanning
      Add raw tree buffer info to "struct tree"
      Make "tree_entry" have a SHA1 instead of a union of object pointers
      Switch "read_tree_recursive()" over to tree-walk functionality
      Remove "tree->entries" tree-entry list from tree parser
      Make "struct tree" contain the pointer to the tree buffer
      Make "tree_entry" have a SHA1 instead of a union of object pointers
      Switch "read_tree_recursive()" over to tree-walk functionality
      builtin-read-tree.c: avoid tree_entry_list in prime_cache_tree_rec()
      Remove "tree->entries" tree-entry list from tree parser
      fsck-objects: avoid unnecessary tree_entry_list usage
      Remove unused "zeropad" entry from tree_list_entry
      Convert "mark_tree_uninteresting()" to raw tree walker
      Convert fetch.c: process_tree() to raw tree walker
      Remove last vestiges of generic tree_entry_list
      tree_entry(): new tree-walking helper function
      read-tree: fix eye-candy.
      Fix typo in tutorial-2.txt
      rev-list: fix process_tree() conversion.
      pack-objects: improve path grouping heuristics.

Lukas Sandström:
      Make git-check-format-ref a builtin.
      SubmittingPatches: The download location of External Editor has moved

Martin Langhoff:
      git-cvsexportcommit: Add -f(orce) and -m(essage prefix) flags, small cleanups.
      git-send-email: fix version string to be valid perl
      cvsserver: use git-rev-list instead of git-log
      cvsserver: use git-rev-list instead of git-log
      cvsimport: minor fixups
      cvsimport: replace anonymous sub ref with a normal sub
      cvsimport: introduce -L<imit> option to workaround memory leaks
      cvsimport: introduce _fetchfile() method and used a 1M buffer to read()

Martin Waitz:
      clone: keep --reference even with -l -s
      repack: honor -d even when no new pack was created
      Transitively read alternatives
      test case for transitive info/alternates
      clone: don't clone the info/alternates file
      git help: remove whatchanged from list of common commands
      Documentation/Makefile: remove extra /
      Add instructions to commit template.

Martyn Smith:
      Added logged warnings for CVS error returns
      Many fixes for most operations in Eclipse.
      Change to allow subdir updates from Eclipse

Matthias Kestenholz:
      annotate: fix warning about uninitialized scalar
      annotate: display usage information if no filename was given
      fix various typos in documentation
      add documentation for update-index --unresolve

Matthias Lederhofer:
      core-tutorial.txt: escape asterisk
      git status: skip empty directories, and add -u to show all untracked files

Nick Hengeveld:
      git-fetch: resolve remote symrefs for HTTP transport
      http: prevent segfault during curl handle reuse
      builtin-push: don't pass --thin to HTTP transport
      HTTP cleanup
      http-fetch: fix possible segfault

Nicolas Pitre:
      fix pack-object buffer size
      split the diff-delta interface
      use delta index data when finding best delta matches
      replace adler32 with Rabin's polynomial in diff-delta
      tiny optimization to diff-delta
      improve diff-delta with sparse and/or repetitive data
      improve base85 generated assembly code
      fix diff-delta bad memory access
      simple euristic for further free packing improvements
      pack-object: slightly more efficient
      improve depth heuristic for maximum delta size

Paul Mackerras:
      gitk: Implement multiple views
      gitk: Make File->Update work properly again
      gitk: Fix various bugs in the view support
      gitk: Don't reread git-rev-list output from scratch on view switch
      gitk: Remember the view in the history list
      gitk: Let git-rev-list do the argument list parsing
      gitk: Use git-rev-parse only to identify file/dir names on cmd line
      rev-parse: better error message for ambiguous arguments
      gitk: Implement "permanent" views (stored in ~/.gitk)
      gitk: add menu item for editing the current view
      gitk: Use a text widget for the file list
      gitk: Add a tree-browsing mode
      gitk: Basic support for highlighting one view within another
      gitk: Fix file list display when files are renamed
      gitk: Allow view to specify arbitrary arguments to git-rev-list
      gitk: Fix display of "(...)" for parents/children we haven't drawn
      Provide a way to flush git-diff-tree's output
      gitk: Make a row of controls for controlling highlighting
      gitk: Fix bug where page-up/down wouldn't always work properly
      gitk: Highlight entries in the file list as well
      gitk: Highlight paths of interest in tree view as well
      gitk: First cut at a search function in the patch/file display window
      gitk: Improve the text window search function
      gitk: Move "pickaxe" find function to highlight facility
      gitk: Fix bug in highlight stuff when no line is selected
      gitk: show_error fix
      gitk: Provide ability to highlight based on relationship to selected commit
      Make git-diff-tree indicate when it flushes
      gitk: Add a goto next/previous highlighted commit function
      gitk: Show nearby tags
      gitk: Show branch name(s) as well, if "show nearby tags" is enabled
      gitk: Re-read the descendent/ancestor tag & head info on update

Paul T Darga:
      check for error return from fork()

Pavel Roskin:
      Release config lock if the regex is invalid

Peter Eriksen:
      Add git-quiltimport to .gitignore.
      Builtin git-ls-files.
      Builtin git-ls-tree.
      Builtin git-tar-tree.
      Builtin git-read-tree.
      Builtin git-commit-tree.
      Builtin git-apply.
      Builtin git-show-branch.
      Builtin git-diff-files, git-diff-index, git-diff-stages, and git-diff-tree.

Peter Hagervall:
      Sparse fix for builtin-diff

Petr Baudis:
      Document git-var -l listing also configuration variables
      Document the configuration file
      git-repo-config --list support
      Deprecate usage of git-var -l for getting config vars list
      Call builtin ls-tree in git-cat-file -p
      Document git aliases support
      Documentation: git aliases

Rene Scharfe:
      Off-by-one error in get_path_prefix(), found by Valgrind
      Built-in git-get-tar-commit-id

Robert Fitzsimons:
      builtin-grep: pass ignore case option to external grep

Robert Shearman:
      Give the user a hint for how to continue in the case that git-am fails because it requires user intervention

Ryan Anderson:
      git-send-email: Add References: headers to emails, in addition to In-Reply-To:
      Add support for --bcc to git-send-email.
      Fix a bug in email  extraction used in git-send-email.
      Add a basic test case for git send-email, and fix some real bugs discovered.

Salikh Zakirov:
      Fixed Cygwin CR-munging problem in mailsplit

Santi:
      Document that "git add" only adds non-ignored files.

Santi_Béjar:
      Reintroduce svn pools to solve the memory leak.

Sean Estabrooks:
      Add --continue and --abort options to git-rebase.
      Update the git-branch man page to include the "-r" option,
      Fix up remaining man pages that use asciidoc "callouts".
      Properly render asciidoc "callouts" in git man pages.
      Fix trivial typo in git-log man page.
      Several trivial documentation touch ups.
      Fix up docs where "--" isn't displayed correctly.
      Update git-unpack-objects documentation.
      Clarify git-cherry documentation.
      Fix for config file section parsing.
      Another config file parsing fix.
      t1300-repo-config: two new config parsing tests.
      Another config file parsing fix.
      Add "--branches", "--tags" and "--remotes" options to git-rev-parse.
      Ensure author & committer before asking for commit message.
      Make git rebase interactive help match documentation.
      Add "--summary" option to git diff.
      Convert some "apply --summary" users to "diff --summary".
      Strip useless "tags/" prefix from git-tag -l output
      Allow pickaxe and diff-filter options to be used by git log.
      Avoid segfault in diff --stat rename output.
      Change GIT-VERSION-GEN to call git commands with "git" not "git-".
      Install git builtins into gitexecdir rather than bindir.
      Remove possible segfault in http-fetch.
      --summary output should print immediately after stats.
      A Perforce importer for git.

Serge E. Hallyn:
      socksetup: don't return on set_reuse_addr() error
      socksetup: don't return on set_reuse_addr() error

Sergey Vlasov:
      gitk: Display commit messages with word wrap

Shawn Pearce:
      Document git-clone --reference
      Remove unnecessary local in get_ref_sha1.
      Improve abstraction of ref lock/write.
      Convert update-ref to use ref_lock API.
      Log ref updates to logs/refs/<ref>
      Support 'master@2 hours ago' syntax
      Fix ref log parsing so it works properly.
      General ref log reading improvements.
      Added logs/ directory to repository layout.
      Force writing ref if it doesn't exist.
      Log ref updates made by fetch.
      Change 'master@noon' syntax to 'master@{noon}'.
      Correct force_write bug in refs.c
      Change order of -m option to update-ref.
      Include ref log detail in commit, reset, etc.
      Create/delete branch ref logs.
      Enable ref log creation in git checkout -b.
      Reference git-check-ref-format in git-branch.
      Elaborate on why ':' is a bad idea in a ref name.
      Built git-upload-tar should be ignored.
      Verify git-commit provides a reflog message.
      Test that git-branch -l works.
      Remove unnecessary output from t3600-rm.
      Improved pack format documentation.
      Allow multiple -m options to git-commit.

Tilman Sauerbeck:
      Documentation/Makefile: create tarballs for the man pages and html files

Timo Hirvonen:
      Builtin git-init-db
      Builtin git-cat-file
      gitk: Replace "git-" commands with "git "

Uwe Zeisberger:
      Document git-clone --use-separate-remote

Yakov Lerner:
      read-cache.c: use xcalloc() not calloc()
      NO_INET_NTOP and compat/inet_ntop.c for some systems (e.g. old Cygwin).
      Problem: 'trap...exit' causes error message when /bin/sh is ash.

Yann Dirson:
      Do not call 'cmp' with non-existant -q flag.
      Document current cvsexportcommit limitations.
      Make cvsexportcommit create parent directories as needed.

^ permalink raw reply	[relevance 2%]

* [PATCH] rebase --merge: fix for rebasing more than 7 commits.
@ 2006-06-22  8:44  1% Junio C Hamano
  2006-06-22  8:54  2% ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2006-06-22  8:44 UTC (permalink / raw)
  To: Eric Wong; +Cc: git

Instead of using 4-digit numbers to name commits being rebased,
just use "cmt.$msgnum" string, with $msgnum as a decimal number
without leading zero padding.  This makes it possible to rebase
more than 9999 commits, but of more practical importance is that
the earlier code used "printf" to format already formatted
$msgnum and barfed when it counted up to 0008.  In other words,
the old code was incapable of rebasing more than 7 commits, and
this fixes that problem.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---

 * I wanted to raise my confidence level in the new rebase --merge
   code, so I did a little exercise which resulted in finding this
   buglet.

   I did not have "read/write-tree --prefix" on the "master"
   branch, when I received the patch series that begins with
   "Make git-write-tree a builtin" from Lukas.  Now, my policy
   is to avoid starting a new topic based on "next" (because it
   would make later pulling in the topic into "master" without
   all the other uncooked stuff in "next" impossible), but the
   series was based on "next" (which was actually nice, since
   write-tree between "master" and "next" were somewhat diverged
   back then), and I couldn't easily rebase Lukas's patch series
   on top of "master" because we did not have "rebase --merge"
   option.  Now I can with the updated "rebase".

   So the exercise went like this:

   (1) Start from a clone of git.git, with "master" at 8c278ab
       (where the "master" was before "read/write-tree --prefix"
       was merged), and "ls/am" at ab195e1 (what applying
       Lukas's series on top of "next" would have produced).
       Use "reset --hard" as needed.

   (2) "git rebase --merge --onto master ls/am~9" (ls/am~8 being
       the first one of the series).  This fails with a merge
       conflict on builtin-write-tree.c (the "rebase --merge"
       code did the right thing with the renamed path).  Fix it
       up and also fix builtin.h (signature of write_tree()
       needs to be changed to drop prefix).

       It was very helpful to view:

           git diff :3:builtin-write-tree.c builtin-write-tree.c	

       during the hand resolution of the conflicts; it lets me
       see what Lukas did, so I can adjust the patch by removing
       parts that are specific to "next" and not applicable to
       "master".  

  (3) "git update-index builtin-write-tree.c builtin.h" and then
      "git rebase --continue".  The bug manifests itself during
      the finalization step, which this commit fixes.

  With this fix, the above works beautifully.  I am reasonably
  happy with this shiny new toy.  Good job, Eric! and thanks.

 git-rebase.sh |   23 ++++++++++-------------
 1 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/git-rebase.sh b/git-rebase.sh
index b9ce112..9159477 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -67,16 +67,16 @@ continue_merge () {
 	prev_head=`git-rev-parse HEAD^0`
 
 	# save the resulting commit so we can read-tree on it later
-	echo "$prev_head" > "$dotest/`printf %0${prec}d $msgnum`.result"
+	echo "$prev_head" > "$dotest/cmt.$msgnum.result"
 	echo "$prev_head" > "$dotest/prev_head"
 
 	# onto the next patch:
 	msgnum=$(($msgnum + 1))
-	printf "%0${prec}d" "$msgnum" > "$dotest/msgnum"
+	echo "$msgnum" >"$dotest/msgnum"
 }
 
 call_merge () {
-	cmt="$(cat $dotest/`printf %0${prec}d $1`)"
+	cmt="$(cat $dotest/cmt.$1)"
 	echo "$cmt" > "$dotest/current"
 	git-merge-$strategy "$cmt^" -- HEAD "$cmt"
 	rv=$?
@@ -108,15 +108,12 @@ finish_rb_merge () {
 	end="`cat $dotest/end`"
 	while test "$msgnum" -le "$end"
 	do
-		msgnum=`printf "%0${prec}d" "$msgnum"`
-		printf "%0${prec}d" "$msgnum" > "$dotest/msgnum"
-
-		git-read-tree `cat "$dotest/$msgnum.result"`
+		git-read-tree `cat "$dotest/cmt.$msgnum.result"`
 		git-checkout-index -q -f -u -a
-		git-commit -C "`cat $dotest/$msgnum`"
+		git-commit -C "`cat $dotest/cmt.$msgnum`"
 
-		echo "Committed $msgnum"
-		echo '    '`git-rev-list --pretty=oneline -1 HEAD | \
+		printf "Committed %0${prec}d" $msgnum
+		echo ' '`git-rev-list --pretty=oneline -1 HEAD | \
 					sed 's/^[a-f0-9]\+ //'`
 		msgnum=$(($msgnum + 1))
 	done
@@ -322,11 +319,11 @@ for cmt in `git-rev-list --no-merges "$u
 			| perl -e 'print reverse <>'`
 do
 	msgnum=$(($msgnum + 1))
-	echo "$cmt" > "$dotest/`printf "%0${prec}d" $msgnum`"
+	echo "$cmt" > "$dotest/cmt.$msgnum"
 done
 
-printf "%0${prec}d" 1 > "$dotest/msgnum"
-printf "%0${prec}d" "$msgnum" > "$dotest/end"
+echo 1 >"$dotest/msgnum"
+echo $msgnum >"$dotest/end"
 
 end=$msgnum
 msgnum=1
-- 
1.4.0.gfba6

^ permalink raw reply related	[relevance 1%]

* Re: [PATCH] rebase --merge: fix for rebasing more than 7 commits.
  2006-06-22  8:44  1% [PATCH] rebase --merge: fix for rebasing more than 7 commits Junio C Hamano
@ 2006-06-22  8:54  2% ` Junio C Hamano
  2006-06-22 11:09  2%   ` Eric Wong
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2006-06-22  8:54 UTC (permalink / raw)
  To: Eric Wong; +Cc: git

Junio C Hamano <junkio@cox.net> writes:

>  * I wanted to raise my confidence level in the new rebase --merge
>    code, so I did a little exercise which resulted in finding this
>    buglet.
>...
>    So the exercise went like this:
>...
>   With this fix, the above works beautifully.  I am reasonably
>   happy with this shiny new toy.  Good job, Eric! and thanks.

By the way, I do not quite understand the reasoning behind not
moving the head being rebased until the finalization phase.

Also I think --skip would be straightforward.  What you look at
in call_merge() is the current HEAD, the commit being rebased
and its direct parent (actually what you are interested in are
trees of these commits and not ancestry chains among them -- if
we can tell git-merge-recursive not to try its own "recursive"
merge base finding but just use what we give it as the base, I
could sleep better.  I think the current code could misbehave in
funnier ancestry graph if we allow it to pick merge base on its
own), so skipping is just a matter of, eh, skipping the commit.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH] rebase --merge: fix for rebasing more than 7 commits.
  2006-06-22  8:54  2% ` Junio C Hamano
@ 2006-06-22 11:09  2%   ` Eric Wong
  2006-06-24  7:09  2%     ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Eric Wong @ 2006-06-22 11:09 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Junio C Hamano <junkio@cox.net> wrote:
> Junio C Hamano <junkio@cox.net> writes:
> 
> >  * I wanted to raise my confidence level in the new rebase --merge
> >    code, so I did a little exercise which resulted in finding this
> >    buglet.
> >...
> >    So the exercise went like this:
> >...
> >   With this fix, the above works beautifully.  I am reasonably
> >   happy with this shiny new toy.  Good job, Eric! and thanks.

:)  Thanks for the extra QA and fix.

> By the way, I do not quite understand the reasoning behind not
> moving the head being rebased until the finalization phase.

That's because my original patch that only used git-merge, which didn't
let me manually commit with all the information from a previous commit.

> Also I think --skip would be straightforward.  What you look at
> in call_merge() is the current HEAD, the commit being rebased
> and its direct parent (actually what you are interested in are
> trees of these commits and not ancestry chains among them -- if
> we can tell git-merge-recursive not to try its own "recursive"
> merge base finding but just use what we give it as the base, I
> could sleep better.  I think the current code could misbehave in
> funnier ancestry graph if we allow it to pick merge base on its
> own), so skipping is just a matter of, eh, skipping the commit.

Another consequence of relying on plain git-merge in my original
patch.  --skip should be very doable now that we can specify
the correct base.  I'll look into it more when I'm more awake.

-- 
Eric Wong

^ permalink raw reply	[relevance 2%]

* What's in git.git and announcing v1.4.1-rc1
@ 2006-06-22 19:49  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-06-22 19:49 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

I've merged quite a bit of stuff and tagged the tip of "master"
as GIT 1.4.1-rc1.

As promised, 1.4.X series will be managed slightly differently,
and this is in preparation of the first installment of it.  The
releases will come from the "master" branch to contain both
fixes and enhancements from now on.  Hotfix releases when
necessary would have 1.4.X.Y revision numbers, but I am hoping
that we do not have to do that very often.

Since all the exciting and potentially risky developments are to
happen on the "next" branch and they are supposed to graduate to
"master" branch after they are reasonably well cooked, this
change will help the end-users to stay reasonably current
without hopefully not introducing unexpected problems.  The
older scheme left out all the enhancements if people followed
packaged versions, and gave big surprises when upgrading from
version X.Y.Z to X.(Y+1).0 which was not so nice.

Notable improvements since v1.4.0 are:

 - PPC SHA1 routine can grok more than half-gig of data (Paul
   Mackerras)

 - rev-list and object-layer in general is less (much less)
   space hungry (Linus).

 - the source is more friendly to stricter compilers such as
   Sun's (Florian Forster).

 - git rebase --merge (Eric Wong).  This uses the usual 3-way
   merge machinery while running rebase, and you can rebase
   across renames if you use the recursive strategy which is the
   default.

 - gitweb updates -- mostly cleanups (Jakub Narebski with help
   from Pasky and Timo Hirvonen).

 - diff --color (Johannes).

 - ~/.gitconfig and $ENV{GIT_CONFIG} (Pasky and Johannes).

 - core.sharedrepository can take umask, group or world (Linus
   and I)

 - "git checkout -f" removes files that becomes untracked from
   the working tree

 - "git clone/fetch" from a corrupt repository does not
   propagate brokenness to the downloaders.

 - "git clone/fetch" over the network gives better progress
   updates; this may also help TCP timeout problems for people
   behind NAT.

 - Many more commands are built-in (Lukas Sandström)

 - git can now be used on Kiritimati (Paul Eggert)

----------------------------------------------------------------

* The 'master' branch has these since the last announcement.

   Andre Noll:
      object-refs: avoid division by zero

   David Woodhouse:
      Log peer address when git-daemon called from inetd

   Dennis Stosberg:
      Make t8001-annotate and t8002-blame more portable
      Fix t8001-annotate and t8002-blame for ActiveState Perl

   Eric W. Biederman:
      Fix git-format-patch -s
      Check and document the options to prevent mistakes.

   Eric Wong:
      git-svn: fix --rmdir when using SVN:: libraries
      rebase: Allow merge strategies to be used when rebasing
      rebase: error out for NO_PYTHON if they use recursive merge
      git-svn: fix commit --edit flag when using SVN:: libraries

   Florian Forster:
      Remove ranges from switch statements.
      Initialize FAMs using `FLEX_ARRAY'.
      Don't instantiate structures with FAMs.
      Cast pointers to `void *' when used in a format.
      Don't use empty structure initializers.
      Change types used in bitfields to be `int's.
      Remove all void-pointer arithmetic.

   Jakub Narebski:
      Move gitweb style to gitweb.css
      gitweb: safely output binary files for 'blob_plain' action
      gitweb: text files for 'blob_plain' action without charset by default
      Fix gitweb stylesheet
      Make CSS file gitweb/gitweb.css more readable
      gitweb: add type="text/css" to stylesheet link
      Fix: Support for the standard mime.types map in gitweb
      gitweb: A couple of page title tweaking
      gitweb: style done with stylesheet
      gitweb: whitespace cleanup
      Add git version to gitweb output
      Move $gitbin earlier in gitweb.cgi
      gitweb: Make use of $PATH_INFO for project parameter
      gitweb: whitespace cleanup around '='

   Johannes Schindelin:
      diff options: add --color
      Initialize lock_file struct to all zero.
      Fix setting config variables with an alternative GIT_CONFIG
      Read configuration also from $HOME/.gitconfig
      repo-config: Fix late-night bug
      git_config: access() returns 0 on success, not > 0

   Junio C Hamano:
      read-tree: --prefix=<path>/ option.
      write-tree: --prefix=<path>
      read-tree: reorganize bind_merge code.
      fetch-pack: give up after getting too many "ack continue"
      shared repository: optionally allow reading to "others".
      fix rfc2047 formatter.
      xdiff: minor changes to match libxdiff-0.21
      Restore SIGCHLD to SIG_DFL where we care about waitpid().
      checkout -f: do not leave untracked working tree files.
      upload-pack: avoid sending an incomplete pack upon failure
      upload-pack: prepare for sideband message support.
      Retire git-clone-pack
      upload-pack/fetch-pack: support side-band communication
      Add renaming-rebase test.
      daemon: send stderr to /dev/null instead of closing.
      rebase --merge: fix for rebasing more than 7 commits.
      Makefile: do not force unneeded recompilation upon GIT_VERSION changes

   Linus Torvalds:
      Shrink "struct object" a bit
      Move "void *util" from "struct object" into "struct commit"
      Some more memory leak avoidance
      Remove "refs" field from "struct object"
      Add specialized object allocator
      Add "named object array" concept
      Fix grow_refs_hash()

   Lukas Sandström:
      Make git-write-tree a builtin
      Make git-mailsplit a builtin
      Make git-mailinfo a builtin
      Make git-stripspace a builtin
      Make git-update-index a builtin
      Make git-update-ref a builtin

   Paul Eggert:
      date.c: improve guess between timezone offset and year.

   Paul Mackerras:
      Fix PPC SHA1 routine for large input buffers

   Petr Baudis:
      Support for extracting configuration from different files
      Support for the standard mime.types map in gitweb

   Rene Scharfe:
      git-tar-tree: Simplify write_trailer()
      git-tar-tree: documentation update
      git-tar-tree: no more void pointer arithmetic
      Make release tarballs friendlier to older tar versions

   Timo Hirvonen:
      gitweb: Use $hash_base as $search_hash if possible

   Uwe Zeisberger:
      Fix possible out-of-bounds array access

   Yakov Lerner:
      auto-detect changed prefix and/or changed build flags
      Pass -DDEFAULT_GIT_TEMPLATE_DIR only where actually used.


* The 'pu' branch, in addition, has these.

   Johannes Schindelin:
      Teach diff about -b and -w flags

   Lukas Sandström:
      Make it possible to call cmd_apply multiple times
      Make git-am a builtin

^ permalink raw reply	[relevance 3%]

* Re: [PATCH] rebase --merge: fix for rebasing more than 7 commits.
  2006-06-22 11:09  2%   ` Eric Wong
@ 2006-06-24  7:09  2%     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-06-24  7:09 UTC (permalink / raw)
  To: Eric Wong; +Cc: git

Eric Wong <normalperson@yhbt.net> writes:

> Junio C Hamano <junkio@cox.net> wrote:
>> Junio C Hamano <junkio@cox.net> writes:
>> 
>> >  * I wanted to raise my confidence level in the new rebase --merge
>> >    code, so I did a little exercise which resulted in finding this
>> >    buglet.
>> >...
>> >    So the exercise went like this:
>> >...
>> >   With this fix, the above works beautifully.  I am reasonably
>> >   happy with this shiny new toy.  Good job, Eric! and thanks.
>
> :)  Thanks for the extra QA and fix.

Another thing I noticed is while rebasing onto the mainline that
has accepted a few of the patches from the topic.  The original
rebase with "git am -3" logic notices that the patch has already
been applied and drops that commit, which is rather nice, but
the new "rebase --merge" logic barfs when git-commit notices
there is nothing to commit.  I think you could before calling
git-commit check if the git-merge-$strategy gave you the tree
identical to the HEAD tree, and simply skip it (maybe after
giving the user "patch already applied"message).

^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] GIT 1.4.1
@ 2006-07-02  6:33  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-07-02  6:33 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

The latest feature release GIT 1.4.1 is available at the usual
places:

  http://www.kernel.org/pub/software/scm/git/

  git-1.4.1.tar.{gz,bz2}			(tarball)
  git-htmldocs-1.4.1.tar.{gz,bz2}		(preformatted docs)
  git-manpages-1.4.1.tar.{gz,bz2}		(preformatted docs)
  RPMS/$arch/git-*-1.4.1-1.$arch.rpm	(RPM)

As announced earlier, 1.4.1 is not just 1.4.0 plus bugfixes, but
also has enhancements from the "master" branch.

----------------------------------------------------------------

Changes since v1.4.0 are as follows:

Andre Noll:
      object-refs: avoid division by zero

Andreas Ericsson:
      git wrapper: fix command name in an error message.

David Woodhouse:
      Log peer address when git-daemon called from inetd

Dennis Stosberg:
      Make t4101-apply-nonl bring along its patches
      Make t8001-annotate and t8002-blame more portable
      Fix t8001-annotate and t8002-blame for ActiveState Perl
      Solaris needs inclusion of signal.h for signal()
      Fix pkt-line.h to compile with a non-GCC compiler
      Fix expr usage for FreeBSD

Eric W. Biederman:
      Don't parse any headers in the real body of an email message.
      Fix git-format-patch -s
      Check and document the options to prevent mistakes.

Eric Wong:
      git-svn: t0000: add -f flag to checkout
      git-svn: fix handling of filenames with embedded '@'
      git-svn: eol_cp corner-case fixes
      git-svn: restore original LC_ALL setting (or unset) for commit
      git-svn: don't allow commit if svn tree is not current
      git-svn: support -C<num> passing to git-diff-tree
      git-svn: --branch-all-refs / -B support
      git-svn: optimize --branch and --branch-all-ref
      git-svn: support manually placed initial trees from fetch
      git-svn: Move all git-svn-related paths into $GIT_DIR/svn
      git-svn: minor cleanups, extra error-checking
      git-svn: add --repack and --repack-flags= options
      git-svn: add --shared and --template= options to pass to init-db
      git-svn: add some functionality to better support branches in svn
      git-svn: add UTF-8 message test
      git-svn: add 'log' command, a facsimile of basic `svn log'
      git-svn: add support for Perl SVN::* libraries
      git-svn: make the $GIT_DIR/svn/*/revs directory obsolete
      git-svn: avoid creating some small files
      git-svn: fix several small bugs, enable branch optimization
      git-svn: Eliminate temp file usage in libsvn_get_file()
      git-svn: bugfix and optimize the 'log' command
      git-svn: tests no longer fail if LC_ALL is not a UTF-8 locale
      git-svn: svn (command-line) 1.0.x compatibility
      git-svn: rebuild convenience and bugfixes
      git-svn: fix --rmdir when using SVN:: libraries
      rebase: Allow merge strategies to be used when rebasing
      rebase: error out for NO_PYTHON if they use recursive merge
      git-svn: fix commit --edit flag when using SVN:: libraries
      rebase: allow --merge option to handle patches merged upstream
      rebase: cleanup rebasing with --merge
      rebase: allow --skip to work with --merge
      git-svn: SVN 1.1.x library compatibility
      git-svn: several graft-branches improvements
      git-svn: add the commit-diff command
      git-svn: add --follow-parent and --no-metadata options to fetch
      git-svn: be verbose by default on fetch/commit, add -q/--quiet option
      rebase: get rid of outdated MRESOLVEMSG
      rebase: check for errors from git-commit
      git-svn: allow a local target directory to be specified for init

Florian Forster:
      gitweb: Adding a `blame' interface.
      gitweb: Make the `blame' interface in gitweb optional.
      Remove ranges from switch statements.
      Initialize FAMs using `FLEX_ARRAY'.
      Don't instantiate structures with FAMs.
      Cast pointers to `void *' when used in a format.
      Don't use empty structure initializers.
      Change types used in bitfields to be `int's.
      Remove all void-pointer arithmetic.

Fredrik Kuivinen:
      blame: Add --time to produce raw timestamps

Jakub Narebski:
      Update gitweb README: gitweb is now included with git
      Move gitweb style to gitweb.css
      gitweb: safely output binary files for 'blob_plain' action
      gitweb: text files for 'blob_plain' action without charset by default
      Fix gitweb stylesheet
      Make CSS file gitweb/gitweb.css more readable
      gitweb: add type="text/css" to stylesheet link
      Fix: Support for the standard mime.types map in gitweb
      gitweb: A couple of page title tweaking
      gitweb: style done with stylesheet
      gitweb: whitespace cleanup
      Add git version to gitweb output
      Move $gitbin earlier in gitweb.cgi
      gitweb: Make use of $PATH_INFO for project parameter
      gitweb: whitespace cleanup around '='

Jeff King:
      git-commit: allow -e option anywhere on command line
      quote.c: silence compiler warnings from EMIT macro

Johannes Schindelin:
      diff options: add --color
      Initialize lock_file struct to all zero.
      Fix setting config variables with an alternative GIT_CONFIG
      Read configuration also from $HOME/.gitconfig
      repo-config: Fix late-night bug
      git_config: access() returns 0 on success, not > 0
      patch-id: take "commit" prefix as well as "diff-tree" prefix
      Teach diff about -b and -w flags
      cvsimport: always set $ENV{GIT_INDEX_FILE} to $index{$branch}
      apply: replace NO_ACCURATE_DIFF with --inaccurate-eof runtime flag.
      add diff_flush_patch_id() to calculate the patch id
      format-patch: introduce "--ignore-if-in-upstream"
      t4014: fix for whitespace from "wc -l"
      format-patch: use clear_commit_marks() instead of some ad-hockery
      Save errno in handle_alias()

Junio C Hamano:
      read-tree: --prefix=<path>/ option.
      write-tree: --prefix=<path>
      read-tree: reorganize bind_merge code.
      fetch-pack: give up after getting too many "ack continue"
      Fix earlier mismerges.
      shared repository: optionally allow reading to "others".
      gitk: rereadrefs needs listrefs
      fix git alias
      t5100: mailinfo and mailsplit tests.
      mailinfo: ignore blanks after in-body headers.
      fix rfc2047 formatter.
      xdiff: minor changes to match libxdiff-0.21
      Restore SIGCHLD to SIG_DFL where we care about waitpid().
      checkout -f: do not leave untracked working tree files.
      upload-pack: avoid sending an incomplete pack upon failure
      upload-pack: prepare for sideband message support.
      Retire git-clone-pack
      upload-pack/fetch-pack: support side-band communication
      Add renaming-rebase test.
      daemon: send stderr to /dev/null instead of closing.
      rebase --merge: fix for rebasing more than 7 commits.
      Makefile: do not force unneeded recompilation upon GIT_VERSION changes
      Makefile: do not recompile main programs when libraries have changed.
      usage: minimum type fix.
      git-pull: abort when fmt-merge-msg fails.
      git-merge --squash
      diff --color: use reset sequence when we mean reset.
      repo-config: fix printing of bool
      diff --color: use $GIT_DIR/config
      git-repack: Be careful when updating the same pack as an existing one.
      t4014: add format-patch --ignore-if-in-upstream test
      combine-diff.c: type sanity
      connect.c: remove unused parameters from tcp_connect and proxy_connect
      connect.c: check the commit buffer boundary while parsing.
      t/README: start testing porcelainish
      checkout -m: fix read-tree invocation
      t4014: fix test commit labels.
      diff.c: fix get_patch_id()
      Racy GIT (part #3)
      upload-pack.c: <sys/poll.h> includes <ctype.h> on OpenBSD 3.8

Linus Torvalds:
      gitweb.cgi history not shown
      Shrink "struct object" a bit
      Move "void *util" from "struct object" into "struct commit"
      Some more memory leak avoidance
      Remove "refs" field from "struct object"
      Add specialized object allocator
      Add "named object array" concept
      Fix grow_refs_hash()
      Tweak diff colors
      Do not try futile object pairs when repacking.
      Abstract out accesses to object hash array
      revision.c: --full-history fix.
      git object hash cleanups

Lukas Sandström:
      Make git-write-tree a builtin
      Make git-mailsplit a builtin
      Make git-mailinfo a builtin
      Make git-stripspace a builtin
      Make git-update-index a builtin
      Make git-update-ref a builtin

Martin Langhoff:
      cvsimport: ignore CVSPS_NO_BRANCH and impossible branches
      cvsimport: complete the cvsps run before starting the import
      cvsimport: keep one index per branch during import
      git-repack -- respect -q and be quiet
      cvsimport: setup indexes correctly for ancestors and incremental imports
      cvsimport - cleanup of the multi-indexes handling

Matthias Kestenholz:
      add GIT-CFLAGS to .gitignore

Matthias Lederhofer:
      correct documentation for git grep

Nicolas Pitre:
      consider previous pack undeltified object state only when reusing delta data
      don't load objects needlessly when repacking

Paul Eggert:
      date.c: improve guess between timezone offset and year.

Paul Mackerras:
      Fix PPC SHA1 routine for large input buffers

Peter Eriksen:
      Implement safe_strncpy() as strlcpy() and use it more.
      Rename safe_strncpy() to strlcpy().

Petr Baudis:
      Support for extracting configuration from different files
      Support for the standard mime.types map in gitweb
      Customizable error handlers
      Fix errno usage in connect.c

Rene Scharfe:
      git-tar-tree: Simplify write_trailer()
      git-tar-tree: documentation update
      git-tar-tree: no more void pointer arithmetic
      Make release tarballs friendlier to older tar versions

Robin Rosenberg:
      Minor documentation fixup.

Sean Estabrooks:
      Add a "--notags" option for git-p4import.

Sven Verdoolaege:
      git-cvsexportcommit.perl: fix typo

Timo Hirvonen:
      gitweb: Use $hash_base as $search_hash if possible
      git-merge: Don't use -p when outputting summary
      Clean up diff.c
      Make some strings const

Uwe Zeisberger:
      Fix possible out-of-bounds array access

Yakov Lerner:
      auto-detect changed prefix and/or changed build flags
      Pass -DDEFAULT_GIT_TEMPLATE_DIR only where actually used.

Yann Dirson:
      git-commit: filter out log message lines only when editor was run.

^ permalink raw reply	[relevance 3%]

* Re: Merging five months of Linux kernel history
  @ 2006-10-29 20:34  2% ` Junio C Hamano
  2006-10-30  7:50  0%   ` Jan-Benedict Glaw
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2006-10-29 20:34 UTC (permalink / raw)
  To: Jan-Benedict Glaw; +Cc: git

Jan-Benedict Glaw <jbglaw@lug-owl.de> writes:

> Hi!
>
> Due to a move to a new flat and other reasons, I wasn't able to
> do daily merges from Linus's tree into our vax-linux tree.
> My time situation has improved and I want to merge all the new
> and shiny stuff, but it seems a straight "git pull" isn't the
> best way to do that.
>
> What I'd actually love to do is to go through all commits since the
> last merge and pull/accept/cherry-pick then one by one.  That way I'll
> learn about new stuff. I'll specifically see generic changes that
> imply arch-specific stuff, things I'll need to implement later on.
>
> Is there any sane way to cluse such a large gap?  I don't mind looking
> through tenthousands of commits, as long as I get a chance to spot
> "important" ones.

I think the best way is:

	git pull
        git log ORIG_HEAD..

The latter would give your ten thousands of commits to inspect.

If the pull results in a conflict, then

	git pull
	git log --merge

	... fix conflicts ...
	git commit
        git log ORIG_HEAD..

Since ORIG_HEAD is transient, and you probably would want to
revisit the list of these ten thousands of commits later, it
might make sense to do

	git tag WHERE_WE_WERE

before "git pull" in either case.


^ permalink raw reply	[relevance 2%]

* Re: Merging five months of Linux kernel history
  2006-10-29 20:34  2% ` Junio C Hamano
@ 2006-10-30  7:50  0%   ` Jan-Benedict Glaw
  0 siblings, 0 replies; 200+ results
From: Jan-Benedict Glaw @ 2006-10-30  7:50 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

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

On Sun, 2006-10-29 12:34:53 -0800, Junio C Hamano <junkio@cox.net> wrote:
> Jan-Benedict Glaw <jbglaw@lug-owl.de> writes:
> > Due to a move to a new flat and other reasons, I wasn't able to
> > do daily merges from Linus's tree into our vax-linux tree.
> > My time situation has improved and I want to merge all the new
> > and shiny stuff, but it seems a straight "git pull" isn't the
> > best way to do that.
> >
> > What I'd actually love to do is to go through all commits since the
> > last merge and pull/accept/cherry-pick then one by one.  That way I'll
> > learn about new stuff. I'll specifically see generic changes that
> > imply arch-specific stuff, things I'll need to implement later on.
> >
> > Is there any sane way to cluse such a large gap?  I don't mind looking
> > through tenthousands of commits, as long as I get a chance to spot
> > "important" ones.
> 
> I think the best way is:
> 
> 	git pull
>         git log ORIG_HEAD..
> 
> The latter would give your ten thousands of commits to inspect.
> 
> If the pull results in a conflict, then
> 
> 	git pull
> 	git log --merge
> 
> 	... fix conflicts ...
> 	git commit
>         git log ORIG_HEAD..

That's the point--I don't really expect any conflicts, or only a very
little number of them. Basically, only the Makefiles and the Kconfig
files do have a chance to conflict.  It's no more than a new arch/
directory and some drivers.

The hard part will be to figure out all the needed changes in arch
code, like the IRQ handling rework etc :)

MfG, JBG

-- 
      Jan-Benedict Glaw      jbglaw@lug-owl.de              +49-172-7608481
Signature of:           Ich hatte in letzter Zeit ein bißchen viel Realitycheck.
the second  :               Langsam möchte ich mal wieder weiterträumen können.

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

^ permalink raw reply	[relevance 0%]

* What's in git.git (stable)
@ 2006-12-06 21:18  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-12-06 21:18 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

* The 'maint' branch has produced a new release 1.4.4.2

* In the 'master' branch:

  - we now officially favor 'remotes' information to be in
    $GIT_DIR/config, and 'git clone' records origin in there,
    not in $GIT_DIR/remotes/origin (thanks to Andy Parkins).

  - "git send-pack $URL :refs/heads/$branch" can be used to
    delete a remote branch (so does "git push $URL :$ref" over
    git native protocols).

  - built-in shortlog lets you directly say "git shortlog
    v2.6.18..master", instead of piping an output from the
    corresponding "git log v2.6.18..master" into it.

  - git-svn updates
  - gitweb updates
  - gitk updates
  - bash completion updates

The shortlog since the last announcement for 'master' is:

Alex Riesen (2):
      git-blame: fix rev parameter handling.
      Make perl/ build procedure ActiveState friendly.

Andreas Ericsson (2):
      ls-files: Give hints when errors happen.
      git-diff: Introduce --index and deprecate --cached.

Andy Parkins (3):
      Use .git/config for storing "origin" shortcut repository
      Document git-repo-config --bool/--int options.
      De-emphasise the symbolic link documentation.

David Miller (1):
      Pass -M to diff in request-pull

Eric Wong (10):
      git-svn: use ~/.subversion config files when using SVN:: libraries
      git-svn: enable delta transfers during fetches when using SVN:: libs
      git-svn: update tests for recent changes
      git-svn: error out when the SVN connection fails during a fetch
      git-svn: fix output reporting from the delta fetcher
      git-svn: color support for the log command
      git-svn: documentation updates
      git-svn: fix multi-init
      git-svn: avoid fetching files twice in the same revision
      git-svn: avoid network timeouts for long-running fetches

Han-Wen Nienhuys (1):
      ident.c: Trim hint printed when gecos is empty.

J. Bruce Fields (1):
      cvs-migration: improved section titles, better push/commit explanation

Jakub Narebski (4):
      gitweb: Fix Atom feed <logo>: it is $logo, not $logo_url
      git-clone: Rename --use-immingled-remote option to --no-separate-remote
      Document git-diff whitespace flags -b and -w
      gitweb: Allow PNG, GIF, JPEG images to be displayed in "blob" view

Jim Meyering (1):
      Set permissions of each new file before "cvs add"ing it.

Johannes Schindelin (10):
      Build in shortlog
      shortlog: do not crash on parsing "[PATCH"
      shortlog: read mailmap from ./.mailmap again
      shortlog: handle email addresses case-insensitively
      shortlog: fix "-n"
      shortlog: use pager
      sha1_object_info(): be consistent with read_sha1_file()
      git-mv: search more precisely for source directory in index
      diff -b: ignore whitespace at end of line
      cvs-migration document: make the need for "push" more obvious

Junio C Hamano (24):
      Store peeled refs in packed-refs file.
      remove merge-recursive-old
      git-merge: make it usable as the first class UI
      merge: allow merging into a yet-to-be-born branch.
      Store peeled refs in packed-refs (take 2).
      git-fetch: reuse ls-remote result.
      git-fetch: fix dumb protocol transport to fetch from pack-pruned ref
      git-fetch: allow glob pattern in refspec
      Allow git push to delete remote ref.
      git-shortlog: fix common repository prefix abbreviation.
      git-shortlog: make common repository prefix configurable with .mailmap
      git-fetch: allow forcing glob pattern in refspec
      fetch-pack: do not barf when duplicate re patterns are given
      git-merge: tighten error checking.
      git-merge: do not leak rev-parse output used for checking internally.
      cvsimport: style fixup.
      git blame -C: fix output format tweaks when crossing file boundary.
      tutorial: talk about user.name early and don't start with commit -a
      git-merge: fix confusion between tag and branch
      receive-pack: do not insist on fast-forward outside refs/heads/
      unpack-trees: make sure "df_conflict_entry.name" is NUL terminated.
      git-reset to remove "$GIT_DIR/MERGE_MSG"
      git-merge: squelch needless error message.
      git-merge: fix "fix confusion between tag and branch" for real

Michael Loeffler (1):
      git-fetch: ignore dereferenced tags in expand_refs_wildcard

Nicolas Pitre (2):
      builtin git-shortlog is broken
      pack-objects: remove redundent status information

Paul Mackerras (1):
      gitk: Fix enabling/disabling of menu items on Mac OS X

René Scharfe (1):
      shortlog: remove range check

Sean Estabrooks (1):
      Update documentation to remove incorrect GIT_DIFF_OPTS example.

Shawn O. Pearce (15):
      Teach git-completion.bash how to complete git-merge.
      Hide plumbing/transport commands from bash completion.
      Teach bash how to complete options for git-name-rev.
      Add current branch in PS1 support to git-completion.bash.
      Teach bash how to complete git-format-patch.
      Teach bash how to complete git-cherry-pick.
      Teach bash how to complete git-rebase.
      Teach bash about git log/show/whatchanged options.
      Support bash completion of refs/remote.
      Teach bash about git-repo-config.
      Support --strategy=x completion in addition to --strategy x.
      Cache the list of merge strategies and available commands during load.
      Teach bash about git-am/git-apply and their whitespace options.
      Teach bash how to complete long options for git-commit.
      Fix broken bash completion of local refs.


^ permalink raw reply	[relevance 3%]

* What's in git.git (stable)
@ 2006-12-13 21:35  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-12-13 21:35 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

We have a handful fixes on 'maint'; I will be cutting v1.4.4.3 by
the end of the week.

On the 'master' front, this round has many topics (most of which
have been cooking in the 'next' branch) merged since the last
announcement.

 - Johannes Schindelin's built-in shortlog is in.

 - Johannes Schindelin's built-in 'RCS merge replacement' is
   in.  Hopefully this would make merge-recursive more portable
   and faster.

 - Shawn Pearce and Johannes Schindelin spotted and fixed a few
   corner cases in merge-recursive.

 - Updates to gitk from Paul Mackerras to fix longstanding menu
   issues on Mac OS X.

 - Eric Wong fixed use of rerere in many places.

 - Eric also has quite a few fixes to git-svn.

 - Nico updated 'git-add' to really mean 'add contents', not
   'add to the set of tracked paths'.  Also updated was the
   documentation for 'git commit' to make it easier to teach new
   people after a long discussion.

 - Lars Hjemli taught 'git-branch' to rename branches.

 - Andy Parkins taught 'git-branch' to be colorful.

 - Robin Rosenberg improved cvsexportcommit for unusual
   pathnames.

 - 'git push $URL :refs/tags/that' (notice the colon) can be
   used to delete 'that' tag from the remote repository; this
   needs the latest git on both ends.

 - branch."master".{remote,merge} configuration items are set up
   by 'git-clone', thanks to Andy Parkins.

 - 'git-commit' gives 'diff --summary' output to remind mode
   changes and added/deleted files.

 - 'git-diff --numstat' matches 'git-apply --numstat' when
   talking about binary changes.

 - 'git-merge' is now a first class UI, not just a mere driver
   for strategies.

I am hoping that we can start a stabilization cycle for v1.5.0
based on what we have in 'master'.  The theme is "usability and
teachability".

Things that need to be done to complete what have been merged to
'master' are:

 - 'git-rm' needs to be fixed up as Linus outlined; remove
   working tree file and index entry but have a sanity check to
   make sure the working tree file match the index and HEAD.

 - 'git-branch' may need to be taught about renaming the
   matching per-branch configuration at the same time.

 - 'git-merge-file' needs to be documented and linked from
   git.txt.

 - 'git-clone' probably should be updated to use wild-card in
   remote.origin.fetch, instead of listing all the branches it
   found when the clone was made.

 - tutorials and other Porcelain documentation pages need to be
   updated to match the updated 'git-add' and 'git-rm' (to be
   updated), and their description should be made much less
   about implementation; they should talk in terms of end-user
   workflows.  I will send a draft for 'git diff' out later, but
   somebody needs a full sweep on Porcelain-ish documentation.

 - 'git diff --index' patch should be reverted (already done in
   'next'), although we may have to come up with a better
   wording for --cached.

----------------------------------------------------------------
* The 'maint' branch has these fixes since v1.4.4.2.

   Alex Riesen (1):
      Clarify fetch error for missing objects.

   Brian Gernhardt (1):
      Move Fink and Ports check to after config file

   Chris Wright (1):
      no need to install manpages as executable

   Eric Wong (2):
      git-svn: exit with status 1 for test failures
      git-svn: correctly display fatal() error messages

   Jim Meyering (1):
      Don't use memcpy when source and dest. buffers may overlap

   Martin Langhoff (1):
      cvsserver: Avoid miscounting bytes in Perl v5.8.x

   Shawn O. Pearce (1):
      Make sure the empty tree exists when needed in merge-recursive.


* The 'master' branch has these since the last announcement.

   Alex Riesen (3):
      git-blame: fix rev parameter handling.
      Make perl/ build procedure ActiveState friendly.
      Clarify fetch error for missing objects.

   Andreas Ericsson (2):
      ls-files: Give hints when errors happen.
      git-diff: Introduce --index and deprecate --cached.

   Andy Parkins (6):
      Use .git/config for storing "origin" shortcut repository
      Document git-repo-config --bool/--int options.
      De-emphasise the symbolic link documentation.
      Explicitly add the default "git pull" behaviour to .git/config on clone
      Colourise git-branch output
      Allow subcommand.color and color.subcommand color configuration

   Brian Gernhardt (1):
      Move Fink and Ports check to after config file

   Chris Wright (1):
      no need to install manpages as executable

   David Miller (1):
      Pass -M to diff in request-pull

   Eric Wong (21):
      git-svn: use ~/.subversion config files when using SVN:: libraries
      git-svn: enable delta transfers during fetches when using SVN:: libs
      git-svn: update tests for recent changes
      git-svn: error out when the SVN connection fails during a fetch
      git-svn: fix output reporting from the delta fetcher
      git-svn: color support for the log command
      git-svn: documentation updates
      git-svn: fix multi-init
      git-svn: avoid fetching files twice in the same revision
      git-svn: avoid network timeouts for long-running fetches
      git-svn: extra error check to ensure we open a file correctly
      git-svn: use do_switch for --follow-parent if the SVN library supports it
      rerere: add clear, diff, and status commands
      rerere: record (or avoid misrecording) resolved, skipped or aborted rebase/am
      git-svn: enable logging of information not supported by git
      git-svn: allow dcommit to take an alternate head
      git-svn: correctly display fatal() error messages
      git-svn: correctly handle packed-refs in refs/remotes/
      git-svn: exit with status 1 for test failures
      git-svn: correctly display fatal() error messages
      git-svn: correctly handle "(no author)" when using an authors file

   Han-Wen Nienhuys (1):
      ident.c: Trim hint printed when gecos is empty.

   J. Bruce Fields (4):
      cvs-migration: improved section titles, better push/commit explanation
      Documentation: reorganize cvs-migration.txt
      Documentation: update git-clone man page with new behavior
      Documentation: simpler shared repository creation

   Jakub Narebski (4):
      gitweb: Fix Atom feed <logo>: it is $logo, not $logo_url
      git-clone: Rename --use-immingled-remote option to --no-separate-remote
      Document git-diff whitespace flags -b and -w
      gitweb: Allow PNG, GIF, JPEG images to be displayed in "blob" view

   Jeff King (1):
      shortlog: fix segfault on empty authorname

   Jim Meyering (2):
      Set permissions of each new file before "cvs add"ing it.
      Don't use memcpy when source and dest. buffers may overlap

   Johannes Schindelin (18):
      Build in shortlog
      shortlog: do not crash on parsing "[PATCH"
      shortlog: read mailmap from ./.mailmap again
      shortlog: handle email addresses case-insensitively
      shortlog: fix "-n"
      shortlog: use pager
      sha1_object_info(): be consistent with read_sha1_file()
      xdiff: add xdl_merge()
      xdl_merge(): fix an off-by-one bug
      xdl_merge(): fix thinko
      git-mv: search more precisely for source directory in index
      diff -b: ignore whitespace at end of line
      xdl_merge(): fix and simplify conflict handling
      cvs-migration document: make the need for "push" more obvious
      Add builtin merge-file, a minimal replacement for RCS merge
      merge-file: support -p and -q; fix compile warnings
      Get rid of the dependency on RCS' merge program
      merge-recursive: add/add really is modify/modify with an empty base

   Josef Weidendorfer (1):
      Add branch.*.merge warning and documentation update

   Junio C Hamano (45):
      Store peeled refs in packed-refs file.
      remove merge-recursive-old
      git-merge: make it usable as the first class UI
      merge: allow merging into a yet-to-be-born branch.
      Store peeled refs in packed-refs (take 2).
      git-fetch: reuse ls-remote result.
      git-fetch: fix dumb protocol transport to fetch from pack-pruned ref
      git-fetch: allow glob pattern in refspec
      Allow git push to delete remote ref.
      git-shortlog: fix common repository prefix abbreviation.
      git-shortlog: make common repository prefix configurable with .mailmap
      git-commit: show --summary after successful commit.
      git-fetch: allow forcing glob pattern in refspec
      fetch-pack: do not barf when duplicate re patterns are given
      git-merge: tighten error checking.
      git-merge: do not leak rev-parse output used for checking internally.
      cvsimport: style fixup.
      git blame -C: fix output format tweaks when crossing file boundary.
      tutorial: talk about user.name early and don't start with commit -a
      git-merge: fix confusion between tag and branch
      xmerge: make return value from xdl_merge() more usable.
      merge-recursive: use xdl_merge().
      receive-pack: do not insist on fast-forward outside refs/heads/
      unpack-trees: make sure "df_conflict_entry.name" is NUL terminated.
      read-tree: further loosen "working file will be lost" check.
      Loosen "working file will be lost" check in Porcelain-ish
      read-tree: document --exclude-per-directory
      git-reset to remove "$GIT_DIR/MERGE_MSG"
      git-merge: squelch needless error message.
      git-merge: fix "fix confusion between tag and branch" for real
      Fix perl/ build.
      git-rerere: add 'gc' command.
      Documentation/git-commit: rewrite to make it more end-user friendly.
      git-commit: allow --only to lose what was staged earlier.
      shortlog: remove "[PATCH]" prefix from shortlog output
      shortlog: fix segfault on empty authorname
      diff --numstat: show binary with '-' to match "apply --numstat"
      add test case for recursive merge
      git-push: document removal of remote ref with :<dst> pathspec
      git merge: reword failure message.
      spurious .sp in manpages
      git-push: accept tag <tag> as advertised.
      send-pack: tighten checks for remote names
      branch --color: change default color selection.
      config documentation: group color items together.

   Lars Hjemli (3):
      git-branch: add options and tests for branch renaming
      rename_ref: use lstat(2) when testing for symlink
      git-branch: let caller specify logmsg

   Martin Langhoff (1):
      cvsserver: Avoid miscounting bytes in Perl v5.8.x

   Michael Loeffler (1):
      git-fetch: ignore dereferenced tags in expand_refs_wildcard

   Nicolas Pitre (4):
      builtin git-shortlog is broken
      pack-objects: remove redundent status information
      make 'git add' a first class user friendly interface to the index
      change the unpack limit treshold to a saner value

   Paul Mackerras (1):
      gitk: Fix enabling/disabling of menu items on Mac OS X

   René Scharfe (1):
      shortlog: remove range check

   Robin Rosenberg (1):
      Make cvsexportcommit work with filenames with spaces and non-ascii characters.

   Sean Estabrooks (1):
      Update documentation to remove incorrect GIT_DIFF_OPTS example.

   Shawn O. Pearce (17):
      Teach git-completion.bash how to complete git-merge.
      Hide plumbing/transport commands from bash completion.
      Teach bash how to complete options for git-name-rev.
      Add current branch in PS1 support to git-completion.bash.
      Teach bash how to complete git-format-patch.
      Teach bash how to complete git-cherry-pick.
      Teach bash how to complete git-rebase.
      Teach bash about git log/show/whatchanged options.
      Support bash completion of refs/remote.
      Teach bash about git-repo-config.
      Support --strategy=x completion in addition to --strategy x.
      Cache the list of merge strategies and available commands during load.
      Teach bash about git-am/git-apply and their whitespace options.
      Teach bash how to complete long options for git-commit.
      Fix broken bash completion of local refs.
      Make sure the empty tree exists when needed in merge-recursive.
      Remove uncontested renamed files during merge.

   Uwe Zeisberger (1):
      Fix documentation copy&paste typo



^ permalink raw reply	[relevance 3%]

* [PATCH] core-tutorial: git-merge uses -m for commit messages
@ 2007-02-05 11:34 14% Matthias Lederhofer
  0 siblings, 0 replies; 200+ results
From: Matthias Lederhofer @ 2007-02-05 11:34 UTC (permalink / raw)
  To: git

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
---
 Documentation/core-tutorial.txt |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/Documentation/core-tutorial.txt b/Documentation/core-tutorial.txt
index 9c28bea..6f30e0a 100644
--- a/Documentation/core-tutorial.txt
+++ b/Documentation/core-tutorial.txt
@@ -894,11 +894,11 @@ script called `git merge`, which wants to know which branches you want
 to resolve and what the merge is all about:
 
 ------------
-$ git merge "Merge work in mybranch" HEAD mybranch
+$ git merge -m "Merge work in mybranch" HEAD mybranch
 ------------
 
-where the first argument is going to be used as the commit message if
-the merge can be resolved automatically.
+The `-m` options specifies the commit message to be used for the merge commit
+(in case it is created).
 
 Now, in this case we've intentionally created a situation where the
 merge will need to be fixed up by hand, though, so git will do as much
@@ -981,7 +981,7 @@ resolve to get the "upstream changes" back to your branch.
 
 ------------
 $ git checkout mybranch
-$ git merge "Merge upstream changes." HEAD master
+$ git merge -m "Merge upstream changes." HEAD master
 ------------
 
 This outputs something like this (the actual commit object names
@@ -1623,8 +1623,8 @@ in both of them.  You could merge in 'diff-fix' first and then
 'commit-fix' next, like this:
 
 ------------
-$ git merge 'Merge fix in diff-fix' master diff-fix
-$ git merge 'Merge fix in commit-fix' master commit-fix
+$ git merge -m 'Merge fix in diff-fix' master diff-fix
+$ git merge -m 'Merge fix in commit-fix' master commit-fix
 ------------
 
 Which would result in:
-- 
1.5.0.rc3.544.g79b8

^ permalink raw reply related	[relevance 14%]

* What's in git.git (stable)
  @ 2007-04-22  6:22  3%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2007-04-22  6:22 UTC (permalink / raw)
  To: git

The latest maintenance release v1.5.1.2 is out.

Tonight's 'master' contains 64-bit index, core subproject
support, and gitattributes (but not the controversial "filter"
part).  As I promised I'd do something about attributes some
time ago (I think it was during v1.5.1 stabilization period), I
am reasonably happy with the state of 'master' right now.  The
other two major topics are also nice, unexpected bonus toward
v1.5.2 from my point of view.

Please expect stabilization cycle for v1.5.2 to start soon.

----------------------------------------------------------------

* The 'maint' branch has these fixes since the last
  announcement; these are all contained in v1.5.1.2, the latest
  maintenance release.

 Andrew Ruder (4):
  Update git-archive documentation
  Update git-cherry-pick documentation
  Fix unmatched emphasis tag in git-tutorial
  Update git-config documentation

 Andy Whitcroft (1):
  fix up strtoul_ui error handling

 Eric Wong (1):
  perl: install private Error.pm if the site version is older than our own

 Junio C Hamano (2):
  git-clone: fix dumb protocol transport to clone from pack-pruned ref
  GIT 1.5.1.2

 Sam Vilain (1):
  git-tar-tree: complete deprecation conversion message


* The 'master' branch has these since the last announcement
  in addition to the above.

 Alex Riesen (2):
  Tests for core subproject support
  Simplify calling of CR/LF conversion routines

 Alexandre Julliard (1):
  git.el: Add a commit description to the reflog.

 Aneesh Kumar K.V (1):
  gitview: annotation support

 Brian Gernhardt (1):
  Remove case-sensitive file in t3030-merge-recursive.

 James Bowes (1):
  Document git-check-attr

 Julian Phillips (1):
  refs.c: add a function to sort a ref list, rather then sorting on add

 Junio C Hamano (30):
  git-fetch--tool pick-rref
  git-fetch: use fetch--tool pick-rref to avoid local fetch from alternate
  Add basic infrastructure to assign attributes to paths
  Define 'crlf' attribute.
  Teach 'diff' about 'diff' attribute.
  Fix 'crlf' attribute semantics.
  Fix 'diff' attribute semantics.
  Makefile: add patch-ids.h back in.
  attribute macro support
  Define a built-in attribute macro "binary".
  Change attribute negation marker from '!' to '-'.
  Make sure quickfetch is not fooled with a previous, incomplete fetch.
  Allow more than true/false to attributes.
  merge-recursive: separate out xdl_merge() interface.
  Allow specifying specialized merge-backend per path.
  Add a demonstration/test of customized merge.
  Custom low-level merge driver support.
  Allow the default low-level merge driver to be configured.
  Custom low-level merge driver: change the configuration scheme.
  Allow low-level driver to specify different behaviour during internal merge.
  Fix funny types used in attribute value representation
  Counto-fix in merge-recursive
  Simplify code to find recursive merge driver.
  Documentation: support manual section (5) - file formats.
  Update 'crlf' attribute semantics.
  Document gitattributes(5)
  git-add -u: match the index with working tree.
  Fix bogus linked-list management for user defined merge drivers.
  convert.c: restructure the attribute checking part.
  lockfile: record the primary process.

 Linus Torvalds (21):
  diff-lib: use ce_mode_from_stat() rather than messing with modes manually
  Avoid overflowing name buffer in deep directory structures
  Add 'resolve_gitlink_ref()' helper function
  Add "S_IFDIRLNK" file mode infrastructure for git links
  Teach "fsck" not to follow subproject links
  Teach core object handling functions about gitlinks
  Fix thinko in subproject entry sorting
  Teach directory traversal about subprojects
  Teach git-update-index about gitlinks
  Don't show gitlink directories when we want "other" files
  Teach git list-objects logic not to follow gitlinks
  Teach "git-read-tree -u" to check out submodules as a directory
  Fix gitlink index entry filesystem matching
  Teach git list-objects logic to not follow gitlinks
  Teach "git-read-tree -u" to check out submodules as a directory
  Fix some "git ls-files -o" fallout from gitlinks
  Expose subprojects as special files to "git diff" machinery
  Use proper object allocators for unknown object nodes too
  Clean up object creation to use more common code
  Fix working directory errno handling when unlinking a directory
  Fix a copy-n-paste bug in the object decorator code.

 Nicolas Pitre (27):
  get rid of num_packed_objects()
  make overflow test on delta base offset work regardless of variable size
  add overflow tests on pack offset variables
  compute a CRC32 for each object as stored in a pack
  compute object CRC32 with index-pack
  pack-objects: learn about pack index version 2
  index-pack: learn about pack index version 2
  sha1_file.c: learn about index version 2
  show-index.c: learn about index v2
  pack-redundant.c: learn about index v2
  allow forcing index v2 and 64-bit offset treshold
  validate reused pack data with CRC when possible
  simple random data generator for tests
  use test-genrandom in tests instead of /dev/urandom
  tests for various pack index features
  clean up add_object_entry()
  pack-objects: optimize preferred base handling a bit
  pack-objects: equal objects in size should delta against newer objects
  pack-objects: rework check_delta_limit usage
  pack-objects: clean up list sorting
  pack-objects: get rid of reuse_cached_pack
  pack-objects: get rid of create_final_object_list()
  pack-objects: make in_pack_header_size a variable of its own
  add get_size_from_delta()
  pack-objects: better check_object() performances
  pack-objects: remove obsolete comments
  document --index-version for index-pack and pack-objects

 Shawn O. Pearce (2):
  Contribute a fairly paranoid update hook
  Kill the useless progress meter in merge-recursive

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] GIT 1.5.2
@ 2007-05-20  9:08  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2007-05-20  9:08 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

The latest feature release GIT 1.5.2 is available at the usual
places:

  http://www.kernel.org/pub/software/scm/git/

  git-1.5.2.tar.{gz,bz2}			(tarball)
  git-htmldocs-1.5.2.tar.{gz,bz2}		(preformatted docs)
  git-manpages-1.5.2.tar.{gz,bz2}		(preformatted docs)
  RPMS/$arch/git-*-1.5.2-1.$arch.rpm	(RPM)

GIT v1.5.2 Release Notes
========================

Updates since v1.5.1
--------------------

* Plumbing level superproject support.

  You can include a subdirectory that has an independent git
  repository in your index and tree objects of your project
  ("superproject").  This plumbing (i.e. "core") level
  superproject support explicitly excludes recursive behaviour.

  The "subproject" entries in the index and trees of a superproject
  are incompatible with older versions of git.  Experimenting with
  the plumbing level support is encouraged, but be warned that
  unless everybody in your project updates to this release or
  later, using this feature would make your project
  inaccessible by people with older versions of git.

* Plumbing level gitattributes support.

  The gitattributes mechanism allows you to add 'attributes' to
  paths in your project, and affect the way certain git
  operations work.  Currently you can influence if a path is
  considered a binary or text (the former would be treated by
  'git diff' not to produce textual output; the latter can go
  through the line endings conversion process in repositories
  with core.autocrlf set), expand and unexpand '$Id$' keyword
  with blob object name, specify a custom 3-way merge driver,
  and specify a custom diff driver.  You can also apply
  arbitrary filter to contents on check-in/check-out codepath
  but this feature is an extremely sharp-edged razor and needs
  to be handled with caution (do not use it unless you
  understand the earlier mailing list discussion on keyword
  expansion).  These conversions apply when checking files in
  or out, and exporting via git-archive.

* The packfile format now optionally suports 64-bit index.

  This release supports the "version 2" format of the .idx
  file.  This is automatically enabled when a huge packfile
  needs more than 32-bit to express offsets of objects in the
  pack.

* Comes with an updated git-gui 0.7.1

* Updated gitweb:

  - can show combined diff for merges;
  - uses font size of user's preference, not hardcoded in pixels;
  - can now 'grep';

* New commands and options.

  - "git bisect start" can optionally take a single bad commit and
    zero or more good commits on the command line.

  - "git shortlog" can optionally be told to wrap its output.

  - "subtree" merge strategy allows another project to be merged in as
    your subdirectory.

  - "git format-patch" learned a new --subject-prefix=<string>
    option, to override the built-in "[PATCH]".

  - "git add -u" is a quick way to do the first stage of "git
    commit -a" (i.e. update the index to match the working
    tree); it obviously does not make a commit.

  - "git clean" honors a new configuration, "clean.requireforce".  When
    set to true, this makes "git clean" a no-op, preventing you
    from losing files by typing "git clean" when you meant to
    say "make clean".  You can still say "git clean -f" to
    override this.

  - "git log" family of commands learned --date={local,relative,default}
    option.  --date=relative is synonym to the --relative-date.
    --date=local gives the timestamp in local timezone.

* Updated behavior of existing commands.

  - When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set
    but $EMAIL is set, the latter is used as a substitute.

  - "git diff --stat" shows size of preimage and postimage blobs
    for binary contents.  Earlier it only said "Bin".

  - "git lost-found" shows stuff that are unreachable except
    from reflogs.

  - "git checkout branch^0" now detaches HEAD at the tip commit
    on the named branch, instead of just switching to the
    branch (use "git checkout branch" to switch to the branch,
    as before).

  - "git bisect next" can be used after giving only a bad commit
    without giving a good one (this starts bisection half-way to
    the root commit).  We used to refuse to operate without a
    good and a bad commit.

  - "git push", when pushing into more than one repository, does
    not stop at the first error.

  - "git archive" does not insist you to give --format parameter
    anymore; it defaults to "tar".

  - "git cvsserver" can use backends other than sqlite.

  - "gitview" (in contrib/ section) learned to better support
    "git-annotate".

  - "git diff $commit1:$path2 $commit2:$path2" can now report
    mode changes between the two blobs.

  - Local "git fetch" from a repository whose object store is
    one of the alternates (e.g. fetching from the origin in a
    repository created with "git clone -l -s") avoids
    downloading objects unnecessarily.

  - "git blame" uses .mailmap to canonicalize the author name
    just like "git shortlog" does.

  - "git pack-objects" pays attention to pack.depth
    configuration variable.

  - "git cherry-pick" and "git revert" does not use .msg file in
    the working tree to prepare commit message; instead it uses
    $GIT_DIR/MERGE_MSG as other commands do.

* Builds

  - git-p4import has never been installed; now there is an
    installation option to do so.

  - gitk and git-gui can be configured out.

  - Generated documentation pages automatically get version
    information from GIT_VERSION.

  - Parallel build with "make -j" descending into subdirectory
    was fixed.

* Performance Tweaks

  - Optimized "git-rev-list --bisect" (hence "git-bisect").

  - Optimized "git-add $path" in a large directory, most of
    whose contents are ignored.

  - Optimized "git-diff-tree" for reduced memory footprint.

  - The recursive merge strategy updated a worktree file that
    was changed identically in two branches, when one of them
    renamed it.  We do not do that when there is no rename, so
    match that behaviour.  This avoids excessive rebuilds.

  - The default pack depth has been increased to 50, as the
    recent addition of delta_base_cache makes deeper delta chains
    much less expensive to access.  Depending on the project, it was
    reported that this reduces the resulting pack file by 10%
    or so.


Fixes since v1.5.1
------------------

All of the fixes in v1.5.1 maintenance series are included in
this release, unless otherwise noted.

* Bugfixes

  - Switching branches with "git checkout" refused to work when
    a path changes from a file to a directory between the
    current branch and the new branch, in order not to lose
    possible local changes in the directory that is being turned
    into a file with the switch.  We now allow such a branch
    switch after making sure that there is no locally modified
    file nor un-ignored file in the directory.  This has not
    been backported to 1.5.1.x series, as it is rather an
    intrusive change.

  - Merging branches that have a file in one and a directory in
    another at the same path used to get quite confused.  We
    handle such a case a bit more carefully, even though that is
    still left as a conflict for the user to sort out.  This
    will not be backported to 1.5.1.x series, as it is rather an
    intrusive change.

  - git-fetch had trouble with a remote with insanely large number
    of refs.

  - "git clean -d -X" now does not remove non-excluded directories.

  - rebasing (without -m) a series that changes a symlink to a directory
    in the middle of a path confused git-apply greatly and refused to
    operate.

----------------------------------------------------------------

Changes since v1.5.1 are as follows:

Adam Roben (5):
      Remove usernames from all commit messages, not just when using svmprops
      git-svn: Don't rely on $_ after making a function call
      git-svn: Ignore usernames in URLs in find_by_url
      git-svn: Added 'find-rev' command
      git-svn: Add 'find-rev' command

Alex Riesen (22):
      Fix passing of TCLTK_PATH to git-gui
      Use rev-list --reverse in git-rebase.sh
      Document -g (--walk-reflogs) option of git-log
      Fix t4201: accidental arithmetic expansion
      Fix permissions on test scripts
      Fix overwriting of files when applying contextually independent diffs
      Tests for core subproject support
      Simplify calling of CR/LF conversion routines
      Fix a typo in crlf conversion code
      Fix crash in t0020 (crlf conversion)
      Fix handle leak in write_tree
      Avoid excessive rewrites in merge-recursive
      Add a test for merging changed and rename-changed branches
      Ignore merged status of the file-level merge
      Use strlcpy instead of strncpy in mailmap.c
      Fix read_mailmap to handle a caller uninterested in repo abbreviation
      Remove pointless calls to access(2) when checking for .mailmap
      Include mailmap.h in mailmap.c to catch mailmap interface changes
      Small correction in reading of commit headers
      Handle return code of parse_commit in revision machinery
      Use GIT_OBJECT_DIR for temporary files of pack-objects
      Allow fetching references from any namespace

Alexandre Julliard (2):
      git.el: Add a commit description to the reflog.
      http-fetch: Disable use of curl multi support for libcurl < 7.16.

Amos Waterland (1):
      wcwidth redeclaration

Andrew Ruder (17):
      Add policy on user-interface changes
      Update git-am documentation
      Update git-applymbox documentation
      Update git-apply documentation
      Update git-annotate/git-blame documentation
      Update git-archive documentation
      Update git-cherry-pick documentation
      Fix unmatched emphasis tag in git-tutorial
      Update git-config documentation
      Removing -n option from git-diff-files documentation
      Document additional options for git-fetch
      Update git-fmt-merge documentation
      Update git-grep documentation
      Update -L documentation for git-blame/git-annotate
      Update git-http-push documentation
      Update git-local-fetch documentation
      Update git-http-fetch documentation

Andy Parkins (6):
      Show binary file size change in diff --stat
      post-receive-email example hook: fastforward should have been fast_forward
      post-receive-email example hook: detect rewind-only updates and output sensible message
      post-receive-email example hook: sed command for getting description was wrong
      Use $Id$ as the ident attribute keyword rather than $ident$ to be consistent with other VCSs
      Fix crlf attribute handling to match documentation

Andy Whitcroft (2):
      fix up strtoul_ui error handling
      git name-rev writes beyond the end of malloc() with large generations

Aneesh Kumar K.V (1):
      gitview: annotation support

Arjen Laarhoven (5):
      usermanual.txt: some capitalization nits
      t3200-branch.sh: small language nit
      t5300-pack-object.sh: portability issue using /usr/bin/stat
      Makefile: iconv() on Darwin has the old interface
      Document 'opendiff' value in config.txt and git-mergetool.txt

Brian Gernhardt (7):
      Remove unused WITH_OWN_SUBPROCESS_PY from RPM spec
      Fix t4200-rerere for white-space from "wc -l"
      Document --left-right option to rev-list.
      Distinguish branches by more than case in tests.
      Remove case-sensitive file in t3030-merge-recursive.
      Reverse the order of -b and --track in the man page.
      Ignore all man sections as they are generated files.

Bryan Larsen (2):
      Allow PERL_PATH="/usr/bin/env perl"
      posix compatibility for t4200

Carl Worth (1):
      Mention version 1.5.1 in tutorial and user-manual

Carlos Rica (1):
      Use const qualifier for 'sha1' parameter in delete_ref function

Christian Couder (4):
      Bisect: teach "bisect start" to optionally use one bad and many good revs.
      Documentation: bisect: "start" accepts one bad and many good commits
      Bisect: simplify "bisect start" logging.
      Bisect: rename "t/t6030-bisect-run.sh" to "t/t6030-bisect-porcelain.sh".

Dana L. How (2):
      Fix lseek(2) calls with args 2 and 3 swapped
      Create pack-write.c for common pack writing code

Daniel Barkalow (1):
      Make xstrndup common

Eric Wong (14):
      git-svn: bail out on incorrect command-line options
      git-svn: bail out on incorrect command-line options
      git-svn: dcommit/rebase confused by patches with git-svn-id: lines
      git-svn: fix log command to avoid infinite loop on long commit messages
      git-svn: respect lower bound of -r/--revision when following parent
      git-svn: quiet some warnings when run only with --version/--help
      git-svn: don't allow globs to match regular files
      perl: install private Error.pm if the site version is older than our own
      git-svn: don't drop the username from URLs when dcommit is run
      git-svn: clean up caching of SVN::Ra functions
      git-svn: fix segfaults due to initial SVN pool being cleared
      git-svn: don't attempt to minimize URLs by default
      git-svn: avoid crashing svnserve when creating new directories
      git-svn: don't minimize-url when doing an init that tracks multiple paths

Eygene Ryabinkin (13):
      Teach gitk to use the user-defined UI font everywhere.
      Improve look-and-feel of the gitk tool.
      Add the WITH_P4IMPORT knob to the Makefile.
      Added git-p4 package to the list of git RPMs.
      Added correct Python path to the RPM specfile.
      NO_TCLTK
      Add --with-tcltk and --without-tcltk to configure.
      Rewrite Tcl/Tk interpreter path for the GUI tools.
      Eliminate checks of user-specified Tcl/Tk interpreter.
      Allow wish interpreter to be defined with TCLTK_PATH
      Teach git-gui to use the user-defined UI font everywhere.
      Improve look-and-feel of the git-gui tool.
      Do not break git-gui messages into multiple lines.

Fernando J. Pereda (1):
      Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.

Frank Lichtenheld (35):
      cvsserver: Introduce new state variable 'method'
      cvsserver: Handle three part keys in git config correctly
      cvsserver: Allow to override the configuration per access method
      cvsserver: Make the database backend configurable
      cvsserver: Abort if connect to database fails
      Documentation: Replace @@GIT_VERSION@@ in documentation
      Documentation: Add version information to man pages
      cvsserver: Use DBI->table_info instead of DBI->tables
      cvsimport: sync usage lines with existing options
      cvsimport: Improve documentation of CVSROOT and CVS module determination
      cvsimport: Improve usage error reporting
      cvsimport: Reorder options in documentation for better understanding
      cvsimport: Improve formating consistency
      cvsserver: small corrections to asciidoc documentation
      cvsserver: Corrections to the database backend configuration
      cvsserver: Add asciidoc documentation for new database backend configuration
      gitweb: Allow forks with project list file
      gitweb: Allow configuring the default projects order and add order 'none'
      cvsserver: Fix handling of diappeared files on update
      cvsserver: Allow to "add" a removed file
      cvsserver: Reword documentation on necessity of write access
      cvsserver: Document the GIT branches -> CVS modules mapping more prominently
      config.txt: Document gitcvs.allbinary
      config.txt: Document core.autocrlf
      config.txt: Change pserver to server in description of gitcvs.*
      config.txt: Fix grammatical error in description of http.noEPSV
      config.txt: Add gitcvs.db* variables
      git-shortlog: Fix two formatting errors in asciidoc documentation
      cvsserver: Handle re-added files correctly
      cvsserver: Add test cases for git-cvsserver
      cvsserver: Limit config parser to needed options
      cvsserver: Don't send mixed messages to clients
      builtin-log.c: Fix typo in comment
      Documentation: format-patch has no --mbox option
      git-am: Clean up the asciidoc documentation

Geert Bosch (1):
      Fix renaming branch without config file

Gerrit Pape (5):
      rename contrib/hooks/post-receieve-email to contrib/hooks/post-receive-email.
      variable $projectdesc needs to be set before checking against unchanged default.
      Have sample update hook not refuse deleting a branch through push.
      Documentation/git-reset.txt: suggest git commit --amend in example.
      gitweb: choose appropriate view for file type if a= parameter missing

Ismail Dönmez (1):
      gitweb: use decode_utf8 directly

J. Bruce Fields (28):
      Documentation: minor edits of git-lost-found manpage
      Documentation: clarify git-checkout -f, minor editing
      Documentation: clarify track/no-track option.
      user-manual: fix discussion of default clone
      user-manual: detached HEAD
      user-manual: start revising "internals" chapter
      user-manual: use detached head when rewriting history
      user-manual: more discussion of detached heads, fix typos
      user-manual: add section ID's
      user-manual: clean up fast-forward and dangling-objects sections
      user-manual: fix .gitconfig editing examples
      user-manual: miscellaneous editing
      user-manual: stop deprecating the manual
      user-manual: fix clone and fetch typos
      user-manual: revise birdseye-view chapter
      glossary: expand and clarify some definitions, prune cross-references
      user-manual: move quick-start to an appendix
      Documentation: remove howto's now incorporated into manual
      user-manual: move howto/make-dist.txt into user manual
      user-manual: move howto/using-topic-branches into manual
      user-manual: add a "counting commits" example
      user-manual: introduce git
      user-manual: listing commits reachable from some refs not others
      user-manual: reorganize public git repo discussion
      tutorials: add user-manual links
      tutorial: revise index introduction
      user-manual: discourage shared repository
      user-manual: finding commits referencing given file content

Jakub Narebski (20):
      gitweb: Whitespace cleanup - tabs are for indent, spaces are for align (3)
      gitweb: Quote hash keys, and do not use barewords keys
      gitweb: Fix bug in "blobdiff" view for split (e.g. file to symlink) patches
      diff format documentation: describe raw combined diff format
      gitweb: Add parsing of raw combined diff format to parse_difftree_raw_line
      gitweb: Add combined diff support to git_difftree_body
      gitweb: Add combined diff support to git_patchset_body
      gitweb: Make it possible to use pre-parsed info in git_difftree_body
      gitweb: Show combined diff for merge commits in 'commitdiff' view
      gitweb: Show combined diff for merge commits in 'commit' view
      gitweb: Test if $from_id and $to_id are defined before comparison
      gitweb: Check if requested object exists
      gitweb: Fix "Use of unitialized value" warnings in empty repository
      Documentation: Split description of pretty formats of commit log
      gitweb: Add a few comments about %feature hash
      gitweb: Do not use absolute font sizes
      gitweb: Separate search regexp from search text
      gitweb: Empty patch for merge means trivial merge, not no differences
      gitweb: Fix error in git_patchset_body for deletion in merge commit
      gitweb: Fix "Use of uninitialized value" warning in git_feed

James Bowes (2):
      Document git-check-attr
      Documentation: fix typo in git-remote.txt

Jan Hudec (2):
      Updated documentation of hooks in git-receive-pack.
      Minor fixup to documentation of hooks in git-receive-pack.

Jari Aalto (4):
      Clarify SubmittingPatches Checklist
      git.7: Mention preformatted html doc location
      send-email documentation: clarify --smtp-server
      SPECIFYING RANGES typo fix: it it => it is

Jeff King (4):
      Documentation: don't reference non-existent 'git-cvsapplycommit'
      git-add: allow path limiting with -u
      Documentation/git-add: clarify -u with path limiting
      format-patch: add MIME-Version header when we add content-type.

Jim Meyering (3):
      (encode_85, decode_85): Mark source buffer pointer as "const".
      sscanf/strtoul: parse integers robustly
      sscanf/strtoul: parse integers robustly

Johan Herland (3):
      Fix signedness on return value from xread()
      Ensure return value from xread() is always stored into an ssize_t
      user-manual: Add section on ignoring files

Johannes Schindelin (7):
      Use print_wrapped_text() in shortlog
      dir.c(common_prefix): Fix two bugs
      t4201: Do not display weird characters on the terminal
      import-tars: be nice to wrong directory modes
      Teach import-tars about GNU tar's @LongLink extension.
      import-tars: Use the "Link indicator" to identify directories
      Add a birdview-on-the-source-code section to the user manual

Johannes Sixt (1):
      git-gui: Call changes "Staged" and "Unstaged" in file list titles.

Jonas Fonseca (1):
      git-tag(1): -v option is a subcommand; fix code block

Josh Triplett (5):
      Add clean.requireForce option, and add -f option to git-clean to override it
      Fix typo in git-am: s/Was is/Was it/
      Create a sysconfdir variable, and use it for ETC_GITCONFIG
      Add missing reference to GIT_COMMITTER_DATE in git-commit-tree documentation
      Fall back to $EMAIL for missing GIT_AUTHOR_EMAIL and GIT_COMMITTER_EMAIL

Julian Phillips (3):
      Documentation: show-ref: document --exclude-existing
      refs.c: add a function to sort a ref list, rather then sorting on add
      http.c: Fix problem with repeated calls of http_init

Junio C Hamano (151):
      git-fetch: add --quiet
      t6002: minor spelling fix.
      git-rev-list: add --bisect-vars option.
      git-rev-list --bisect: optimization
      t6004: add a bit more path optimization test.
      rev-list --bisect: Fix "halfway" optimization.
      make the previous optimization work also on path-limited rev-list --bisect
      Documentation: unbreak user-manual.
      Optional Tck/Tk: ignore generated files.
      checkout: allow detaching to HEAD even when switching to the tip of a branch
      _GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file.
      git-read-tree --index-output=<file>
      add_cache_entry(): removal of file foo does not conflict with foo/bar
      unpack_trees.c: pass unpack_trees_options structure to keep_entry() as well.
      unpack-trees: get rid of *indpos parameter.
      Fix read-tree --prefix=dir/.
      Fix twoway_merge that passed d/f conflict marker to merged_entry().
      Fix switching to a branch with D/F when current branch has file D.
      rerere: make sorting really stable.
      RPM spec: include git-p4 in the list of all packages.
      Fix dependency of common-cmds.h
      Fix bogus error message from merge-recursive error path
      Propagate cache error internal to refresh_cache() via parameter.
      Rename internal function "add_file_to_cache" in builtin-update-index.c
      Rename static variable write_index to update_index in builtin-apply.c
      Rename add_file_to_index() to add_file_to_cache()
      git-bisect: modernization
      t6030: add a bit more tests to git-bisect
      git-bisect: allow bisecting with only one bad commit.
      Documentation: tighten dependency for git.{html,txt}
      git-push reports the URL after failing.
      git-push to multiple locations does not stop at the first failure
      A new merge stragety 'subtree'.
      Prepare for 1.5.1.1
      Start 1.5.2 cycle by prepareing RelNotes for it.
      Add Documentation/cmd-list.made to .gitignore
      shortlog -w: make wrap-line behaviour optional.
      t1000: fix case table.
      Treat D/F conflict entry more carefully in unpack-trees.c::threeway_merge()
      merge-recursive: do not barf on "to be removed" entries.
      merge-recursive: handle D/F conflict case more carefully.
      t3030: merge-recursive backend test.
      git-fetch--tool pick-rref
      git-fetch: use fetch--tool pick-rref to avoid local fetch from alternate
      fsck: do not complain on detached HEAD.
      GIT 1.5.1.1
      Add %m to '--pretty=format:'
      Refactor patch-id filtering out of git-cherry and git-format-patch.
      git-log --cherry-pick A...B
      Documentation: --cherry-pick
      Fix git {log,show,...} --pretty=email
      Do not default to --no-index when given two directories.
      Add basic infrastructure to assign attributes to paths
      Define 'crlf' attribute.
      Teach 'diff' about 'diff' attribute.
      Fix 'crlf' attribute semantics.
      Fix 'diff' attribute semantics.
      Makefile: add patch-ids.h back in.
      attribute macro support
      Define a built-in attribute macro "binary".
      Change attribute negation marker from '!' to '-'.
      send-email: do not leave an empty CC: line if no cc is present.
      Make sure quickfetch is not fooled with a previous, incomplete fetch.
      Allow more than true/false to attributes.
      merge-recursive: separate out xdl_merge() interface.
      git-gui: Honor TCLTK_PATH if supplied
      Allow specifying specialized merge-backend per path.
      Add a demonstration/test of customized merge.
      Start preparing for 1.5.1.2
      Update draft release notes for 1.5.2 with accumulated changes.
      Custom low-level merge driver support.
      Allow the default low-level merge driver to be configured.
      Custom low-level merge driver: change the configuration scheme.
      Allow low-level driver to specify different behaviour during internal merge.
      Fix funny types used in attribute value representation
      Counto-fix in merge-recursive
      Simplify code to find recursive merge driver.
      Documentation: support manual section (5) - file formats.
      Update 'crlf' attribute semantics.
      Document gitattributes(5)
      git-add -u: match the index with working tree.
      git-clone: fix dumb protocol transport to clone from pack-pruned ref
      Fix bogus linked-list management for user defined merge drivers.
      convert.c: restructure the attribute checking part.
      lockfile: record the primary process.
      GIT 1.5.1.2
      Update documentation links to point at v1.5.1.2
      Documentation/Makefile: fix section (5) installation
      Update draft release notes for v1.5.2
      pack-objects: quickfix for permission modes.
      Fix 'quickfix' on pack-objects.
      Update tests not to assume that generated packfiles are writable.
      pack-objects: make generated packfile read-only
      Support 'diff=pgm' attribute
      Move index-related variables into a structure.
      Make read-cache.c "the_index" free.
      Document "diff=driver" attribute
      t5302: avoid using tail -c
      t6030: grab commit object name as we go
      Build RPM with ETC_GITCONFIG=/etc/gitconfig
      Diff between two blobs should take mode changes into account now.
      t/test-lib.sh: Protect ourselves from common misconfiguration
      gitattributes documentation: clarify overriding
      applymbox & quiltimport: typofix.
      Add 'ident' conversion.
      Add 'filter' attribute and external filter driver definition.
      Add --date={local,relative,default}
      Start preparing for 1.5.1.3
      Do not barf on too long action description
      Update .mailmap with "Michael"
      Fix import-tars fix.
      blame -s: suppress author name and time.
      Split out mailmap handling out of shortlog
      Apply mailmap in git-blame output.
      Make macros to prevent double-inclusion in headers consistent.
      Make sure test-genrandom and test-chmtime are builtas part of the main build.
      Fix symlink handling in git-svn, related to PerlIO
      GIT v1.5.1.3
      GIT v1.5.2-rc1
      blame: use .mailmap unconditionally
      diff.c: fix "size cache" handling.
      blame: Notice a wholesale incorporation of an existing file.
      blame: -C -C -C
      Add test for blame corner cases.
      GIT v1.5.2-rc2
      diff: release blobs after generating textual diff.
      diff.c: do not use a separate "size cache".
      diff -M: release the preimage candidate blobs after rename detection.
      diff -S: release the image after looking for needle in it
      GIT v1.5.1.4
      Update documentation links to point at 1.5.1.4
      t9400: skip cvsserver test if Perl SQLite interface is unavailable
      git-clone: don't get fooled by $PWD
      .mailmap: add some aliases
      GIT v1.5.2-rc3
      Minor copyediting on Release Notes for 1.5.2
      Add has_symlink_leading_path() function.
      apply: do not get confused by symlinks in the middle
      read-tree -m -u: avoid getting confused by intermediate symlinks.
      checkout: allow detaching to HEAD even when switching to the tip of a branch
      git-config: do not forget seeing "a.b.var" means we are out of "a.var" section.
      Link to HTML version of external doc if available
      Fix git-clone buglet for remote case.
      Prepare for 1.5.1.5 Release Notes
      gitweb: fix another use of undefined value
      GIT v1.5.1.5
      Add link to 1.5.1.5 release notes.
      Documentation/git.txt: Update links to older documentation pages.
      GIT 1.5.1.6
      git-cvsserver: exit with 1 upon "I HATE YOU"
      GIT 1.5.2

Junio Hamano (1):
      t9400: Use the repository config and nothing else.

Karl Hasselström (2):
      Fix markup in git-svn man page
      Add --no-rebase option to git-svn dcommit

Lars Hjemli (3):
      rename_ref(): only print a warning when config-file update fails
      Make builtin-branch.c handle the git config file
      git-archive: don't die when repository uses subprojects

Linus Torvalds (26):
      Optimize directory listing with pathspec limiter.
      diff-lib: use ce_mode_from_stat() rather than messing with modes manually
      Avoid overflowing name buffer in deep directory structures
      Add 'resolve_gitlink_ref()' helper function
      Add "S_IFDIRLNK" file mode infrastructure for git links
      Teach "fsck" not to follow subproject links
      Teach core object handling functions about gitlinks
      Fix thinko in subproject entry sorting
      Teach directory traversal about subprojects
      Teach git-update-index about gitlinks
      Don't show gitlink directories when we want "other" files
      Teach git list-objects logic not to follow gitlinks
      Teach "git-read-tree -u" to check out submodules as a directory
      Fix gitlink index entry filesystem matching
      Teach git list-objects logic to not follow gitlinks
      Teach "git-read-tree -u" to check out submodules as a directory
      git-quiltimport complaining yet still working
      Fix some "git ls-files -o" fallout from gitlinks
      Expose subprojects as special files to "git diff" machinery
      Add a generic "object decorator" interface, and make object refs use it
      Add support for "commit name decorations" to log family of commands
      Use proper object allocators for unknown object nodes too
      Clean up object creation to use more common code
      Fix working directory errno handling when unlinking a directory
      Fix a copy-n-paste bug in the object decorator code.
      Fix --boundary output

Luiz Fernando N. Capitulino (7):
      ident.c: Use const qualifier for 'struct passwd' parameters
      ident.c: Use size_t (instead of int) to store sizes
      remove_subtree(): Use strerror() when possible
      entry.c: Use const qualifier for 'struct checkout' parameters
      read_cache_from(): small simplification
      core-tutorial: minor fixes
      init_buffer(): Kill buf pointer

Marco Costalba (1):
      Fix an unmatched comment end in arm/sha1_arm.S

Martin Koegler (7):
      gitweb: Show "no difference" message for empty diff
      Add S_IFINVALID mode
      add get_sha1_with_mode
      add add_object_array_with_mode
      store mode in rev_list, if <tree>:<filename> syntax is used
      use mode of the tree in git-diff, if <tree>:<file> syntax is used
      Fix compilation of test-delta

Matthias Kestenholz (2):
      Documentation: Added [verse] to SYNOPSIS where necessary
      Documentation: Reformatted SYNOPSIS for several commands

Matthias Lederhofer (1):
      handle_options in git wrapper miscounts the options it handled.

Matthieu Castet (1):
      Remove stale non-static-inline prototype for tree_entry_extract()

Matthieu Moy (2):
      Document git add -u introduced earlier.
      Added a reference to git-add in the documentation for git-update-index

Michael Hendricks (3):
      Document 'git-log --decorate'
      git-send-email: allow leading white space on mutt aliases
      Document core.excludesfile for git-add

Michael S. Tsirkin (1):
      Display the subject of the commit just made.

Michael Spang (4):
      git-blame: Fix overrun in fake_working_tree_commit()
      dir.c: Omit non-excluded directories with dir->show_ignored
      t7300: Basic tests for git-clean
      Fix minor documentation errors

Michele Ballabio (1):
      git shortlog documentation: add long options and fix a typo

Nicolas Pitre (33):
      clean up and optimize nth_packed_object_sha1() usage
      get rid of num_packed_objects()
      make overflow test on delta base offset work regardless of variable size
      add overflow tests on pack offset variables
      compute a CRC32 for each object as stored in a pack
      compute object CRC32 with index-pack
      pack-objects: learn about pack index version 2
      index-pack: learn about pack index version 2
      sha1_file.c: learn about index version 2
      show-index.c: learn about index v2
      pack-redundant.c: learn about index v2
      allow forcing index v2 and 64-bit offset treshold
      validate reused pack data with CRC when possible
      simple random data generator for tests
      use test-genrandom in tests instead of /dev/urandom
      tests for various pack index features
      clean up add_object_entry()
      pack-objects: optimize preferred base handling a bit
      pack-objects: equal objects in size should delta against newer objects
      pack-objects: rework check_delta_limit usage
      pack-objects: clean up list sorting
      pack-objects: get rid of reuse_cached_pack
      pack-objects: get rid of create_final_object_list()
      pack-objects: make in_pack_header_size a variable of its own
      add get_size_from_delta()
      pack-objects: better check_object() performances
      pack-objects: remove obsolete comments
      document --index-version for index-pack and pack-objects
      common progress display support
      make progress "title" part of the common progress interface
      provide a facility for "delayed" progress reporting
      delay progress display when checking out files
      add file checkout progress

OGAWA Hirofumi (1):
      git-fetch: Fix "argument list too long"

Paul Mackerras (1):
      gitk: Allow user to choose whether to see the diff, old file, or new file

Petr Baudis (7):
      Git.pm: config_boolean() -> config_bool()
      gitweb: Do not use absolute font sizes
      gitweb: Normalize searchbar font size
      gitweb: Add support for grep searches
      gitweb: Allow arbitrary strings to be dug with pickaxe
      Documentation: git-rev-list's "patterns"
      gitweb: Remove redundant $searchtype setup

Quy Tonthat (4):
      Add howto files to rpm packages.
      Added new git-gui library files to rpm spec
      RPM spec: include files in technical/ to package.
      Documentation/branch: fix small typo in -D example

René Scharfe (3):
      Revert "builtin-archive: use RUN_SETUP"
      git-archive: make tar the default format
      git-archive: convert archive entries like checkouts do

Richard P. Curnow (2):
      Fix documentation of tag in git-fast-import.txt
      Fix documentation of tag in git-fast-import.txt

Robin H. Johnson (12):
      Add custom subject prefix support to format-patch (take 3)
      Add testcase for format-patch --subject-prefix (take 3)
      Document --dry-run parameter to send-email.
      Prefix Dry- to the message status to denote dry-runs.
      Debugging cleanup improvements
      Change the scope of the $cc variable as it is not needed outside of send_message.
      Perform correct quoting of recipient names.
      Validate @recipients before using it for sendmail and Net::SMTP.
      Ensure clean addresses are always used with Net::SMTP
      Allow users to optionally specify their envelope sender.
      Document --dry-run and envelope-sender for git-send-email.
      Sanitize @to recipients.

Sam Vilain (1):
      git-tar-tree: complete deprecation conversion message

Sami Farin (1):
      fast-import: size_t vs ssize_t

Shawn O. Pearce (50):
      Always bind the return key to the default button
      git-gui: Brown paper bag fix division by 0 in blame
      Fix lost-found to show commits only referenced by reflogs
      Honor -p<n> when applying git diffs
      Don't yap about merge-subtree during make
      git-gui: Display the directory basename in the title
      Revert "Allow wish interpreter to be defined with TCLTK_PATH"
      Contribute a fairly paranoid update hook
      Kill the useless progress meter in merge-recursive
      Don't repack existing objects in fast-import
      Cleanup variables in cat-file
      git-gui: Correctly handle UTF-8 encoded commit messages
      Actually handle some-low memory conditions
      Don't allow empty pathnames in fast-import
      Catch empty pathnames in trees during fsck
      git-gui: Allow spaces in path to 'wish'
      git-gui: Include the subject in the status bar after commit
      git-gui: Warn users before making an octopus merge
      git-gui: Correct line wrapping for too many branch message
      git-gui: Cleanup common font handling for font_ui
      git-gui: Use option database defaults to set the font
      git-gui: Refactor to use our git proc more often
      git-gui: Track our own embedded values and rebuild when they change
      Reuse fixup_pack_header_footer in index-pack
      Don't use seq in tests, not everyone has it
      Improve request-pull to handle non-rebased branches
      Properly handle '0' filenames in import-tars
      git-gui: Refactor into multiple files to save my sanity
      git-gui: Move console procs into their own namespace
      git-gui: Allow vi keys to scroll the diff/blame regions
      git-gui: Move merge support into a namespace
      git-gui: Show all possible branches for merge
      git-gui: Include commit id/subject in merge choices
      git-gui: Use vi-like keys in merge dialog
      Remove duplicate exports from Makefile
      git-gui: Allow shift-{k,j} to select a range of branches to merge
      git-gui: Define a simple class/method system
      git-gui: Convert browser, console to "class" format
      git-gui: Don't attempt to inline array reads in methods
      git-gui: Convert blame to the "class" way of doing things
      git-gui: Use prefix if blame is run in a subdirectory
      git-gui: Smarter command line parsing for browser, blame
      git-gui: Generate blame on uncommitted working tree file
      git-gui: Cleanup minor nits in blame code
      git-gui: Format author/committer times in ISO format
      Use .git/MERGE_MSG in cherry-pick/revert
      git-gui: Paperbag fix blame in subdirectory
      git gui 0.7.0
      Correct error message in revert/cherry-pick
      git-gui: Gracefully handle bad TCL_PATH at compile time

Steffen Prohaska (4):
      tiny fix in documentation of git-clone
      git-config: test for 'do not forget "a.b.var" ends "a.var" section'.
      Optimized cvsexportcommit: calling 'cvs status' once instead of once per touched file.
      Fixed link in user-manual

Steven Grimm (3):
      Add --quiet option to suppress output of "rm" commands for removed files.
      git-rm: Trivial fix for a comment typo.
      Add --ignore-unmatch option to exit with zero status when no files are removed.

Theodore Ts'o (2):
      Add pack.depth option to git-pack-objects.
      Increase pack.depth default to 50

Tomash Brechko (1):
      cvsexportcommit -p : fix the usage of git-apply -C.

Uwe Kleine-König (1):
      fix importing of subversion tars

Ville Skyttä (1):
      DESTDIR support for git/contrib/emacs

Xavier Maillard (2):
      git-blame.el: separate git-blame-mode to ease maintenance
      git-blame.el: pick a set of random colors for each git-blame turn

YOSHIFUJI Hideaki (1):
      Avoid composing too long "References" header.

^ permalink raw reply	[relevance 3%]

* [PATCH 2/6] git-merge: fix faulty SQUASH_MSG
  @ 2007-09-23 22:51  2%   ` Lars Hjemli
  0 siblings, 0 replies; 200+ results
From: Lars Hjemli @ 2007-09-23 22:51 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Only the first 'remote' head is currently specified as an argument to 'git
log' when generating a SQUSH_MSG, which makes the generated message fail
to mention every commit involved in the merge. This fixes the problem.

Noticed-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
---
 git-merge.sh |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/git-merge.sh b/git-merge.sh
index 3a01db0..3857634 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -59,7 +59,7 @@ finish_up_to_date () {
 squash_message () {
 	echo Squashed commit of the following:
 	echo
-	git log --no-merges ^"$head" $remote
+	git log --no-merges ^"$head" $remoteheads
 }
 
 finish () {
-- 
1.5.3.2.82.g75c8d

^ permalink raw reply related	[relevance 2%]

* [PATCH 0/6] per branch options for git-merge
@ 2007-09-23 22:51  2% Lars Hjemli
    0 siblings, 1 reply; 200+ results
From: Lars Hjemli @ 2007-09-23 22:51 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

This patch-series implements support for per branch configuration of
git-merge, using entries (branch.<name>.mergeoptions) in .git/config.
Since this makes it possible to specify --no-commit and --squash as
default options for git-merge, the new options --commit and --no-squash
are added to enable users to override such defaults.

There is also a new option, --no-ff, which can be used to force git-merge
to create a merge commit even when the merge was a fast-forward (and a
matching --ff option to allow overrides).

Shortlog:
  Add test-script for git-merge porcelain
  git-merge: fix faulty SQUASH_MSG
  git-merge: refactor option parsing
  git-merge: add support for branch.<name>.mergeoptions
  git-merge: add support for --commit and --no-squash
  git-merge: add --ff and --no-ff options

Diffstat:
 Documentation/config.txt        |    6 +
 Documentation/git-merge.txt     |    4 +
 Documentation/merge-options.txt |   17 ++
 git-merge.sh                    |   65 +++++-
 t/t7600-merge.sh                |  440 +++++++++++++++++++++++++++++++++++++++
 5 files changed, 521 insertions(+), 11 deletions(-)

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (topics)
       [not found]     ` <7v1wd1d0le.fsf@gitster.siamese.dyndns.org>
@ 2007-09-26 20:05  3%   ` Junio C Hamano
  2007-09-26 21:44  0%     ` Johannes Schindelin
                       ` (2 more replies)
  0 siblings, 3 replies; 200+ results
From: Junio C Hamano @ 2007-09-26 20:05 UTC (permalink / raw)
  To: git

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.

* jk/diff-rename (Tue Sep 25 15:29:42 2007 -0400) 1 commit
 + diffcore-rename: cache file deltas

Parked in 'next' for now but is 'master' material.

* mv/unknown (Tue Sep 25 16:38:46 2007 +0200) 1 commit
 + Don't use "<unknown>" for placeholders and suppress printing of
   empty user formats.

Parked in 'next'; I was already burned by it not passing one of
the test cases, and I am not absolutely certain what else this
subtly breaks.  Hopefully minor.

* jb/remote-rm (Sun Sep 23 22:29:12 2007 -0700) 3 commits
 + git-remote rm: add tests and minor fix-ups
 + remote: document the 'rm' subcommand
 + remote: add 'rm' subcommand

Should be Ok to push out to 'master'.

* ml/submodule (Sun Sep 23 22:19:42 2007 -0400) 1 commit
 + git-submodule - allow a relative path as the subproject url

Should be Ok to push out to 'master'.

* lh/merge (Mon Sep 24 00:51:45 2007 +0200) 6 commits
 + git-merge: add --ff and --no-ff options
 + git-merge: add support for --commit and --no-squash
 + git-merge: add support for branch.<name>.mergeoptions
 + git-merge: refactor option parsing
 + git-merge: fix faulty SQUASH_MSG
 + Add test-script for git-merge porcelain

Comments?  I personally never felt need for --no-ff but the
series is reasonably clean so I do not see strong objection
against this series either.

* sv/svn (Fri Sep 21 15:27:01 2007 +1200) 3 commits
 + git-svn: handle changed svn command-line syntax
 + git-svn: fix test for trunk svn (transaction out of date)
 + git-svn: fix test for trunk svn (commit message not needed)

Will merge to 'master' this weekend.

* js/rebase-i (Tue Sep 25 16:43:15 2007 +0100) 1 commit
 + rebase -i: work on a detached HEAD

Waiting for autogc change as this textually interacts with it,
and the additional convenience can wait.

* jc/autogc (Mon Sep 17 00:55:13 2007 -0700) 10 commits
 + git-gc --auto: run "repack -A -d -l" as necessary.
 + git-gc --auto: restructure the way "repack" command line is built.
 + git-gc --auto: protect ourselves from accumulated cruft
 + git-gc --auto: add documentation.
 + git-gc --auto: move threshold check to need_to_gc() function.
 + repack -A -d: use --keep-unreachable when repacking
 + pack-objects --keep-unreachable
 + Export matches_pack_name() and fix its return value
 + Invoke "git gc --auto" from commit, merge, am and rebase.
 + Implement git gc --auto

I think the only remaining thing left with this thing is to
prevent more than one instances of it from running at the same
time.  Any takers?

* ph/strbuf (Tue Sep 25 10:22:44 2007 +0200) 37 commits
 + Small cache_tree_write refactor.
 + Make builtin-rerere use of strbuf nicer and more efficient.
 + Add strbuf_cmp.
 + strbuf_setlen(): do not barf on setting length of an empty buffer
   to 0
 + sq_quote_argv and add_to_string rework with strbuf's.
 + Full rework of quote_c_style and write_name_quoted.
 + ...

I had to make a small fix-up to strbuf_setlen() last night to
this series; this should be ready for 'master'.

And it is better to push this out early, as the series touches
everywhere and conflicts with peoples' patches.

* db/fetch-pack (Tue Sep 25 00:13:25 2007 -0400) 45 commits
 + Prevent send-pack from segfaulting when a branch doesn't match
 + Cleanup unnecessary break in remote.c
 + Cleanup style nit of 'x == NULL' in remote.c
 + Fix memory leaks when disconnecting transport instances
 + Ensure builtin-fetch honors {fetch,transfer}.unpackLimit
 + ...

Two issues known to me are:

 - "rsync" transport is not supported yet;

 - regresses "git pull <name>" using .git/remotes/<name>; does
   not merge the first refspec when branch.<name>.merge is not
   set.

There may be others but some people apparently use this in
production (including me) and I do not expect major breakages in
the really essential part.

* ss/svnimport (Mon Sep 24 12:57:40 2007 +0200) 1 commit
 + Fix pool handling in git-svnimport to avoid memory leaks.

This is meant to eventually go to 'maint' as well but with
diminishing user base of svnimport it is getting harder to get
good "tested successfully, seen improvements" reports.

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

I think "stash create" is going in a good direction, but I do
not think rebase should unstash unconditionally on the resulting
work tree.  A good compromise might be not to unstash if the
user asked to switch branches first and to unstash if he didn't.

* kh/commit (Mon Sep 17 20:06:48 2007 -0400) 7 commits
 - Implement git commit as a builtin command.
 - Export rerere() and launch_editor().
 - Add strbuf_read_file().
 - Clean up stripspace a bit, use strbuf even more.
 - Introduce entry point for launching add--interactive.
 - Enable wt-status to run against non-standard index file.
 - Enable wt-status output to a given FILE pointer.

There were a few updates/replacements to the list I missed;

* gr/smtp (Tue Sep 25 17:27:54 2007 -0700) 2 commits
 - [TO BE SQUASHED] Fix-up after review
 - Add ability to specify SMTP server port when using git-send-email.

Will be in 'next'.

^ permalink raw reply	[relevance 3%]

* Re: What's cooking in git.git (topics)
  2007-09-26 20:05  3%   ` Junio C Hamano
@ 2007-09-26 21:44  0%     ` Johannes Schindelin
  2007-09-27  2:36  0%     ` Jeff King
  2007-10-02  5:53  2%     ` Junio C Hamano
  2 siblings, 0 replies; 200+ results
From: Johannes Schindelin @ 2007-09-26 21:44 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Hi,

On Wed, 26 Sep 2007, Junio C Hamano wrote:

> * mv/unknown (Tue Sep 25 16:38:46 2007 +0200) 1 commit
>  + Don't use "<unknown>" for placeholders and suppress printing of
>    empty user formats.
> 
> Parked in 'next'; I was already burned by it not passing one of the test 
> cases, and I am not absolutely certain what else this subtly breaks.  
> Hopefully minor.

I guess a few scripts could maybe rely on this behaviour.  We should 
advertise it as such.

> * lh/merge (Mon Sep 24 00:51:45 2007 +0200) 6 commits
>  + git-merge: add --ff and --no-ff options
>  + git-merge: add support for --commit and --no-squash
>  + git-merge: add support for branch.<name>.mergeoptions
>  + git-merge: refactor option parsing
>  + git-merge: fix faulty SQUASH_MSG
>  + Add test-script for git-merge porcelain
> 
> Comments?  I personally never felt need for --no-ff but the series is 
> reasonably clean so I do not see strong objection against this series 
> either.

Together with a resubmitted git-merge-rebase.sh (hint, hint), the 
mergeOptions would be quite useful for a workflow where you want to rebase 
on top of an upstream quite often.

> * js/rebase-i (Tue Sep 25 16:43:15 2007 +0100) 1 commit
>  + rebase -i: work on a detached HEAD
> 
> Waiting for autogc change as this textually interacts with it, and the 
> additional convenience can wait.

Sure.  I never used it anyway, but you specifically requested it ;-)  BTW 
thanks for merging the rest; especially the progress meter was a sore 
point for me since long.

> * jc/autogc (Mon Sep 17 00:55:13 2007 -0700) 10 commits
>  + git-gc --auto: run "repack -A -d -l" as necessary.
>  + git-gc --auto: restructure the way "repack" command line is built.
>  + git-gc --auto: protect ourselves from accumulated cruft
>  + git-gc --auto: add documentation.
>  + git-gc --auto: move threshold check to need_to_gc() function.
>  + repack -A -d: use --keep-unreachable when repacking
>  + pack-objects --keep-unreachable
>  + Export matches_pack_name() and fix its return value
>  + Invoke "git gc --auto" from commit, merge, am and rebase.
>  + Implement git gc --auto
> 
> I think the only remaining thing left with this thing is to prevent more 
> than one instances of it from running at the same time.  Any takers?

You mean, just creating a throw-away lock file?

> * ph/strbuf (Tue Sep 25 10:22:44 2007 +0200) 37 commits
>  + Small cache_tree_write refactor.
>  + Make builtin-rerere use of strbuf nicer and more efficient.
>  + Add strbuf_cmp.
>  + strbuf_setlen(): do not barf on setting length of an empty buffer
>    to 0
>  + sq_quote_argv and add_to_string rework with strbuf's.
>  + Full rework of quote_c_style and write_name_quoted.
>  + ...
> 
> I had to make a small fix-up to strbuf_setlen() last night to this 
> series; this should be ready for 'master'.
> 
> And it is better to push this out early, as the series touches 
> everywhere and conflicts with peoples' patches.

Hehe.  Indeed, I had to fix the notes series after rebasing it...

> * db/fetch-pack (Tue Sep 25 00:13:25 2007 -0400) 45 commits
>  + Prevent send-pack from segfaulting when a branch doesn't match
>  + Cleanup unnecessary break in remote.c
>  + Cleanup style nit of 'x == NULL' in remote.c
>  + Fix memory leaks when disconnecting transport instances
>  + Ensure builtin-fetch honors {fetch,transfer}.unpackLimit
>  + ...
> 
> Two issues known to me are:
> 
>  - "rsync" transport is not supported yet;

I promised to do this, and so I will today.

> * jc/stash-create (Mon Jul 9 00:51:23 2007 -0700) 2 commits
>  + rebase: allow starting from a dirty tree.
>  + stash: implement "stash create"
> 
> I think "stash create" is going in a good direction, but I do not think 
> rebase should unstash unconditionally on the resulting work tree.  A 
> good compromise might be not to unstash if the user asked to switch 
> branches first and to unstash if he didn't.

Sounds like a sensible change to me; maybe a little warning after the 
rebase?

I have no idea if I come around to do the same for rebase--interactive any 
time soon, though.

Ciao,
Dscho

^ permalink raw reply	[relevance 0%]

* Re: What's cooking in git.git (topics)
  2007-09-26 20:05  3%   ` Junio C Hamano
  2007-09-26 21:44  0%     ` Johannes Schindelin
@ 2007-09-27  2:36  0%     ` Jeff King
  2007-10-02  5:53  2%     ` Junio C Hamano
  2 siblings, 0 replies; 200+ results
From: Jeff King @ 2007-09-27  2:36 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Wed, Sep 26, 2007 at 01:05:59PM -0700, Junio C Hamano wrote:

> * jk/diff-rename (Tue Sep 25 15:29:42 2007 -0400) 1 commit
>  + diffcore-rename: cache file deltas
> 
> Parked in 'next' for now but is 'master' material.

My tests after this patch show that spanhash_find is responsible for
a large portion of the processing time in large renames, so I am going
to look into speeding that up.

> * lh/merge (Mon Sep 24 00:51:45 2007 +0200) 6 commits
>  + git-merge: add --ff and --no-ff options
>  + git-merge: add support for --commit and --no-squash
>  + git-merge: add support for branch.<name>.mergeoptions
>  + git-merge: refactor option parsing
>  + git-merge: fix faulty SQUASH_MSG
>  + Add test-script for git-merge porcelain
> 
> Comments?  I personally never felt need for --no-ff but the
> series is reasonably clean so I do not see strong objection
> against this series either.

I like it. I know that --no-ff is frowned upon, but I think previous
discussions have mentioned workflows where it might be used
intelligently. Since the patch is unlikely to break anything for
traditional workflows, I think it is a nice way to let people experiment
with alternative workflows that use --no-ff. Maybe something interesting
will come of it.

-Peff

^ permalink raw reply	[relevance 0%]

* What's cooking in git.git (topics)
  2007-09-26 20:05  3%   ` Junio C Hamano
  2007-09-26 21:44  0%     ` Johannes Schindelin
  2007-09-27  2:36  0%     ` Jeff King
@ 2007-10-02  5:53  2%     ` Junio C Hamano
  2 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2007-10-02  5:53 UTC (permalink / raw)
  To: git

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.

----------------------------------------------------------------

* ph/strbuf (Thu Sep 27 13:33:19 2007 +0200) 44 commits
 + Make read_patch_file work on a strbuf.
 + strbuf_read_file enhancement, and use it.
 + strbuf change: be sure ->buf is never ever NULL.
 + double free in builtin-update-index.c
 + Clean up stripspace a bit, use strbuf even more.
 + Add strbuf_read_file().
 ...

Will be in 'master' soon.  We've seen nice linecount reduction
and the end result is rather pleasant to read.

* jc/am-quiet (Mon Oct 1 00:27:51 2007 -0700) 2 commits
 + git-am: fix typo in the previous one.
 + git-am: make the output quieter.

Response against recent "rebase being too chatty" complaints.
This should be a 'master' material.

* ap/dateformat (Fri Sep 28 15:17:45 2007 +0100) 3 commits
 + Make for-each-ref's grab_date() support per-atom formatting
 + Make for-each-ref allow atom names like "<name>:<something>"
 + parse_date_format(): convert a format name to an enum date_mode

With some test suite additions, this could go to 'master' soon.
Yes, that's a HINT, people ;-).

* je/hooks (Wed Sep 26 15:31:01 2007 -0600) 1 commit
 + post-checkout hook, tests, and docs

Will be in 'master' soon.

* db/fetch-pack (Mon Oct 1 00:59:39 2007 +0100) 49 commits
 + fetch/push: readd rsync support
 + Introduce remove_dir_recursively()
 + bundle transport: fix an alloc_ref() call
 + Allow abbreviations in the first refspec to be merged
 + Prevent send-pack from segfaulting when a branch doesn't match
 + Cleanup unnecessary break in remote.c
 ...

Has been cooking for quite long time.

There was a regression that made me quite unhappy about the
rewrite, but Daniel fixed it, so I should be happy.  There is
another usability regression: http transport is now totally
silent.  Even when you fetch daily, if the other end frequently
repacks everything into one big ball of wax like repo.or.cz
does, you will end up transferring quite a large pack every
time, and the total lack of progress report is unacceptably
unnerving.  At least we should reinstate "Fetching blah from URL
using http", and preferrably "walk $object_name" lines.  The
latter could be replaced with just series of CR + "walked N
commits..." if we do not like many output from the current "walk
$object_name" lines scrolling the other information away.

I am not sure the quality of "rsync" transport near the tip,
either, but at least the change should not affect other
transports.  Nobody should using about rsync transport these
days anyway.  Perhaps we should put a deprecation notice in the
release notes to 1.5.4, and remove it three months later.

* jc/autogc (Mon Sep 17 00:55:13 2007 -0700) 10 commits
 + git-gc --auto: run "repack -A -d -l" as necessary.
 + git-gc --auto: restructure the way "repack" command line is built.
 + git-gc --auto: protect ourselves from accumulated cruft
 + git-gc --auto: add documentation.
 + git-gc --auto: move threshold check to need_to_gc() function.
 + repack -A -d: use --keep-unreachable when repacking
 + pack-objects --keep-unreachable
 + Export matches_pack_name() and fix its return value
 + Invoke "git gc --auto" from commit, merge, am and rebase.
 + Implement git gc --auto

I think this one is reasonably sane, but I was the one who wrote
it so people should take that with a grain of salt.  What it is
and isn't:

 - "gc --auto" is a way to prevent you from keeping your
   repository _grossly_ inefficient.  Ideally, if you ever
   rapacked your repository once, and do the regular repository
   maintenance ("'git gc' before you leave for lunch every other
   day"), it should never trigger.

 - "gc --auto" is not something you can background.  We do not
   want to lock the repository and worry about associated stale
   lock, expiry etc.  The complexity is not worth it, compared
   to the stated purpose above (I suspect it might already be
   safe to run multiple instances at the same time, but the
   effort to analyze if it is is not even worth, compared to the
   stated purpose above.  Just let it run synchronously if it
   triggers, but it should not trigger for you).

* js/rebase-i (Tue Sep 25 16:43:15 2007 +0100) 1 commits
 + rebase -i: work on a detached HEAD

Will be in 'master', together with "gc --auto", soon.

* mv/unknown (Tue Sep 25 16:38:46 2007 +0200) 1 commit
 + Don't use "<unknown>" for placeholders and suppress printing of
   empty user formats.

Will be in 'master' soon.

* lh/merge (Mon Sep 24 00:51:45 2007 +0200) 6 commits
 + git-merge: add --ff and --no-ff options
 + git-merge: add support for --commit and --no-squash
 + git-merge: add support for branch.<name>.mergeoptions
 + git-merge: refactor option parsing
 + git-merge: fix faulty SQUASH_MSG
 + Add test-script for git-merge porcelain

Will be in 'master' soon.

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

Instead of refusing to rebase, telling you that your work tree
is dirty, this stashes your local changes, runs rebase and then
unstashes automatically.  That _sounds_ nicer and easier to use,
but I am not sure if it is a wise/sane thing to do.  We may want
to revert the "autostash" from rebase.  Opinions?

* kh/commit (Mon Sep 17 20:06:47 2007 -0400)
 + Export rerere() and launch_editor().
 + Introduce entry point add_interactive and add_files_to_cache
 + Clean up stripspace a bit, use strbuf even more.
 + Add strbuf_read_file().
 + rerere: Fix use of an empty strbuf.buf
 + Small cache_tree_write refactor.
 ...

Stalled.

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

Stalled.  This is about my pet-peeve that log (diff-tree) family
has much limited pathspec semantics.  It should learn to glob
like ls-files and grep do.

^ permalink raw reply	[relevance 2%]

* [PATCH] core-tutorial: Use new syntax for git-merge.
@ 2007-10-30 19:54 14% Sergei Organov
  2007-10-30 20:05  0% ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Sergei Organov @ 2007-10-30 19:54 UTC (permalink / raw)
  To: git


The patch below turns core-tutorial to use new syntax for
git-merge. Please take close look at the last diff chunk, -- I'm not sure I
got it right as it didn't have HEAD in the original version, -- was it already
wrong before the patch?

---
 Documentation/core-tutorial.txt |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Documentation/core-tutorial.txt b/Documentation/core-tutorial.txt
index d8e78ac..02255d8 100644
--- a/Documentation/core-tutorial.txt
+++ b/Documentation/core-tutorial.txt
@@ -878,7 +878,7 @@ script called `git merge`, which wants to know which branches you want
 to resolve and what the merge is all about:
 
 ------------
-$ git merge "Merge work in mybranch" HEAD mybranch
+$ git merge -m "Merge work in mybranch" mybranch
 ------------
 
 where the first argument is going to be used as the commit message if
@@ -965,7 +965,7 @@ to the `master` branch. Let's go back to `mybranch`, and run
 
 ------------
 $ git checkout mybranch
-$ git merge "Merge upstream changes." HEAD master
+$ git merge -m "Merge upstream changes." master
 ------------
 
 This outputs something like this (the actual commit object names
@@ -1607,8 +1607,8 @@ in both of them.  You could merge in 'diff-fix' first and then
 'commit-fix' next, like this:
 
 ------------
-$ git merge 'Merge fix in diff-fix' master diff-fix
-$ git merge 'Merge fix in commit-fix' master commit-fix
+$ git merge -m 'Merge fix in diff-fix' master diff-fix
+$ git merge -m 'Merge fix in commit-fix' master commit-fix
 ------------
 
 Which would result in:
-- 
1.5.3.4

^ permalink raw reply related	[relevance 14%]

* Re: [PATCH] core-tutorial: Use new syntax for git-merge.
  2007-10-30 19:54 14% [PATCH] core-tutorial: Use new syntax for git-merge Sergei Organov
@ 2007-10-30 20:05  0% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2007-10-30 20:05 UTC (permalink / raw)
  To: Sergei Organov; +Cc: git

Sergei Organov <osv@javad.com> writes:

> The patch below turns core-tutorial to use new syntax for
> git-merge. Please take close look at the last diff chunk, -- I'm not sure I
> got it right as it didn't have HEAD in the original version, -- was it already
> wrong before the patch?

You do not want the extra 'master' there.

> @@ -1607,8 +1607,8 @@ in both of them.  You could merge in 'diff-fix' first and then
>  'commit-fix' next, like this:
>  
>  ------------
> -$ git merge 'Merge fix in diff-fix' master diff-fix
> -$ git merge 'Merge fix in commit-fix' master commit-fix
> +$ git merge -m 'Merge fix in diff-fix' master diff-fix
> +$ git merge -m 'Merge fix in commit-fix' master commit-fix
>  ------------

The example is working on 'master' branch at this point and HEAD
and 'master' are equivalent there.

^ permalink raw reply	[relevance 0%]

* [PATCH] Documentation: quote commit messages consistently.
@ 2007-11-02 17:12 13% Sergei Organov
  0 siblings, 0 replies; 200+ results
From: Sergei Organov @ 2007-11-02 17:12 UTC (permalink / raw)
  To: git


Documentation quotes commit messages 14 times with double-quotes, and 7
times with single-quotes. The patch turns everything to double-quotes.

A nice side effect is that documentation becomes more Windoze-friendly
as AFAIK single quotes won't work there.

Signed-off-by: Sergei Organov <osv@javad.com>
---
 Documentation/core-tutorial.txt |    8 ++++----
 Documentation/everyday.txt      |    4 ++--
 Documentation/git-reset.txt     |    2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/Documentation/core-tutorial.txt b/Documentation/core-tutorial.txt
index 5df97a1..99817c5 100644
--- a/Documentation/core-tutorial.txt
+++ b/Documentation/core-tutorial.txt
@@ -828,7 +828,7 @@ that branch, and do some work there.
 ------------------------------------------------
 $ git checkout mybranch
 $ echo "Work, work, work" >>hello
-$ git commit -m 'Some work.' -i hello
+$ git commit -m "Some work." -i hello
 ------------------------------------------------
 
 Here, we just added another line to `hello`, and we used a shorthand for
@@ -853,7 +853,7 @@ hasn't happened in the `master` branch at all. Then do
 ------------
 $ echo "Play, play, play" >>hello
 $ echo "Lots of fun" >>example
-$ git commit -m 'Some fun.' -i hello example
+$ git commit -m "Some fun." -i hello example
 ------------
 
 since the master branch is obviously in a much better mood.
@@ -1607,8 +1607,8 @@ in both of them.  You could merge in 'diff-fix' first and then
 'commit-fix' next, like this:
 
 ------------
-$ git merge -m 'Merge fix in diff-fix' diff-fix
-$ git merge -m 'Merge fix in commit-fix' commit-fix
+$ git merge -m "Merge fix in diff-fix" diff-fix
+$ git merge -m "Merge fix in commit-fix" commit-fix
 ------------
 
 Which would result in:
diff --git a/Documentation/everyday.txt b/Documentation/everyday.txt
index 08c61b1..ce7c170 100644
--- a/Documentation/everyday.txt
+++ b/Documentation/everyday.txt
@@ -109,7 +109,7 @@ $ tar zxf frotz.tar.gz
 $ cd frotz
 $ git-init
 $ git add . <1>
-$ git commit -m 'import of frotz source tree.'
+$ git commit -m "import of frotz source tree."
 $ git tag v2.43 <2>
 ------------
 +
@@ -300,7 +300,7 @@ $ git merge topic/one topic/two && git merge hold/linus <8>
 $ git checkout maint
 $ git cherry-pick master~4 <9>
 $ compile/test
-$ git tag -s -m 'GIT 0.99.9x' v0.99.9x <10>
+$ git tag -s -m "GIT 0.99.9x" v0.99.9x <10>
 $ git fetch ko && git show-branch master maint 'tags/ko-*' <11>
 $ git push ko <12>
 $ git push ko v0.99.9x <13>
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index 15e3aca..87afa6f 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -157,7 +157,7 @@ need to get to the other branch for a quick bugfix.
 ------------
 $ git checkout feature ;# you were working in "feature" branch and
 $ work work work       ;# got interrupted
-$ git commit -a -m 'snapshot WIP'                 <1>
+$ git commit -a -m "snapshot WIP"                 <1>
 $ git checkout master
 $ fix fix fix
 $ git commit ;# commit with real log
-- 
1.5.3.4

^ permalink raw reply related	[relevance 13%]

* Re: When a merge turns into a conflict
  @ 2007-12-06  5:51  2% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2007-12-06  5:51 UTC (permalink / raw)
  To: Anand Kumria; +Cc: git

Anand Kumria <wildfire@progsoc.org> writes:

> However when my colleague came to merge my patches in; git complained 
> that the file had conflict because:
>
> 	a. it found the ========= AsciiDoc header line

Perhaps .git/hooks/pre-commit hook is enabled for the person who needed
to merge, fix conflicts and make a commit.

We ship the hook _disabled_ by default, but that hook inspects the
change (relative to the HEAD, which means "difference this merge brings
in relative to the state before I started the merge") and complains if
it finds lines that:

 * have trailing whitespaces,

 * have a SP immediately before HT in the indentation, or

 * matches 7 or more <, >, or = at the beginning (i.e. <<<<<<<, =======,
   or >>>>>>>, typically are conflict markers).

And the last heuristics does trigger on an AsciiDoc text.

The easiest (and standard) workaround in such a case is, after
inspecting the change yourself to make sure you are bitten by false
positive, to commit with --no-verify option:

	git commit --no-verify

This bypasses the pre-commit hook.

^ permalink raw reply	[relevance 2%]

* Re: performance problem: "git commit filename"
  @ 2008-01-13 11:09  2%         ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2008-01-13 11:09 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Git Mailing List, Kristian H?gsberg

Junio C Hamano <gitster@pobox.com> writes:

> The fact that we write out a temporary index and then rebuild
> the real index means CE_UPTODATE flag we populate in the
> temporary index is lost and we still need to lstat(2) while
> building the real index, which is a bit unfortunate.  I suspect
> that we can use the one-way merge to reset the index when
> building the real index after we are done building the temporary
> index, instead of discarding the in-core temporary index and
> re-reading the real index.

This comment is completely bogus.  With your earlier one-way
merge fix, as the way CE_UPTODATE patch was written we preserve
in-core CE_UPTODATE bit across write_index(), the code already
should be taking advantage of an earlier lstat(2).

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (topics)
  @ 2008-07-06 10:04  2%                                         ` Junio C Hamano
  2008-07-08  2:46  2%                                           ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2008-07-06 10:04 UTC (permalink / raw)
  To: git

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 applied to the maintenance series have "maint-" in their
names.

It already is beginning to become clear what 1.6.0 will look like.  What's
already in 'next' all are well intentioned (I do not guarantee they are
already bug-free --- that is what cooking them in 'next' is for) and are
good set of feature enhancements.  Bigger changes will be:

 * Port for MinGW.

 * With the default Makefile settings, most of the programs will be
   installed outside your $PATH, except for "git", "gitk", "git-gui" and
   some server side programs that need to be accessible for technical
   reasons.  Invoking a git subcommand as "git-xyzzy" from the command
   line has been deprecated since early 2006 (and officially announced in
   1.5.4 release notes); use of them from your scripts after adding
   output from "git --exec-path" to the $PATH will still be supported in
   1.6.0, but users are again strongly encouraged to adjust their
   scripts to use "git xyzzy" form, as we will stop installing
   "git-xyzzy" hardlinks for built-in commands in later releases.

 * git-merge will be rewritten in C.

 * default pack and idx versions will be updated as scheduled for some
   time ago.

 * GIT_CONFIG, which was only documented as affecting "git config", but
   actually affected all git commands, now only affects "git config".
   GIT_LOCAL_CONFIG, also only documented as affecting "git config" and
   not different from GIT_CONFIG in a useful way, is removed.

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

* js/maint-daemon-syslog (Thu Jul 3 16:27:24 2008 +0100) 1 commit
 - [PARKED improvement suggested not rolled in] git daemon: avoid
   calling syslog() from a signal handler

This will eventually appear in 'maint'; currently parked on 'pu', though.

* jc/report-tracking (Sun Jul 6 02:54:56 2008 -0700) 5 commits
 - branch -r -v: do not spit out garbage
 + stat_tracking_info(): clear object flags used during counting
 + git-branch -v: show the remote tracking statistics
 + git-status: show the remote tracking statistics
 + Refactor "tracking statistics" code used by "git checkout"

Makes the "your branch is ahead of the tracked one by N commits" logic and
messages available to other commands; status and branch are updated.

* sg/stash-k-i (Fri Jun 27 16:37:15 2008 +0200) 1 commit
 - stash: introduce 'stash save --keep-index' option

One weakness of our "partial commit" workflow support used to be that the
user can incrementally build what is to be committed in the index but that
state cannot be tested as a whole in the working tree.  This allows you to
temporarily stash the remaining changes in the working tree so that the
index state before running "stash save --keep-index" can be seen in the
working tree to be tested and then committed.  A recommended workflow to
use after that commit is made needs to be documented (and support needs to
be added if necessary).

* tr/add-i-e (Thu Jul 3 00:00:00 2008 +0200) 3 commits
 + git-add--interactive: manual hunk editing mode
 + git-add--interactive: remove hunk coalescing
 + git-add--interactive: replace hunk recounting with apply --recount

Adds 'e/dit' action to interactive add command.

* am/stash-branch (Thu Jul 3 11:46:05 2008 +0530) 1 commit
 + Implement "git stash branch <newbranch> <stash>"

Creates a new branch out of the stashed state, after returning from the
interrupt that forced you to create the stash in the first place.

* jc/grafts (Wed Jul 2 17:14:12 2008 -0700) 1 commit
 - Ignore graft during object transfer [broken wrt shallow clones]

Cloning or fetching from a repository from grafts did not send objects
that are hidden by grafts, but the commits in the resulting repository do
need these to pass fsck.  This fixes object transfer to ignore grafts.

Another fix is needed to git-prune so that it ignores grafts but treats
commits that are mentioned in grafts as reachable.

* jk/pager-config (Thu Jul 3 07:46:57 2008 -0400) 1 commit
 - Allow per-command pager config

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

* js/import-zip (Mon Jun 30 19:50:44 2008 +0100) 1 commit
 + Add another fast-import example, this time for .zip files

* js/apply-root (Wed Jul 2 15:28:22 2008 -0700) 2 commits
 + apply --root: thinkofix.
 + Teach "git apply" to prepend a prefix with "--root=<root>"

* db/no-git-config (Mon Jun 30 03:37:47 2008 -0400) 1 commit
 + Only use GIT_CONFIG in "git config", not other programs

* jc/reflog-expire (Sat Jun 28 22:24:49 2008 -0700) 2 commits
 + Make default expiration period of reflog used for stash infinite
 + Per-ref reflog expiry configuration

As 1.6.0 will be a good time to make backward incompatible changes, the
tip commit makes the default expiry period of stash 'never', unless you
configure them to expire explicitly using gc.refs/stash.* variables.
Needs consensus, but I am guessing that enough people would want stash
that does not expire.

* dr/ceiling (Mon May 19 23:49:34 2008 -0700) 4 commits
 + Eliminate an unnecessary chdir("..")
 + Add support for GIT_CEILING_DIRECTORIES
 + Fold test-absolute-path into test-path-utils
 + Implement normalize_absolute_path

This still feels "because we can", not "because we need to", but it came
from somebody who had the need to, and I do not think it hurts people
without the environment variable set.

* jc/rerere (Sun Jun 22 02:04:31 2008 -0700) 5 commits
 + rerere.autoupdate
 + t4200: fix rerere test
 + rerere: remove dubious "tail_optimization"
 + git-rerere: detect unparsable conflicts
 + rerere: rerere_created_at() and has_resolution() abstraction

A new configuration will allow paths that have been resolved cleanly by
rerere to be updated in the index automatically.

To me, this is "because we can", but was something requested by Ingo, so
presumably some people may feel it useful in their workflow.

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

* mv/merge-in-c (Tue Jul 1 04:37:50 2008 +0200) 15 commits
 - [REJECT -- over-abuse of path-list] Build in merge
 + Fix t7601-merge-pull-config.sh on AIX
 + git-commit-tree: make it usable from other builtins
 + Add new test case to ensure git-merge prepends the custom merge
   message
 + Add new test case to ensure git-merge reduces octopus parents when
   possible
 + Introduce reduce_heads()
 + Introduce get_merge_bases_many()
 + Add new test to ensure git-merge handles more than 25 refs.
 + Introduce get_octopus_merge_bases() in commit.c
 + git-fmt-merge-msg: make it usable from other builtins
 + Move read_cache_unmerged() to read-cache.c
 + Add new test to ensure git-merge handles pull.twohead and
   pull.octopus
 + Move parse-options's skip_prefix() to git-compat-util.h
 + Move commit_list_count() to commit.c
 + Move split_cmdline() to alias.c

The last one is still not quite there, I am afraid.

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

* j6t/mingw (Sat Nov 17 20:48:14 2007 +0100) 38 commits
 + compat/pread.c: Add a forward declaration to fix a warning
 + Windows: Fix ntohl() related warnings about printf formatting
 + Windows: TMP and TEMP environment variables specify a temporary
   directory.
 + Windows: Make 'git help -a' work.
 + Windows: Work around an oddity when a pipe with no reader is
   written to.
 + Windows: Make the pager work.
 + When installing, be prepared that template_dir may be relative.
 + Windows: Use a relative default template_dir and ETC_GITCONFIG
 + Windows: Compute the fallback for exec_path from the program
   invocation.
 + Turn builtin_exec_path into a function.
 + Windows: Use a customized struct stat that also has the st_blocks
   member.
 + Windows: Add a custom implementation for utime().
 + Windows: Add a new lstat and fstat implementation based on Win32
   API.
 + Windows: Implement a custom spawnve().
 + Windows: Implement wrappers for gethostbyname(), socket(), and
   connect().
 + Windows: Work around incompatible sort and find.
 + Windows: Implement asynchronous functions as threads.
 + Windows: Disambiguate DOS style paths from SSH URLs.
 + Windows: A rudimentary poll() emulation.
 + Windows: Implement start_command().
 + Windows: A pipe() replacement whose ends are not inherited to
   children.
 + Windows: Wrap execve so that shell scripts can be invoked.
 + Windows: Implement setitimer() and sigaction().
 + Windows: Fix PRIuMAX definition.
 + Windows: Implement gettimeofday().
 + Make my_mktime() public and rename it to tm_to_time_t()
 + Windows: Work around misbehaved rename().
 + Windows: always chmod(, 0666) before unlink().
 + Windows: A minimal implemention of getpwuid().
 + Windows: Implement a wrapper of the open() function.
 + Windows: Strip ".exe" from the program name.
 + Windows: Handle absolute paths in
   safe_create_leading_directories().
 + Windows: Treat Windows style path names.
 + setup.c: Prepare for Windows directory separators.
 + Windows: Use the Windows style PATH separator ';'.
 + Add target architecture MinGW.
 + Compile some programs only conditionally.
 + Add compat/regex.[ch] and compat/fnmatch.[ch].

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

* 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 (Thu Jun 26 16:43:34 2008 -0700) 2 commits
 + Revert "Make clients ask for "git program" over ssh and local
   transport"
 + 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.

----------------------------------------------------------------
[Stalled/Needs more work]

* ph/parseopt-step-blame (Tue Jun 24 11:12:12 2008 +0200) 7 commits
 - Migrate git-blame to parse-option partially.
 + parse-opt: add PARSE_OPT_KEEP_ARGV0 parser option.
 + parse-opt: fake short strings for callers to believe in.
 + parse-opt: do not print errors on unknown options, return -2
   intead.
 + parse-opt: create parse_options_step.
 + parse-opt: Export a non NORETURN usage dumper.
 + parse-opt: have parse_options_{start,end}.

I recall Pierre said something about cleaning up the last one when he
finds time, but other than that vague recollection, I lost track of this
series.  I am tempted to fork a few topics off of the penúltimo one to
convert a few more commands as examples and merge the result to 'next'.

* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 7 commits
 - blame: show "previous" information in --porcelain/--incremental
   format
 - git-blame: refactor code to emit "porcelain format" output
 + git-blame --reverse
 + builtin-blame.c: allow more than 16 parents
 + builtin-blame.c: move prepare_final() into a separate function.
 + rev-list --children
 + revision traversal: --children option

The blame that finds where each line in the original lines moved to.  This
may help a GSoC project that wants to gather statistical overview of the
history.  The final presentation may need tweaking (see the log message of
the commit ""git-blame --reverse" on the series).

The tip two commits are for peeling to see what's behind the blamed
commit, which we should be able to separate out into an independent topic
from the rest.

* jc/merge-theirs (Mon Jun 30 22:18:57 2008 -0700) 5 commits
 + Make "subtree" part more orthogonal to the rest of merge-
   recursive.
 + Teach git-pull to pass -X<option> to git-merge
 + Teach git-merge to pass -X<option> to the backend strategy module
 + git-merge-recursive-{ours,theirs}
 + git-merge-file --ours, --theirs

Punting a merge by discarding your own work in conflicting parts but still
salvaging the parts that are cleanly automerged.  It is likely that this
will result in nonsense mishmash, but somehow often people want this, so
here they are.  The interface to the backends is updated so that you can
say "git merge -Xours -Xsubtree=foo/bar/baz -s recursive other" now.

The -X<option> part may change, Dscho mentions that a single-letter -X
that take stuck option is against syntax rules, and I think he's right.

This is more "because we can", not "because we need to".

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (topics)
  2008-07-06 10:04  2%                                         ` Junio C Hamano
@ 2008-07-08  2:46  2%                                           ` Junio C Hamano
  2008-07-10  2:32  2%                                             ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2008-07-08  2:46 UTC (permalink / raw)
  To: git

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 applied to the maintenance series have "maint-" in their
names.

It already is beginning to become clear what 1.6.0 will look like.  What's
already in 'next' all are well intentioned (I do not guarantee they are
already bug-free --- that is what cooking them in 'next' is for) and are
good set of feature enhancements.  Bigger changes will be:

 * Port for MinGW.

 * With the default Makefile settings, most of the programs will be
   installed outside your $PATH, except for "git", "gitk", "git-gui" and
   some server side programs that need to be accessible for technical
   reasons.  Invoking a git subcommand as "git-xyzzy" from the command
   line has been deprecated since early 2006 (and officially announced in
   1.5.4 release notes); use of them from your scripts after adding
   output from "git --exec-path" to the $PATH will still be supported in
   1.6.0, but users are again strongly encouraged to adjust their
   scripts to use "git xyzzy" form, as we will stop installing
   "git-xyzzy" hardlinks for built-in commands in later releases.

 * git-merge will be rewritten in C.

 * default pack and idx versions will be updated as scheduled for some
   time ago.

 * GIT_CONFIG, which was only documented as affecting "git config", but
   actually affected all git commands, now only affects "git config".
   GIT_LOCAL_CONFIG, also only documented as affecting "git config" and
   not different from GIT_CONFIG in a useful way, is removed.

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

* jc/rebase-orig-head (Mon Jul 7 00:16:38 2008 -0700) 1 commit
 + Teach "am" and "rebase" to mark the original position with
   ORIG_HEAD

* sb/sequencer (Tue Jul 1 04:38:34 2008 +0200) 4 commits
 . Migrate git-am to use git-sequencer
 . Add git-sequencer test suite (t3350)
 . Add git-sequencer prototype documentation
 . Add git-sequencer shell prototype

* js/pick-root (Fri Jul 4 16:19:52 2008 +0100) 1 commit
 + Allow cherry-picking root commits

* ab/bundle (Sat Jul 5 17:26:40 2008 -0400) 1 commit
 + Teach git-bundle to read revision arguments from stdin like git-
   rev-list.

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

* js/apply-root (Sun Jul 6 18:36:01 2008 -0700) 3 commits
 + git-apply --directory: make --root more similar to GNU diff
 + apply --root: thinkofix.
 + Teach "git apply" to prepend a prefix with "--root=<root>"

* jc/reflog-expire (Sat Jun 28 22:24:49 2008 -0700) 2 commits
 + Make default expiration period of reflog used for stash infinite
 + Per-ref reflog expiry configuration

As 1.6.0 will be a good time to make backward incompatible changes, the
tip commit makes the default expiry period of stash 'never', unless you
configure them to expire explicitly using gc.refs/stash.* variables.
Needs consensus, but I am guessing that enough people would want stash
that does not expire.

* jk/pager-config (Thu Jul 3 07:46:57 2008 -0400) 1 commit
 + Allow per-command pager config

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

* sg/stash-k-i (Fri Jun 27 16:37:15 2008 +0200) 1 commit
 + stash: introduce 'stash save --keep-index' option

One weakness of our "partial commit" workflow support used to be that the
user can incrementally build what is to be committed in the index but that
state cannot be tested as a whole in the working tree.  This allows you to
temporarily stash the remaining changes in the working tree so that the
index state before running "stash save --keep-index" can be seen in the
working tree to be tested and then committed.

* am/stash-branch (Mon Jul 7 02:50:10 2008 +0530) 2 commits
 + Add a test for "git stash branch"
 + Implement "git stash branch <newbranch> <stash>"

Creates a new branch out of the stashed state, after returning from the
interrupt that forced you to create the stash in the first place.

* tr/add-i-e (Thu Jul 3 00:00:00 2008 +0200) 3 commits
 + git-add--interactive: manual hunk editing mode
 + git-add--interactive: remove hunk coalescing
 + git-add--interactive: replace hunk recounting with apply --recount

Adds 'e/dit' action to interactive add command.

* jc/report-tracking (Sun Jul 6 02:54:56 2008 -0700) 5 commits
 + branch -r -v: do not spit out garbage
 + stat_tracking_info(): clear object flags used during counting
 + git-branch -v: show the remote tracking statistics
 + git-status: show the remote tracking statistics
 + Refactor "tracking statistics" code used by "git checkout"

Makes the "your branch is ahead of the tracked one by N commits" logic and
messages available to other commands; status and branch are updated.

* jc/merge-theirs (Mon Jun 30 22:18:57 2008 -0700) 5 commits
 + Make "subtree" part more orthogonal to the rest of merge-
   recursive.
 + Teach git-pull to pass -X<option> to git-merge
 + Teach git-merge to pass -X<option> to the backend strategy module
 + git-merge-recursive-{ours,theirs}
 + git-merge-file --ours, --theirs

Punting a merge by discarding your own work in conflicting parts but still
salvaging the parts that are cleanly automerged.  It is likely that this
will result in nonsense mishmash, but somehow often people want this, so
here they are.  The interface to the backends is updated so that you can
say "git merge -Xours -Xsubtree=foo/bar/baz -s recursive other" now.

The -X<option> part may change, Dscho mentions that a single-letter -X
that take stuck option is against syntax rules, and I think he's right.

This is more "because we can", not "because we need to".

* mv/merge-in-c (Mon Jul 7 19:24:20 2008 +0200) 15 commits
 - Build in merge
 + Fix t7601-merge-pull-config.sh on AIX
 + git-commit-tree: make it usable from other builtins
 + Add new test case to ensure git-merge prepends the custom merge
   message
 + Add new test case to ensure git-merge reduces octopus parents when
   possible
 + Introduce reduce_heads()
 + Introduce get_merge_bases_many()
 + Add new test to ensure git-merge handles more than 25 refs.
 + Introduce get_octopus_merge_bases() in commit.c
 + git-fmt-merge-msg: make it usable from other builtins
 + Move read_cache_unmerged() to read-cache.c
 + Add new test to ensure git-merge handles pull.twohead and
   pull.octopus
 + Move parse-options's skip_prefix() to git-compat-util.h
 + Move commit_list_count() to commit.c
 + Move split_cmdline() to alias.c

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

* js/import-zip (Mon Jun 30 19:50:44 2008 +0100) 1 commit
 + Add another fast-import example, this time for .zip files

* db/no-git-config (Mon Jun 30 03:37:47 2008 -0400) 1 commit
 + Only use GIT_CONFIG in "git config", not other programs

* dr/ceiling (Mon May 19 23:49:34 2008 -0700) 4 commits
 + Eliminate an unnecessary chdir("..")
 + Add support for GIT_CEILING_DIRECTORIES
 + Fold test-absolute-path into test-path-utils
 + Implement normalize_absolute_path

* jc/rerere (Sun Jun 22 02:04:31 2008 -0700) 5 commits
 + rerere.autoupdate
 + t4200: fix rerere test
 + rerere: remove dubious "tail_optimization"
 + git-rerere: detect unparsable conflicts
 + rerere: rerere_created_at() and has_resolution() abstraction

A new configuration will allow paths that have been resolved cleanly by
rerere to be updated in the index automatically.

* js/maint-daemon-syslog (Thu Jul 3 16:27:24 2008 +0100) 1 commit
 + git daemon: avoid calling syslog() from a signal handler

Meant for 'maint' as well.

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

* 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 (Thu Jun 26 16:43:34 2008 -0700) 2 commits
 + Revert "Make clients ask for "git program" over ssh and local
   transport"
 + 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.

----------------------------------------------------------------
[Stalled/Needs more work]

* jc/grafts (Wed Jul 2 17:14:12 2008 -0700) 1 commit
 - [BROKEN wrt shallow clones] Ignore graft during object transfer

Cloning or fetching from a repository from grafts did not send objects
that are hidden by grafts, but the commits in the resulting repository do
need these to pass fsck.  This fixes object transfer to ignore grafts.

Another fix is needed to git-prune so that it ignores grafts but treats
commits that are mentioned in grafts as reachable.

* ph/parseopt-step-blame (Tue Jun 24 11:12:12 2008 +0200) 7 commits
 - Migrate git-blame to parse-option partially.
 + parse-opt: add PARSE_OPT_KEEP_ARGV0 parser option.
 + parse-opt: fake short strings for callers to believe in.
 + parse-opt: do not print errors on unknown options, return -2
   intead.
 + parse-opt: create parse_options_step.
 + parse-opt: Export a non NORETURN usage dumper.
 + parse-opt: have parse_options_{start,end}.

I recall Pierre said something about cleaning up the last one when he
finds time, but other than that vague recollection, I lost track of this
series.  I am tempted to fork a few topics off of the penúltimo one to
convert a few more commands as examples and merge the result to 'next'.

* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 7 commits
 - blame: show "previous" information in --porcelain/--incremental
   format
 - git-blame: refactor code to emit "porcelain format" output
 + git-blame --reverse
 + builtin-blame.c: allow more than 16 parents
 + builtin-blame.c: move prepare_final() into a separate function.
 + rev-list --children
 + revision traversal: --children option

The blame that finds where each line in the original lines moved to.  This
may help a GSoC project that wants to gather statistical overview of the
history.  The final presentation may need tweaking (see the log message of
the commit ""git-blame --reverse" on the series).

The tip two commits are for peeling to see what's behind the blamed
commit, which we should be able to separate out into an independent topic
from the rest.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (topics)
  2008-07-08  2:46  2%                                           ` Junio C Hamano
@ 2008-07-10  2:32  2%                                             ` Junio C Hamano
  2008-07-14  5:11  2%                                               ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2008-07-10  2:32 UTC (permalink / raw)
  To: git

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 applied to the maintenance series have "maint-" in their
names.

It already is beginning to become clear what 1.6.0 will look like.  What's
already in 'next' all are well intentioned (I do not guarantee they are
already bug-free --- that is what cooking them in 'next' is for) and are
good set of feature enhancements.  Bigger changes will be:

 * Port for MinGW.

 * With the default Makefile settings, most of the programs will be
   installed outside your $PATH, except for "git", "gitk", "git-gui" and
   some server side programs that need to be accessible for technical
   reasons.  Invoking a git subcommand as "git-xyzzy" from the command
   line has been deprecated since early 2006 (and officially announced in
   1.5.4 release notes); use of them from your scripts after adding
   output from "git --exec-path" to the $PATH will still be supported in
   1.6.0, but users are again strongly encouraged to adjust their
   scripts to use "git xyzzy" form, as we will stop installing
   "git-xyzzy" hardlinks for built-in commands in later releases.

 * git-merge will be rewritten in C.

 * default pack and idx versions will be updated as scheduled for some
   time ago.

 * GIT_CONFIG, which was only documented as affecting "git config", but
   actually affected all git commands, now only affects "git config".
   GIT_LOCAL_CONFIG, also only documented as affecting "git config" and
   not different from GIT_CONFIG in a useful way, is removed.

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

* xx/merge-in-c-into-next (Wed Jul 9 13:51:46 2008 -0700) 4 commits
 + Teach git-merge -X<option> again.
 + Merge branch 'jc/merge-theirs' into xx/merge-in-c-into-next
 + builtin-merge.c: use parse_options_step() "incremental parsing"
   machinery
 + Merge branch 'ph/parseopt-step-blame' into xx/merge-in-c-into-next

I've described what this is in a separate message.

* jc/branch-merged (Tue Jul 8 17:55:47 2008 -0700) 3 commits
 + branch --merged/--no-merged: allow specifying arbitrary commit
 + branch --contains: default to HEAD
 + parse-options: add PARSE_OPT_LASTARG_DEFAULT flag

This builds on top of the parse-options enhancement series that
has been cooking in 'next' for some time.

* 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

* om/rerere-careful (Mon Jul 7 14:42:48 2008 +0200) 1 commit
 + builtin-rerere: more carefully find conflict markers

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

* js/pick-root (Fri Jul 4 16:19:52 2008 +0100) 1 commit
 + Allow cherry-picking root commits

* ab/bundle (Sat Jul 5 17:26:40 2008 -0400) 1 commit
 + Teach git-bundle to read revision arguments from stdin like git-
   rev-list.

* sg/stash-k-i (Tue Jul 8 00:40:56 2008 -0700) 2 commits
 + Documentation: tweak use case in "git stash save --keep-index"
 + stash: introduce 'stash save --keep-index' option

One weakness of our "partial commit" workflow support used to be that the
user can incrementally build what is to be committed in the index but that
state cannot be tested as a whole in the working tree.  This allows you to
temporarily stash the remaining changes in the working tree so that the
index state before running "stash save --keep-index" can be seen in the
working tree to be tested and then committed.

* am/stash-branch (Mon Jul 7 02:50:10 2008 +0530) 2 commits
 + Add a test for "git stash branch"
 + Implement "git stash branch <newbranch> <stash>"

Creates a new branch out of the stashed state, after returning from the
interrupt that forced you to create the stash in the first place.

* tr/add-i-e (Thu Jul 3 00:00:00 2008 +0200) 3 commits
 + git-add--interactive: manual hunk editing mode
 + git-add--interactive: remove hunk coalescing
 + git-add--interactive: replace hunk recounting with apply --recount

Adds 'e/dit' action to interactive add command.

* jc/report-tracking (Sun Jul 6 02:54:56 2008 -0700) 5 commits
 + branch -r -v: do not spit out garbage
 + stat_tracking_info(): clear object flags used during counting
 + git-branch -v: show the remote tracking statistics
 + git-status: show the remote tracking statistics
 + Refactor "tracking statistics" code used by "git checkout"

Makes the "your branch is ahead of the tracked one by N commits" logic and
messages available to other commands; status and branch are updated.

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

* jc/rebase-orig-head (Tue Jul 8 00:12:22 2008 -0400) 2 commits
 + Documentation: mention ORIG_HEAD in am, merge, and rebase
 + Teach "am" and "rebase" to mark the original position with
   ORIG_HEAD

* ph/parseopt-step-blame (Wed Jul 9 23:38:34 2008 +0200) 18 commits
 + revisions: refactor handle_revision_opt into parse_revision_opt.
 + git-shortlog: migrate to parse-options partially.
 + git-blame: fix lapsus
 + git-blame: migrate to incremental parse-option [2/2]
 + git-blame: migrate to incremental parse-option [1/2]
 + revisions: split handle_revision_opt() from setup_revisions()
 + Merge branch 'jc/blame' (early part) into HEAD
 + parse-opt: add PARSE_OPT_KEEP_ARGV0 parser option.
 + parse-opt: fake short strings for callers to believe in.
 + parse-opt: do not print errors on unknown options, return -2
   intead.
 + parse-opt: create parse_options_step.
 + parse-opt: Export a non NORETURN usage dumper.
 + parse-opt: have parse_options_{start,end}.
 + git-blame --reverse
 + builtin-blame.c: allow more than 16 parents
 + builtin-blame.c: move prepare_final() into a separate function.
 + rev-list --children
 + revision traversal: --children option

Became active again ;-) This probably is ready for 'master' already,
except for the last two which I only looked at the patch and have not
used heavily in production yet.

* jc/merge-theirs (Mon Jun 30 22:18:57 2008 -0700) 5 commits
 + Make "subtree" part more orthogonal to the rest of merge-
   recursive.
 + Teach git-pull to pass -X<option> to git-merge
 + Teach git-merge to pass -X<option> to the backend strategy module
 + git-merge-recursive-{ours,theirs}
 + git-merge-file --ours, --theirs

Punting a merge by discarding your own work in conflicting parts but still
salvaging the parts that are cleanly automerged.  It is likely that this
will result in nonsense mishmash, but somehow often people want this, so
here they are.  The interface to the backends is updated so that you can
say "git merge -Xours -Xsubtree=foo/bar/baz -s recursive other" now.

* mv/merge-in-c (Mon Jul 7 19:24:20 2008 +0200) 15 commits
 + Build in merge
 + Fix t7601-merge-pull-config.sh on AIX
 + git-commit-tree: make it usable from other builtins
 + Add new test case to ensure git-merge prepends the custom merge
   message
 + Add new test case to ensure git-merge reduces octopus parents when
   possible
 + Introduce reduce_heads()
 + Introduce get_merge_bases_many()
 + Add new test to ensure git-merge handles more than 25 refs.
 + Introduce get_octopus_merge_bases() in commit.c
 + git-fmt-merge-msg: make it usable from other builtins
 + Move read_cache_unmerged() to read-cache.c
 + Add new test to ensure git-merge handles pull.twohead and
   pull.octopus
 + Move parse-options's skip_prefix() to git-compat-util.h
 + Move commit_list_count() to commit.c
 + Move split_cmdline() to alias.c

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

* js/apply-root (Sun Jul 6 18:36:01 2008 -0700) 3 commits
 + git-apply --directory: make --root more similar to GNU diff
 + apply --root: thinkofix.
 + Teach "git apply" to prepend a prefix with "--root=<root>"

* jc/reflog-expire (Sat Jun 28 22:24:49 2008 -0700) 2 commits
 + Make default expiration period of reflog used for stash infinite
 + Per-ref reflog expiry configuration

As 1.6.0 will be a good time to make backward incompatible changes, the
tip commit makes the default expiry period of stash 'never', unless you
configure them to expire explicitly using gc.refs/stash.* variables.
Needs consensus, but I am guessing that enough people would want stash
that does not expire.

* jk/pager-config (Thu Jul 3 07:46:57 2008 -0400) 1 commit
 + Allow per-command pager config

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

* 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 (Thu Jun 26 16:43:34 2008 -0700) 2 commits
 + Revert "Make clients ask for "git program" over ssh and local
   transport"
 + 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.

----------------------------------------------------------------
[Stalled/Needs more work]

* sb/sequencer (Tue Jul 1 04:38:34 2008 +0200) 4 commits
 . Migrate git-am to use git-sequencer
 . Add git-sequencer test suite (t3350)
 . Add git-sequencer prototype documentation
 . Add git-sequencer shell prototype

* jc/grafts (Wed Jul 2 17:14:12 2008 -0700) 1 commit
 - [BROKEN wrt shallow clones] Ignore graft during object transfer

Cloning or fetching from a repository from grafts did not send objects
that are hidden by grafts, but the commits in the resulting repository do
need these to pass fsck.  This fixes object transfer to ignore grafts.

Another fix is needed to git-prune so that it ignores grafts but treats
commits that are mentioned in grafts as reachable.

* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 7 commits
 - blame: show "previous" information in --porcelain/--incremental
   format
 - git-blame: refactor code to emit "porcelain format" output
 + git-blame --reverse
 + builtin-blame.c: allow more than 16 parents
 + builtin-blame.c: move prepare_final() into a separate function.
 + rev-list --children
 + revision traversal: --children option

The blame that finds where each line in the original lines moved to.  This
may help a GSoC project that wants to gather statistical overview of the
history.  The final presentation may need tweaking (see the log message of
the commit ""git-blame --reverse" on the series).

The tip two commits are for peeling to see what's behind the blamed
commit, which we should be able to separate out into an independent topic
from the rest.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (topics)
  2008-07-10  2:32  2%                                             ` Junio C Hamano
@ 2008-07-14  5:11  2%                                               ` Junio C Hamano
  2008-07-16  3:33  2%                                                 ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2008-07-14  5:11 UTC (permalink / raw)
  To: git

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.

I think most of the important stuff is already in 'next'.  Let's start
talking about closing the merge window for 1.6.0.

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

* sb/dashless (Sun Jul 13 15:36:15 2008 +0200) 3 commits
 - Make usage strings dash-less
 - t/: Use "test_must_fail git" instead of "! git"
 - t/test-lib.sh: exit with small negagive int is ok with
   test_must_fail

* mv/dashless (Fri Jul 11 02:12:06 2008 +0200) 4 commits
 - make remove-dashes: apply to scripts and programs as well, not
   just to builtins
 - git-bisect: use dash-less form on git bisect log
 - t1007-hash-object.sh: use quotes for the test description
 - t0001-init.sh: change confusing directory name

* sp/maint-bash-completion-optim (Mon Jul 14 00:22:03 2008 +0000) 1 commit
 + bash completion: Append space after file names have been completed

Early parts are already merged to 'master' and need to be merged down to
maint as well, as this is about a "performance bug" that has been with us
almost forever.

* ag/rewrite_one (Sat Jul 12 22:00:57 2008 +0400) 1 commit
 + Fix quadratic performance in rewrite_one.

* sp/win (Fri Jul 11 18:52:42 2008 +0200) 3 commits
 + We need to check for msys as well as Windows in add--interactive.
 + Convert CR/LF to LF in tag signatures
 + Fixed text file auto-detection: treat EOF character 032 at the end
   of file as printable

* js/merge-rr (Sat Jul 12 15:56:19 2008 +0100) 2 commits
 + Move MERGE_RR from .git/rr-cache/ into .git/
 + builtin-rerere: more carefully find conflict markers

* sb/rerere-lib (Wed Jul 9 14:58:57 2008 +0200) 2 commits
 + rerere: Separate libgit and builtin functions
 + builtin-rerere: more carefully find conflict markers

* ls/mailinfo (Sun Jul 13 20:30:12 2008 +0200) 3 commits
 - git-mailinfo: use strbuf's instead of fixed buffers
 - Add some useful functions for strbuf manipulation.
 - Make some strbuf_*() struct strbuf arguments const.

* gi/cherry-cache (Sat Jul 12 20:14:51 2008 -0700) 1 commit
 - cherry: cache patch-ids to avoid repeating work

This does not seem to pass tests even on its own.

* js/maint-pretty-mailmap (Sat Jul 12 00:28:18 2008 +0100) 1 commit
 + Add pretty format %aN which gives the author name, respecting
   .mailmap

* js/more-win (Sun Jul 13 22:31:23 2008 +0200) 6 commits
 - Allow add_path() to add non-existent directories to the path
 - Allow the built-in exec path to be relative to the command
   invocation path
 - Fix relative built-in paths to be relative to the command
   invocation
 + help (Windows): Display HTML in default browser using Windows'
   shell API
 + help.c: Add support for htmldir relative to git_exec_path()
 + Move code interpreting path relative to exec-dir to new function
   system_path()

The earlier parts are obvious; Dscho seemed to have some comments on the
later ones that are in 'pu'.

* lw/gitweb (Fri Jul 11 03:11:48 2008 +0200) 3 commits
 - gitweb: use new Git::Repo API, and add optional caching
 - Add new Git::Repo API
 - gitweb: add test suite with Test::WWW::Mechanize::CGI

This does not pass t9710, at least for me X-<.

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

* jc/rebase-orig-head (Tue Jul 8 00:12:22 2008 -0400) 2 commits
 + Documentation: mention ORIG_HEAD in am, merge, and rebase
 + Teach "am" and "rebase" to mark the original position with
   ORIG_HEAD

* jc/branch-merged (Tue Jul 8 17:55:47 2008 -0700) 3 commits
 + branch --merged/--no-merged: allow specifying arbitrary commit
 + branch --contains: default to HEAD
 + parse-options: add PARSE_OPT_LASTARG_DEFAULT flag

This builds on top of the parse-options enhancement series that
has been cooking in 'next' for some time.

* om/rerere-careful (Mon Jul 7 14:42:48 2008 +0200) 1 commit
 + builtin-rerere: more carefully find conflict markers

* ls/maint-mailinfo-patch-label (Thu Jul 10 23:41:33 2008 +0200) 1 commit
 + git-mailinfo: Fix getting the subject from the in-body [PATCH]
   line

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

* xx/merge-in-c-into-next (Wed Jul 9 13:51:46 2008 -0700) 4 commits
 + Teach git-merge -X<option> again.
 + Merge branch 'jc/merge-theirs' into xx/merge-in-c-into-next
 + builtin-merge.c: use parse_options_step() "incremental parsing"
   machinery
 + Merge branch 'ph/parseopt-step-blame' into xx/merge-in-c-into-next

I've described what this is in a separate message.

* 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.
If such a patch materializes soon, that would be good, but otherwise I'll
merge this as-is to 'next'.  Such an enhancement can be done in-tree on
top of this series.

* jc/merge-theirs (Mon Jun 30 22:18:57 2008 -0700) 5 commits
 + Make "subtree" part more orthogonal to the rest of merge-
   recursive.
 + Teach git-pull to pass -X<option> to git-merge
 + Teach git-merge to pass -X<option> to the backend strategy module
 + git-merge-recursive-{ours,theirs}
 + git-merge-file --ours, --theirs

Punting a merge by discarding your own work in conflicting parts but still
salvaging the parts that are cleanly automerged.  It is likely that this
will result in nonsense mishmash, but somehow often people want this, so
here they are.  The interface to the backends is updated so that you can
say "git merge -Xours -Xsubtree=foo/bar/baz -s recursive other" now.

* mv/merge-in-c (Sun Jul 13 08:13:55 2008 +0000) 19 commits
 + reduce_heads(): thinkofix
 + Add a new test for git-merge-resolve
 + t6021: add a new test for git-merge-resolve
 + Teach merge.log to "git-merge" again
 + Build in merge
 + Fix t7601-merge-pull-config.sh on AIX
 + git-commit-tree: make it usable from other builtins
 + Add new test case to ensure git-merge prepends the custom merge
   message
 + Add new test case to ensure git-merge reduces octopus parents when
   possible
 + Introduce reduce_heads()
 + Introduce get_merge_bases_many()
 + Add new test to ensure git-merge handles more than 25 refs.
 + Introduce get_octopus_merge_bases() in commit.c
 + git-fmt-merge-msg: make it usable from other builtins
 + Move read_cache_unmerged() to read-cache.c
 + Add new test to ensure git-merge handles pull.twohead and
   pull.octopus
 + Move parse-options's skip_prefix() to git-compat-util.h
 + Move commit_list_count() to commit.c
 + Move split_cmdline() to alias.c

Sverre seems to have a yet another fixup on top of this that came late and
I haven't looked at.

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

* js/pick-root (Fri Jul 4 16:19:52 2008 +0100) 1 commit
 + Allow cherry-picking root commits

* ab/bundle (Sat Jul 5 17:26:40 2008 -0400) 1 commit
 + Teach git-bundle to read revision arguments from stdin like git-
   rev-list.

* sg/stash-k-i (Tue Jul 8 00:40:56 2008 -0700) 2 commits
 + Documentation: tweak use case in "git stash save --keep-index"
 + stash: introduce 'stash save --keep-index' option

One weakness of our "partial commit" workflow support used to be that the
user can incrementally build what is to be committed in the index but that
state cannot be tested as a whole in the working tree.  This allows you to
temporarily stash the remaining changes in the working tree so that the
index state before running "stash save --keep-index" can be seen in the
working tree to be tested and then committed.

* am/stash-branch (Mon Jul 7 02:50:10 2008 +0530) 2 commits
 + Add a test for "git stash branch"
 + Implement "git stash branch <newbranch> <stash>"

Creates a new branch out of the stashed state, after returning from the
interrupt that forced you to create the stash in the first place.

* tr/add-i-e (Thu Jul 3 00:00:00 2008 +0200) 3 commits
 + git-add--interactive: manual hunk editing mode
 + git-add--interactive: remove hunk coalescing
 + git-add--interactive: replace hunk recounting with apply --recount

Adds 'e/dit' action to interactive add command.

* jc/report-tracking (Sun Jul 6 02:54:56 2008 -0700) 5 commits
 + branch -r -v: do not spit out garbage
 + stat_tracking_info(): clear object flags used during counting
 + git-branch -v: show the remote tracking statistics
 + git-status: show the remote tracking statistics
 + Refactor "tracking statistics" code used by "git checkout"

Makes the "your branch is ahead of the tracked one by N commits" logic and
messages available to other commands; status and branch are updated.

* ph/parseopt-step-blame (Wed Jul 9 23:38:34 2008 +0200) 18 commits
 + revisions: refactor handle_revision_opt into parse_revision_opt.
 + git-shortlog: migrate to parse-options partially.
 + git-blame: fix lapsus
 + git-blame: migrate to incremental parse-option [2/2]
 + git-blame: migrate to incremental parse-option [1/2]
 + revisions: split handle_revision_opt() from setup_revisions()
 + Merge branch 'jc/blame' (early part) into HEAD
 + parse-opt: add PARSE_OPT_KEEP_ARGV0 parser option.
 + parse-opt: fake short strings for callers to believe in.
 + parse-opt: do not print errors on unknown options, return -2
   intead.
 + parse-opt: create parse_options_step.
 + parse-opt: Export a non NORETURN usage dumper.
 + parse-opt: have parse_options_{start,end}.
 + git-blame --reverse
 + builtin-blame.c: allow more than 16 parents
 + builtin-blame.c: move prepare_final() into a separate function.
 + rev-list --children
 + revision traversal: --children option

Became active again ;-) This probably is ready for 'master' already,
except for the last two which I only looked at the patch and have not
used heavily in production yet.

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

* 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 (Thu Jun 26 16:43:34 2008 -0700) 2 commits
 + Revert "Make clients ask for "git program" over ssh and local
   transport"
 + 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.

----------------------------------------------------------------
[Stalled/Needs more work]

* sb/sequencer (Tue Jul 1 04:38:34 2008 +0200) 4 commits
 . Migrate git-am to use git-sequencer
 . Add git-sequencer test suite (t3350)
 . Add git-sequencer prototype documentation
 . Add git-sequencer shell prototype

* jc/grafts (Wed Jul 2 17:14:12 2008 -0700) 1 commit
 - [BROKEN wrt shallow clones] Ignore graft during object transfer

Cloning or fetching from a repository from grafts did not send objects
that are hidden by grafts, but the commits in the resulting repository do
need these to pass fsck.  This fixes object transfer to ignore grafts.

Another fix is needed to git-prune so that it ignores grafts but treats
commits that are mentioned in grafts as reachable.

* 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

This is for peeling to see what's behind the blamed commit, which may or
may not help applications like gitweb.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (topics)
  2008-07-14  5:11  2%                                               ` Junio C Hamano
@ 2008-07-16  3:33  2%                                                 ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2008-07-16  3:33 UTC (permalink / raw)
  To: git

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.

It so happens that the topics clearly separated between the ones that are
obviously ready for 1.6.0 and the others that aren't yet as of tonight.
It seems that it is a good time to draw that line and tag -rc0 tomorrow,
after merging the remaining topics in 'next'.

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

I could apply these directly to master, but I am just playing it safe.

* sp/maint-index-pack (Tue Jul 15 04:45:34 2008 +0000) 4 commits
 + index-pack: Honor core.deltaBaseCacheLimit when resolving deltas
 + index-pack: Track the object_entry that creates each base_data
 + index-pack: Chain the struct base_data on the stack for traversal
 + index-pack: Refactor base arguments of resolve_delta into a struct

* rs/rebase-checkout-not-so-quiet (Mon Jul 14 14:05:35 2008 -0700) 1 commit
 + git-rebase: report checkout failure

* ag/blame (Wed Jul 16 02:00:58 2008 +0400) 2 commits
 + Do not try to detect move/copy for entries below threshold.
 + Avoid rescanning unchanged entries in search for copies.

This gives a drastic performance improvement to "git-blame -C -C" with
quite straightforward and obvious code change.

* rs/archive (Mon Jul 14 21:22:05 2008 +0200) 6 commits
 + archive: remove extra arguments parsing code
 + archive: unify file attribute handling
 + archive: centralize archive entry writing
 + archive: add baselen member to struct archiver_args
 + add context pointer to read_tree_recursive()
 + archive: remove args member from struct archiver

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

* sb/dashless (Sun Jul 13 15:36:15 2008 +0200) 3 commits
 + Make usage strings dash-less
 + t/: Use "test_must_fail git" instead of "! git"
 + t/test-lib.sh: exit with small negagive int is ok with
   test_must_fail

* mv/dashless (Fri Jul 11 02:12:06 2008 +0200) 4 commits
 + make remove-dashes: apply to scripts and programs as well, not
   just to builtins
 + git-bisect: use dash-less form on git bisect log
 + t1007-hash-object.sh: use quotes for the test description
 + t0001-init.sh: change confusing directory name

* ls/mailinfo (Sun Jul 13 20:30:12 2008 +0200) 3 commits
 + git-mailinfo: use strbuf's instead of fixed buffers
 + Add some useful functions for strbuf manipulation.
 + Make some strbuf_*() struct strbuf arguments const.

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

* sp/maint-bash-completion-optim (Mon Jul 14 00:22:03 2008 +0000) 1 commit
 + bash completion: Append space after file names have been completed

Early parts were already merged to 'master' and need to be merged down to
maint as well, as this is about a "performance bug" that has been with us
almost forever.

* ag/rewrite_one (Sat Jul 12 22:00:57 2008 +0400) 1 commit
 + Fix quadratic performance in rewrite_one.

* sp/win (Fri Jul 11 18:52:42 2008 +0200) 3 commits
 + We need to check for msys as well as Windows in add--interactive.
 + Convert CR/LF to LF in tag signatures
 + Fixed text file auto-detection: treat EOF character 032 at the end
   of file as printable

* js/merge-rr (Sat Jul 12 15:56:19 2008 +0100) 2 commits
 + Move MERGE_RR from .git/rr-cache/ into .git/
 + builtin-rerere: more carefully find conflict markers

* sb/rerere-lib (Wed Jul 9 14:58:57 2008 +0200) 2 commits
 + rerere: Separate libgit and builtin functions
 + builtin-rerere: more carefully find conflict markers

* js/maint-pretty-mailmap (Sat Jul 12 00:28:18 2008 +0100) 1 commit
 + Add pretty format %aN which gives the author name, respecting
   .mailmap

* js/more-win (Sun Jul 13 22:31:23 2008 +0200) 3 commits
 + help (Windows): Display HTML in default browser using Windows'
   shell API
 + help.c: Add support for htmldir relative to git_exec_path()
 + Move code interpreting path relative to exec-dir to new function
   system_path()

* jc/rebase-orig-head (Tue Jul 8 00:12:22 2008 -0400) 2 commits
 + Documentation: mention ORIG_HEAD in am, merge, and rebase
 + Teach "am" and "rebase" to mark the original position with
   ORIG_HEAD

* jc/branch-merged (Tue Jul 8 17:55:47 2008 -0700) 3 commits
 + branch --merged/--no-merged: allow specifying arbitrary commit
 + branch --contains: default to HEAD
 + parse-options: add PARSE_OPT_LASTARG_DEFAULT flag

* om/rerere-careful (Mon Jul 7 14:42:48 2008 +0200) 1 commit
 + builtin-rerere: more carefully find conflict markers

* ls/maint-mailinfo-patch-label (Thu Jul 10 23:41:33 2008 +0200) 1 commit
 + git-mailinfo: Fix getting the subject from the in-body [PATCH]
   line

* mv/merge-in-c (Mon Jul 14 00:09:41 2008 -0700) 20 commits
 + reduce_heads(): protect from duplicate input
 + reduce_heads(): thinkofix
 + Add a new test for git-merge-resolve
 + t6021: add a new test for git-merge-resolve
 + Teach merge.log to "git-merge" again
 + Build in merge
 + Fix t7601-merge-pull-config.sh on AIX
 + git-commit-tree: make it usable from other builtins
 + Add new test case to ensure git-merge prepends the custom merge
   message
 + Add new test case to ensure git-merge reduces octopus parents when
   possible
 + Introduce reduce_heads()
 + Introduce get_merge_bases_many()
 + Add new test to ensure git-merge handles more than 25 refs.
 + Introduce get_octopus_merge_bases() in commit.c
 + git-fmt-merge-msg: make it usable from other builtins
 + Move read_cache_unmerged() to read-cache.c
 + Add new test to ensure git-merge handles pull.twohead and
   pull.octopus
 + Move parse-options's skip_prefix() to git-compat-util.h
 + Move commit_list_count() to commit.c
 + Move split_cmdline() to alias.c

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

* 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.
If such a patch materializes soon, that would be good, but otherwise I'll
merge this as-is to 'next'.  Such an enhancement can be done in-tree on
top of this series.

* xx/merge-in-c-into-next (Wed Jul 9 13:51:46 2008 -0700) 4 commits
 + Teach git-merge -X<option> again.
 + Merge branch 'jc/merge-theirs' into xx/merge-in-c-into-next
 + builtin-merge.c: use parse_options_step() "incremental parsing"
   machinery
 + Merge branch 'ph/parseopt-step-blame' into xx/merge-in-c-into-next

This needs to be merged to master iff/when merge-theirs gets merged,
but I do not think this series is widely supported, so both are on hold.

* jc/merge-theirs (Mon Jun 30 22:18:57 2008 -0700) 5 commits
 + Make "subtree" part more orthogonal to the rest of merge-
   recursive.
 + Teach git-pull to pass -X<option> to git-merge
 + Teach git-merge to pass -X<option> to the backend strategy module
 + git-merge-recursive-{ours,theirs}
 + git-merge-file --ours, --theirs

Punting a merge by discarding your own work in conflicting parts but still
salvaging the parts that are cleanly automerged.  It is likely that this
will result in nonsense mishmash, but somehow often people want this, so
here they are.  The interface to the backends is updated so that you can
say "git merge -Xours -Xsubtree=foo/bar/baz -s recursive other" now.

* 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 (Thu Jun 26 16:43:34 2008 -0700) 2 commits
 + Revert "Make clients ask for "git program" over ssh and local
   transport"
 + 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.

----------------------------------------------------------------
[Stalled/Needs more work]

* gi/cherry-cache (Sat Jul 12 20:14:51 2008 -0700) 1 commit
 . cherry: cache patch-ids to avoid repeating work

* lw/gitweb (Fri Jul 11 03:11:48 2008 +0200) 3 commits
 . gitweb: use new Git::Repo API, and add optional caching
 . Add new Git::Repo API
 . gitweb: add test suite with Test::WWW::Mechanize::CGI

* sb/sequencer (Tue Jul 1 04:38:34 2008 +0200) 4 commits
 . Migrate git-am to use git-sequencer
 . Add git-sequencer test suite (t3350)
 . Add git-sequencer prototype documentation
 . Add git-sequencer shell prototype

* jc/grafts (Wed Jul 2 17:14:12 2008 -0700) 1 commit
 - [BROKEN wrt shallow clones] Ignore graft during object transfer

Cloning or fetching from a repository from grafts did not send objects
that are hidden by grafts, but the commits in the resulting repository do
need these to pass fsck.  This fixes object transfer to ignore grafts.

Another fix is needed to git-prune so that it ignores grafts but treats
commits that are mentioned in grafts as reachable.

* 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

This is for peeling to see what's behind the blamed commit, which may or
may not help applications like gitweb.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH] builtin-merge: fail properly when we are in the middle of a conflicted merge
  @ 2008-08-23 19:55  2%   ` Junio C Hamano
  2008-08-23 19:56  2%     ` [PATCH 1/2] merge: fix numerus bugs around "trivial merge" area Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2008-08-23 19:55 UTC (permalink / raw)
  To: Miklos Vajna; +Cc: Paolo Bonzini, Jeff King, git

We've exchanged quite a few "here is a better one", "oops, that is not
enough", which is confusing to bystanders.  Here is my proposed final
series, meant to be applied to 'maint'.

  [1/2] merge: fix numerus bugs around "trivial merge" area
  [2/2] unpack_trees(): protect the handcrafted in-core index from read_cache()

^ permalink raw reply	[relevance 2%]

* [PATCH 1/2] merge: fix numerus bugs around "trivial merge" area
  2008-08-23 19:55  2%   ` Junio C Hamano
@ 2008-08-23 19:56  2%     ` Junio C Hamano
  2008-08-24  1:58  3%       ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2008-08-23 19:56 UTC (permalink / raw)
  To: Miklos Vajna; +Cc: Paolo Bonzini, Jeff King, git

The "trivial merge" codepath wanted to optimize itself by making an
internal call to the read-tree machinery, but it did not read the index
before doing so, and the codepath was never exercised.  Incidentally, this
failure to read the index upfront meant that the safety to refuse doing
anything when the index is unmerged did not kick in, either.

These two problem are fixed by using read_cache_unmerged() that does read
the index before checking if it is unmerged at the beginning of
cmd_merge().

The primary logic of the merge, however, had an assumption that the
process never read the index in-core, and write_cache_as_tree() call it
makes from write_tree_trivial() will always read from the on-disk index
the strategies created and write it out as a tree.  This assumption is now
broken by the above fix.  It now calls discard_cache() before calling
write_tree_trivial() when it wants to write the on-disk index as a tree to
fix this issue.

When multiple strategies are tried, their results are evaluated by reading
the resulting index and inspecting it.  The codepath needs to make a call
to read_cache() for each successful strategy, and for that to work, they
need to discard_cache() the one from the previous round.

Also the "trivial merge" forgot that the current commit is one of the
parents of the resulting commit.

This still has breakage in the way it writes out the resulting tree out of
the trivial merge codepath, which is a topic of the next patch.  One test
in t7605-merge-resolve.sh exposes this breakage.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin-merge.c            |   16 +++++++++-------
 t/t3030-merge-recursive.sh |   11 +++++++++++
 t/t7600-merge.sh           |    9 +++++++++
 t/t7605-merge-resolve.sh   |    6 ++++--
 4 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/builtin-merge.c b/builtin-merge.c
index a201c66..b280444 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c
@@ -564,8 +564,6 @@ static int checkout_fast_forward(unsigned char *head, unsigned char *remote)
 	struct dir_struct dir;
 	struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file));
 
-	if (read_cache_unmerged())
-		die("you need to resolve your current index first");
 	refresh_cache(REFRESH_QUIET);
 
 	fd = hold_locked_index(lock_file, 1);
@@ -651,13 +649,15 @@ static void add_strategies(const char *string, unsigned attr)
 static int merge_trivial(void)
 {
 	unsigned char result_tree[20], result_commit[20];
-	struct commit_list parent;
+	struct commit_list *parent = xmalloc(sizeof(struct commit_list *));
 
 	write_tree_trivial(result_tree);
 	printf("Wonderful.\n");
-	parent.item = remoteheads->item;
-	parent.next = NULL;
-	commit_tree(merge_msg.buf, result_tree, &parent, result_commit);
+	parent->item = lookup_commit(head);
+	parent->next = xmalloc(sizeof(struct commit_list *));
+	parent->next->item = remoteheads->item;
+	parent->next->next = NULL;
+	commit_tree(merge_msg.buf, result_tree, parent, result_commit);
 	finish(result_commit, "In-index merge");
 	drop_save();
 	return 0;
@@ -743,6 +743,7 @@ static int evaluate_result(void)
 	int cnt = 0;
 	struct rev_info rev;
 
+	discard_cache();
 	if (read_cache() < 0)
 		die("failed to read the cache");
 
@@ -776,7 +777,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 	struct commit_list **remotes = &remoteheads;
 
 	setup_work_tree();
-	if (unmerged_cache())
+	if (read_cache_unmerged())
 		die("You are in the middle of a conflicted merge.");
 
 	/*
@@ -1073,6 +1074,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 		}
 
 		/* Automerge succeeded. */
+		discard_cache();
 		write_tree_trivial(result_tree);
 		automerge_was_ok = 1;
 		break;
diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh
index aff3603..f288015 100755
--- a/t/t3030-merge-recursive.sh
+++ b/t/t3030-merge-recursive.sh
@@ -269,6 +269,17 @@ test_expect_success 'merge-recursive result' '
 
 '
 
+test_expect_success 'fail if the index has unresolved entries' '
+
+	rm -fr [abcd] &&
+	git checkout -f "$c1" &&
+
+	test_must_fail git merge "$c5" &&
+	test_must_fail git merge "$c5" 2> out &&
+	grep "You are in the middle of a conflicted merge" out
+
+'
+
 test_expect_success 'merge-recursive remove conflict' '
 
 	rm -fr [abcd] &&
diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh
index fee8fb7..dbc90bc 100755
--- a/t/t7600-merge.sh
+++ b/t/t7600-merge.sh
@@ -498,4 +498,13 @@ test_expect_success 'merge fast-forward in a dirty tree' '
 
 test_debug 'gitk --all'
 
+test_expect_success 'in-index merge' '
+	git reset --hard c0 &&
+	git merge --no-ff -s resolve c1 > out &&
+	grep "Wonderful." out &&
+	verify_parents $c0 $c1
+'
+
+test_debug 'gitk --all'
+
 test_done
diff --git a/t/t7605-merge-resolve.sh b/t/t7605-merge-resolve.sh
index ee21a10..5c53608 100755
--- a/t/t7605-merge-resolve.sh
+++ b/t/t7605-merge-resolve.sh
@@ -27,7 +27,7 @@ test_expect_success 'setup' '
 	git tag c3
 '
 
-test_expect_success 'merge c1 to c2' '
+test_expect_failure 'merge c1 to c2' '
 	git reset --hard c1 &&
 	git merge -s resolve c2 &&
 	test "$(git rev-parse c1)" != "$(git rev-parse HEAD)" &&
@@ -36,7 +36,9 @@ test_expect_success 'merge c1 to c2' '
 	git diff --exit-code &&
 	test -f c0.c &&
 	test -f c1.c &&
-	test -f c2.c
+	test -f c2.c &&
+	test 3 = $(git ls-tree -r HEAD | wc -l) &&
+	test 3 = $(git ls-files | wc -l)
 '
 
 test_expect_success 'merge c2 to c3 (fails)' '
-- 
1.6.0.51.g078ae

^ permalink raw reply related	[relevance 2%]

* Re: [PATCH 1/2] merge: fix numerus bugs around "trivial merge" area
  2008-08-23 19:56  2%     ` [PATCH 1/2] merge: fix numerus bugs around "trivial merge" area Junio C Hamano
@ 2008-08-24  1:58  3%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2008-08-24  1:58 UTC (permalink / raw)
  To: Miklos Vajna; +Cc: Paolo Bonzini, Jeff King, git

Junio C Hamano <gitster@pobox.com> writes:

> The primary logic of the merge, however, had an assumption that the
> process never read the index in-core, and write_cache_as_tree() call it
> makes from write_tree_trivial() will always read from the on-disk index
> the strategies created and write it out as a tree.  This assumption is now
> broken by the above fix.  It now calls discard_cache() before calling
> write_tree_trivial() when it wants to write the on-disk index as a tree to
> fix this issue.

By the way, in the medium term, if we are serious about making an internal
call to merge_recursive() from cmd_merge(), I think we may be better off
making it the responsibility for try_merge_strategy() to leave an
committable state in the in-core index (aka "the_index") when they return
with 0 (success) status.  After calling external ones via the run_command
interface, it should do a read_cache() (after calling discard_cache() if
needed); if it calls merge_recursive(), hopefully you already have the
committable state in the in-core index.

That way, when automerge succeeds, write_tree_trivial() can write that
in-core index out and create the tree object to be committed. The
callchain to use merge_recursive() can avoid having to write to the
on-disk index, read it again and write out the tree from it.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Aug 2008, #07; Sat, 23)
@ 2008-08-24  3:38  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2008-08-24  3:38 UTC (permalink / raw)
  To: git

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.

Here is a list of issues/topics we saw on the mailing list but haven't
resulted in anything queuable in 'pu' yet.  They need further work by
interested parties:

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

 * "git commit --author=nickname" expanding nickname from somewhere

   Michael J Gruber ($gmane/93274)

 * Handling (possibly $HOME-) relative paths in config files

   Karl Chen ($gmane/93250)

 * "submodule sync"

   David Aguilar ($gmane/93265)

 * "rev-list --bisect --first-parent"

   Avery Pennarun, me ($gmane/93420)

 * "apply --include"

   Joe Perches ($gmane/93505)

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

* bd/blame (Thu Aug 21 18:22:01 2008 -0500) 5 commits
 . Use xdiff caching to improve git blame performance
 . Allow xdiff machinery to cache hash results for a file
 . Always initialize xpparam_t to 0
 . Bypass textual patch generation and parsing in git blame
 . Allow alternate "low-level" emit function from xdl_diff

Réne had a good comments on how the callback is structured.

* jc/maint-name-hash-clear (Sat Aug 23 13:05:10 2008 -0700) 1 commit
 - discard_cache: reset lazy name_hash bit

I spotted this by accident while working on something unrelated.

When a program calls discard_cache() to read the index again, we do not
properly re-initialize the name_hash structure that is used by the case
insensitivitly logic.  This _might_ improve issues people may be having on
case insensitive filesystems.  I dunno.

* mv/maint-merge-fix (Sat Aug 23 12:56:57 2008 -0700) 1 commit
 + merge: fix numerus bugs around "trivial merge" area

* ml/submodule (Thu Aug 21 19:54:01 2008 -0400) 2 commits
 + git-submodule.sh - Remove trailing / from URL if found
 + git-submodule.sh - Remove trailing / from URL if found

Soon to be in 'master', I guess.

* np/verify-pack (Fri Aug 22 15:45:53 2008 -0400) 1 commit
 + discard revindex data when pack list changes

* jc/add-ita (Thu Aug 21 01:44:53 2008 -0700) 3 commits
 - git-add --intent-to-add (-N)
 - cached_object: learn empty blob
 - sha1_object_info(): pay attention to cached objects

Teaches "git add" to record only the intent to add a path later.
I think this is better done without the hardcoded empty blob object.

----------------------------------------------------------------
[Stalled -- Needs Action to Proceed (or to be dropped)]

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

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

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

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

* cc/bisect (Fri Aug 22 05:52:29 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

* 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 based on comments.

* 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

Tentatively dropped as its tests do not seem to pass and I have no time to
look at them.

* jc/diff-prefix (Mon Aug 18 20:08:09 2008 -0700) 1 commit
 - diff: vary default prefix depending on what are compared

As some people may have noticed, I've been running with this one when
sending out "How about this" patches to the discussion threads.

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

* 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

* mv/merge-custom (Sat Aug 23 19:23:22 2008 -0700) 9 commits
 + t7606: fix custom merge test
 + Fix "git-merge -s bogo" help text
 + 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

The one at the tip fixes a test that assumed git-merge has a broken
"trivial merge" implementation.

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

----------------------------------------------------------------
[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"]

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

* 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()

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

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

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Aug 2008, #08; Wed, 27)
@ 2008-08-28  2:54  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2008-08-28  2:54 UTC (permalink / raw)
  To: git

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.

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

* dk/emacs (Tue Aug 26 22:24:40 2008 -0500) 2 commits
 - Teach git.el to mark/unmark files by regexp
 - git.el: Diff only file at point by default

With my limited elisp expertise I did not see anything obviously wrong
with these two patches from David Kågedal and David Christensen.

* tl/p4 (Thu Aug 28 00:36:12 2008 +0200) 1 commit
 - git-p4: Fix checkout bug when using --import-local.

A fix forked from 'maint' waiting for an Ack.

----------------------------------------------------------------
[Stalled -- Needs Action to Proceed (or to be dropped)]

* bd/blame (Thu Aug 21 18:22:01 2008 -0500) 5 commits
 . Use xdiff caching to improve git blame performance
 . Allow xdiff machinery to cache hash results for a file
 . Always initialize xpparam_t to 0
 . Bypass textual patch generation and parsing in git blame
 . Allow alternate "low-level" emit function from xdl_diff

Réne had good comments on how the callback should be structured.

* jc/maint-name-hash-clear (Sat Aug 23 13:05:10 2008 -0700) 1 commit
 - discard_cache: reset lazy name_hash bit

I spotted this by accident while working on something unrelated.

When a program calls discard_cache() to read the index again, we do not
properly re-initialize the name_hash structure that is used by the case
insensitivitly logic.  This _might_ improve issues people may be having on
case insensitive filesystems.  I dunno.

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

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

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

* sb/daemon (Sun Aug 24 13:27:10 2008 -0700) 5 commits
 + daemon.c: minor style fixup
 + 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()

I re-reviewed the changes and they look quite sane.  Hopefully be moved to
'master' soonish.

* jc/add-ita (Thu Aug 21 01:44:53 2008 -0700) 3 commits
 - git-add --intent-to-add (-N)
 - cached_object: learn empty blob
 - sha1_object_info(): pay attention to cached objects

Teaches "git add" to record only the intent to add a path later.
I think this is better done without the hardcoded empty blob object.

* cc/bisect (Fri Aug 22 05:52:29 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

* mv/merge-recursive (Mon Aug 25 16:25:57 2008 +0200) 3 commits
 - merge-recursive: introduce merge_options
 - merge-recursive.c: Add more generic merge_recursive_generic()
 - Split out merge_recursive() to merge-recursive.c

Miklos's update; will move to 'next' shortly after reading it again.

* jc/diff-prefix (Mon Aug 18 20:08:09 2008 -0700) 1 commit
 - diff: vary default prefix depending on what are compared

As some people may have noticed, I've been running with this one when
sending out "How about this" patches to the discussion threads.

* 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) 7 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?
Later parts depends on the earlier part of "--simplify-merges"

* 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) 5 commits
 + Documentation: rev-list-options: move --simplify-merges
   documentation

----------------------------------------------------------------
[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, but with the loud whining about moving git-foo out of $PATH we
have been hearing, it might not be a bad idea to drop this.

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

And this is now dropped.

* 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"]

* mv/maint-merge-fix (Sat Aug 23 12:56:57 2008 -0700) 1 commit
 + merge: fix numerus bugs around "trivial merge" area

* ml/submodule (Thu Aug 21 19:54:01 2008 -0400) 2 commits
 + git-submodule.sh - Remove trailing / from URL if found
 + git-submodule.sh - Remove trailing / from URL if found

Soon to be in 'master', I guess.

* np/verify-pack (Fri Aug 22 15:45:53 2008 -0400) 1 commit
 + discard revindex data when pack list changes

* 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

* mv/merge-custom (Sat Aug 23 19:23:22 2008 -0700) 9 commits
 + t7606: fix custom merge test
 + Fix "git-merge -s bogo" help text
 + 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

The one at the tip fixes a test that assumed git-merge has a broken
"trivial merge" implementation.

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

^ permalink raw reply	[relevance 3%]

* What's in git.git (Aug 2008, #07; Wed, 27)
@ 2008-08-28  3:01  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2008-08-28  3:01 UTC (permalink / raw)
  To: git

Handful fixes went to 1.6.0.1 and then a few more are on 'maint'.

On the 'master' front, among other things:

 - "git cherry-pick" can reuse earlier conflict resolution.

 - "git merge" can use a custom strategy (if you write one).

 - "git-shell" was broken and then fixed.

 - "git submodule sync" is a new subcommand.

* The 'maint' branch has these fixes since the last announcement.

Alexander Gavrilov (1):
  Respect core.autocrlf in combined diff

Jeff King (1):
  Fix "git log -i --grep"

Jonathan Nieder (2):
  Documentation: clarify pager.<cmd> configuration
  Documentation: clarify pager configuration

Junio C Hamano (3):
  merge: fix numerous bugs around "trivial merge" area
  GIT 1.6.0.1
  ctype.c: protect tiny C preprocessor constants

Linus Torvalds (1):
  index-pack: be careful after fixing up the header/footer

Miklos Vajna (1):
  Makefile: enable SNPRINTF_RETURNS_BOGUS for HP-UX

Nguyễn Thái Ngọc Duy (1):
  index-pack: setup git repository

Ramsay Allan Jones (2):
  Fix a warning (on cygwin) to allow -Werror
  Suppress some bash redirection error messages

Simon Hausmann (1):
  Clean up the git-p4 documentation


* The 'master' branch has these since the last announcement
  in addition to the above.

Abhijit Menon-Sen (1):
  Make cherry-pick use rerere for conflict resolution.

Andreas Färber (1):
  Makefile: always provide a fallback when hardlinks fail

David Aguilar (1):
  git-submodule: add "sync" command

Gustaf Hendeby (1):
  Update .gitignore to ignore git-help

Jeff King (1):
  format-patch: use default diff format even with patch options

Junio C Hamano (7):
  builtin-add.c: restructure the code for maintainability
  builtin-add.c: optimize -A option and "git add ."
  shell: do not play duplicated definition games to shrink the executable
  Build-in "git-shell"
  Fix "git-merge -s bogo" help text
  t7606: fix custom merge test
  Revert "Build-in "git-shell""

Mark Levedahl (3):
  git-submodule.sh - Remove trailing / from URL if found
  git-submodule.sh - Remove trailing / from URL if found
  git-submodule - Use "get_default_remote" from git-parse-remote

Miklos Vajna (6):
  builtin-help: make some internal functions available to other builtins
  builtin-merge: allow using a custom strategy
  Add a new test for using a custom merge strategy
  Add a second testcase for handling invalid strategies in git-merge
  builtin-help: always load_command_list() in cmd_help()
  Builtin git-help.

Nicolas Pitre (1):
  discard revindex data when pack list changes

Simon Hausmann (1):
  Make it possible to abort the submission of a change to Perforce

Tommi Virtanen (1):
  Install git-shell in bindir, too

^ permalink raw reply	[relevance 3%]

* Re: having to pull twice
  @ 2008-09-25 23:25  2%     ` Miklos Vajna
  2008-09-27 14:16  0%       ` Thomas Rast
  0 siblings, 1 reply; 200+ results
From: Miklos Vajna @ 2008-09-25 23:25 UTC (permalink / raw)
  To: Thomas Rast; +Cc: Shawn O. Pearce, Michael P. Soulier, git

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

On Thu, Sep 25, 2008 at 09:05:02AM +0200, Thomas Rast <trast@student.ethz.ch> wrote:
> On the other hand, as near as I can tell this is a regression in
> builtin-merge.  Miklos, do you know if/how this can be fixed?

I think Junio already fixed this in 446247d (merge: fix numerus bugs
around "trivial merge" area, 2008-08-23), so 1.6.0.1 or 1.6.0.2 should
not have this bug.

Michael, could you please upgrade frm 1.6.0 and confirm your problem
goes away?

Thanks.

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

^ permalink raw reply	[relevance 2%]

* Re: having to pull twice
  2008-09-25 23:25  2%     ` Miklos Vajna
@ 2008-09-27 14:16  0%       ` Thomas Rast
  0 siblings, 0 replies; 200+ results
From: Thomas Rast @ 2008-09-27 14:16 UTC (permalink / raw)
  To: Miklos Vajna; +Cc: Shawn O. Pearce, Michael P. Soulier, git

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

Miklos Vajna wrote:
> On Thu, Sep 25, 2008 at 09:05:02AM +0200, Thomas Rast <trast@student.ethz.ch> wrote:
> > On the other hand, as near as I can tell this is a regression in
> > builtin-merge.  Miklos, do you know if/how this can be fixed?
> 
> I think Junio already fixed this in 446247d (merge: fix numerus bugs
> around "trivial merge" area, 2008-08-23), so 1.6.0.1 or 1.6.0.2 should
> not have this bug.
> 
> Michael, could you please upgrade frm 1.6.0 and confirm your problem
> goes away?

That won't help.  I decided this was a good opportunity to learn about
'git bisect run', and bisected it to 1c7b76b (Build in merge,
2008-07-07).  This was with bad = 47a765d (pulled from Shawn's repo
this week) and good = v1.5.6.

In case you want to check my logic, the commands are below.

- Thomas


* Setup:

  mkdir $temp_repo
  cd $temp_repo
  git init
  echo foo > foo
  git add foo
  git commit -m initial
  echo a > foo
  git commit -m a foo
  git checkout -b side HEAD^
  echo b > foo
  git commit -m b foo
  git checkout master

* Bisection script:

-- 8< --
#!/bin/sh

rm -rf $temp_repo/{bin,libexec}
make -j3 prefix=$temp_repo install

PATH=$temp_repo/bin:$PATH
cd $temp_repo
touch foo
git merge side
test -f .git/MERGE_HEAD
s=$?
git reset --hard
if test $s != 0; then
    echo did not work
    exit 1
else
    echo worked
    exit 0
fi
-- >8 --



[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[relevance 0%]

* [PATCH] merge: fix out-of-bounds memory access
  @ 2009-01-31 14:39  2%       ` René Scharfe
  0 siblings, 0 replies; 200+ results
From: René Scharfe @ 2009-01-31 14:39 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Junio C Hamano, H. Peter Anvin, Git Mailing List, Daniel Barkalow

The following on top of master lets git finish the merge without segfault
(reporting a merge conflict) and valgrind doesn't find an more memory
errors here.  Can you confirm that, Ingo?

-- 8< --
The parameter n of unpack_callback() can have a value of up to
MAX_UNPACK_TREES.  The check at the top of unpack_trees() (its only
(indirect) caller) makes sure it cannot exceed this limit.

unpack_callback() passes it and the array src to unpack_nondirectories(),
which has this loop:

	for (i = 0; i < n; i++) {
		/* ... */
		src[i + o->merge] = o->df_conflict_entry;

o->merge can be 0 or 1, so unpack_nondirectories() potentially accesses
the array src at index MAX_UNPACK_TREES.  This patch makes it big enough.

Reported-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
---
 unpack-trees.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/unpack-trees.c b/unpack-trees.c
index 16bc2ca..e547282 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -240,8 +240,11 @@ static struct cache_entry *create_ce_entry(const struct traverse_info *info, con
 	return ce;
 }
 
-static int unpack_nondirectories(int n, unsigned long mask, unsigned long dirmask, struct cache_entry *src[5],
-	const struct name_entry *names, const struct traverse_info *info)
+static int unpack_nondirectories(int n, unsigned long mask,
+				 unsigned long dirmask,
+				 struct cache_entry **src,
+				 const struct name_entry *names,
+				 const struct traverse_info *info)
 {
 	int i;
 	struct unpack_trees_options *o = info->data;
@@ -291,7 +294,7 @@ static int unpack_nondirectories(int n, unsigned long mask, unsigned long dirmas
 
 static int unpack_callback(int n, unsigned long mask, unsigned long dirmask, struct name_entry *names, struct traverse_info *info)
 {
-	struct cache_entry *src[5] = { NULL, };
+	struct cache_entry *src[MAX_UNPACK_TREES + 1] = { NULL, };
 	struct unpack_trees_options *o = info->data;
 	const struct name_entry *p = names;
 
-- 
1.6.1

^ permalink raw reply related	[relevance 2%]

* What's in git.git (Feb 2009, #01; Sun, 01)
@ 2009-02-02  8:05  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-02-02  8:05 UTC (permalink / raw)
  To: git

There are yet more fixes that have been cooking in next and then master
that have been merged to 'maint' in preparation for the next 1.6.1.X
maintenance release.

On the 'master' front, I think we are ready to plan for 1.6.2 release.
Tonight's "What's cooking" should be a pretty good guide for estimating
what will be in -rc0, in addition to what we already have in 'master'.


* The 'maint' branch has these fixes since the last announcement.

Björn Steinbrink (1):
  Rename detection: Avoid repeated filespec population

Jeff King (1):
  avoid 31-bit truncation in write_loose_object

Junio C Hamano (3):
  ls-tree: add --full-tree option
  Teach format-patch to handle output directory relative to cwd
  GIT 1.6.1.2

Marcel M. Cary (1):
  git-sh-setup: Fix scripts whose PWD is a symlink to a work-dir on OS X

Markus Heidelberg (2):
  git-commit: color status output when color.ui is set
  git-status -v: color diff output when color.ui is set

Nanako Shiraishi (1):
  Document git-ls-tree --full-tree

Nguyễn Thái Ngọc Duy (2):
  grep: support --no-ext-grep to test builtin grep
  grep: grep cache entries if they are "assume unchanged"

Nicolas Pitre (1):
  objects to be pruned immediately don't have to be loosened

René Scharfe (1):
  merge: fix out-of-bounds memory access


* The 'master' branch has these since the last announcement
  in addition to the above.

Anders Melchiorsen (2):
  Documentation: more git push examples
  Documentation: rework src/dst description in git push

David Aguilar (1):
  contrib/difftool: Don't repeat merge tool candidates

Giuseppe Bilotta (3):
  gitweb: make static files accessible with PATH_INFO
  gitweb: webserver config for PATH_INFO
  gitweb: align comments to code

Jake Goulding (3):
  Make opt_parse_with_commit() non-static
  Make has_commit() non-static
  git-tag: Add --contains option

Jakub Narebski (1):
  gitweb: Update README that gitweb works better with PATH_INFO

Jeff King (5):
  diff: refactor tempfile cleanup handling
  chain kill signals for cleanup functions
  refactor signal handling for cleanup functions
  pager: do wait_for_pager on signal death
  t0005: use SIGTERM for sigchain test

Johannes Gilger (1):
  mergetool: Don't repeat merge tool candidates

Johannes Schindelin (8):
  Fix submodule squashing into unrelated commit
  t3404 & t3411: undo copy&paste
  lib-rebase.sh: Document what set_fake_editor() does
  test-lib.sh: introduce test_commit() and test_merge() helpers
  Simplify t3410
  Simplify t3411
  Simplify t3412
  Fix 'git diff --no-index' with a non-existing symlink target

Johannes Sixt (1):
  Windows: Fix signal numbers

Junio C Hamano (6):
  Documentation: simplify refspec format description
  diff.c: output correct index lines for a split diff
  revision traversal: allow UNINTERESTING objects to be missing
  rebase -i squashes submodule changes into unrelated commit
  builtin-apply.c: do not set bogus mode in check_preimage() for deleted
    path
  Update draft release notes to 1.6.2

Kirill Smelkov (5):
  mailinfo: correctly handle multiline 'Subject:' header
  mailinfo: 'From:' header should be unfold as well
  mailinfo: add explicit test for mails like '<a.u.thor@example.com> (A U
    Thor)'
  mailinfo: tests for RFC2047 examples
  mailinfo: cleanup extra spaces for complex 'From:'

Markus Heidelberg (1):
  contrib/difftool: add support for Kompare

Michele Ballabio (1):
  git-shortlog.txt: fix example about .mailmap

Stefan Karpinski (2):
  git-cvsserver: handle CVS 'noop' command.
  git-cvsserver: run post-update hook *after* update.

Steffen Prohaska (6):
  Move computation of absolute paths from Makefile to runtime (in
    preparation for RUNTIME_PREFIX)
  git_extract_argv0_path(): Move check for valid argv0 from caller to
    callee
  Add calls to git_extract_argv0_path() in programs that call git_config_*
  Modify setup_path() to only add git_exec_path() to PATH
  Compute prefix at runtime if RUNTIME_PREFIX is set
  Windows: Revert to default paths and convert them by RUNTIME_PREFIX

Steve Haslam (1):
  Refactor git_set_argv0_path() to git_extract_argv0_path()

Thomas Rast (2):
  t3412: clean up GIT_EDITOR usage
  t3412: use log|name-rev instead of log --graph

^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] GIT 1.6.1.3
@ 2009-02-07 21:54  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-02-07 21:54 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

The latest maintenance release GIT 1.6.1.3 is available at the
usual places:

  http://www.kernel.org/pub/software/scm/git/

  git-1.6.1.3.tar.{gz,bz2}			(source tarball)
  git-htmldocs-1.6.1.3.tar.{gz,bz2}		(preformatted docs)
  git-manpages-1.6.1.3.tar.{gz,bz2}		(preformatted docs)

The RPM binary packages for a few architectures are also provided
as courtesy.

  RPMS/$arch/git-*-1.6.1.3-1.fc9.$arch.rpm	(RPM)

GIT v1.6.1.3 Release Notes
==========================

Fixes since v1.6.1.2
--------------------

* "git diff --binary | git apply" pipeline did not work well when
  a binary blob is changed to a symbolic link.

* Some combinations of -b/-w/--ignore-space-at-eol to "git diff" did
  not work as expected.

* "git grep" did not pass the -I (ignore binary) option when
  calling out an external grep program.

* "git log" and friends include HEAD to the set of starting points
  when --all is given.  This makes a difference when you are not
  on any branch.

* "git mv" to move an untracked file to overwrite a tracked
  contents misbehaved.

* "git merge -s octopus" with many potential merge bases did not
  work correctly.

* RPM binary package installed the html manpages in a wrong place.

Also includes minor documentation fixes and updates.

----------------------------------------------------------------

Changes since v1.6.1.2 are as follows:

Anders Melchiorsen (2):
      Documentation: more git push examples
      Documentation: rework src/dst description in git push

David J. Mellor (1):
      Fixed broken git help -w when installing from RPM

Guanqun Lu (2):
      fix typo in Documentation
      add test-dump-cache-tree in Makefile

Johannes Schindelin (2):
      revision walker: include a detached HEAD in --all
      apply: fix access to an uninitialized mode variable, found by valgrind

Junio C Hamano (6):
      bundle: allow the same ref to be given more than once
      Documentation: simplify refspec format description
      diff.c: output correct index lines for a split diff
      builtin-apply.c: do not set bogus mode in check_preimage() for deleted path
      grep: pass -I (ignore binary) down to external grep
      GIT 1.6.1.3

Keith Cascio (2):
      test more combinations of ignore-whitespace options to diff
      Fix combined use of whitespace ignore options to diff

Linus Torvalds (1):
      Wrap inflate and other zlib routines for better error reporting

Matthieu Moy (3):
      Missing && in t/t7001.sh.
      Add a testcase for "git mv -f" on untracked files.
      builtin-mv.c: check for unversionned files before looking at the destination.

René Scharfe (1):
      merge: fix out-of-bounds memory access

SZEDER Gábor (1):
      Fix gitdir detection when in subdir of gitdir

Stefan Naewe (1):
      urls.txt: document optional port specification in git URLS

William Pursell (1):
      User-manual: "git stash <comment>" form is long gone

^ permalink raw reply	[relevance 2%]

* [PATCH] builtin-merge: fix a typo in an error message
@ 2009-04-13 18:10  2% Allan Caffee
  2009-04-13 21:41  2% ` Allan Caffee
  2009-04-13 23:12  2% ` Miklos Vajna
  0 siblings, 2 replies; 200+ results
From: Allan Caffee @ 2009-04-13 18:10 UTC (permalink / raw)
  To: git


Signed-off-by: Allan Caffee <allan.caffee@gmail.com>
---
 builtin-merge.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/builtin-merge.c b/builtin-merge.c
index 6a51823..0b58e5e 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c
@@ -764,7 +764,7 @@ static int suggest_conflicts(void)
 
 	fp = fopen(git_path("MERGE_MSG"), "a");
 	if (!fp)
-		die("Could open %s for writing", git_path("MERGE_MSG"));
+		die("Could not open %s for writing", git_path("MERGE_MSG"));
 	fprintf(fp, "\nConflicts:\n");
 	for (pos = 0; pos < active_nr; pos++) {
 		struct cache_entry *ce = active_cache[pos];
-- 
1.5.6.3

^ permalink raw reply related	[relevance 2%]

* Re: [PATCH] builtin-merge: fix a typo in an error message
  2009-04-13 18:10  2% [PATCH] builtin-merge: fix a typo in an error message Allan Caffee
@ 2009-04-13 21:41  2% ` Allan Caffee
  2009-04-13 23:12  2% ` Miklos Vajna
  1 sibling, 0 replies; 200+ results
From: Allan Caffee @ 2009-04-13 21:41 UTC (permalink / raw)
  To: git

On Mon, Apr 13, 2009 at 2:10 PM, Allan Caffee <allan.caffee@gmail.com> wrote:
>
> Signed-off-by: Allan Caffee <allan.caffee@gmail.com>
> ---
>  builtin-merge.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/builtin-merge.c b/builtin-merge.c
> index 6a51823..0b58e5e 100644
> --- a/builtin-merge.c
> +++ b/builtin-merge.c
> @@ -764,7 +764,7 @@ static int suggest_conflicts(void)
>
>        fp = fopen(git_path("MERGE_MSG"), "a");
>        if (!fp)
> -               die("Could open %s for writing", git_path("MERGE_MSG"));
> +               die("Could not open %s for writing", git_path("MERGE_MSG"));

On second thought this commit message should probably read something more like:

builtin-merge.c: correct error message for failed open

Since the original message is actually wrong.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH] builtin-merge: fix a typo in an error message
  2009-04-13 18:10  2% [PATCH] builtin-merge: fix a typo in an error message Allan Caffee
  2009-04-13 21:41  2% ` Allan Caffee
@ 2009-04-13 23:12  2% ` Miklos Vajna
  2009-04-27 15:41  2%   ` Allan Caffee
  1 sibling, 1 reply; 200+ results
From: Miklos Vajna @ 2009-04-13 23:12 UTC (permalink / raw)
  To: Allan Caffee; +Cc: git

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

On Mon, Apr 13, 2009 at 02:10:08PM -0400, Allan Caffee <allan.caffee@gmail.com> wrote:
> -		die("Could open %s for writing", git_path("MERGE_MSG"));
> +		die("Could not open %s for writing", git_path("MERGE_MSG"));

Acked-by: Miklos Vajna <vmiklos@frugalware.org>

Thanks.

PS: Please use 'unset followup_to' when sending messages to the git
list, see
http://thread.gmane.org/gmane.comp.version-control.git/83140/focus=83234.

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

^ permalink raw reply	[relevance 2%]

* Re: [PATCH] builtin-merge: fix a typo in an error message
  2009-04-13 23:12  2% ` Miklos Vajna
@ 2009-04-27 15:41  2%   ` Allan Caffee
  2009-04-27 16:37  2%     ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Allan Caffee @ 2009-04-27 15:41 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Miklos Vajna

Hello Junio,

On Tue, 14 Apr 2009, Miklos Vajna wrote:

> On Mon, Apr 13, 2009 at 02:10:08PM -0400, Allan Caffee <allan.caffee@gmail.com> wrote:
> > -		die("Could open %s for writing", git_path("MERGE_MSG"));
> > +		die("Could not open %s for writing", git_path("MERGE_MSG"));
> 
> Acked-by: Miklos Vajna <vmiklos@frugalware.org>

Is this one ready for maint?  (The issue dates back to 1c7b76be.)

^ permalink raw reply	[relevance 2%]

* Re: [PATCH] builtin-merge: fix a typo in an error message
  2009-04-27 15:41  2%   ` Allan Caffee
@ 2009-04-27 16:37  2%     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-04-27 16:37 UTC (permalink / raw)
  To: Allan Caffee; +Cc: Miklos Vajna, git

Allan Caffee <allan.caffee@gmail.com> writes:

> Hello Junio,
>
> On Tue, 14 Apr 2009, Miklos Vajna wrote:
>
>> On Mon, Apr 13, 2009 at 02:10:08PM -0400, Allan Caffee <allan.caffee@gmail.com> wrote:
>> > -		die("Could open %s for writing", git_path("MERGE_MSG"));
>> > +		die("Could not open %s for writing", git_path("MERGE_MSG"));
>> 
>> Acked-by: Miklos Vajna <vmiklos@frugalware.org>
>
> Is this one ready for maint?  (The issue dates back to 1c7b76be.)

Indeed it is; I do not know how this one slipped.

Thanks.

^ permalink raw reply	[relevance 2%]

* What's in git.git (Apr 2009, #02; Wed, 29)
@ 2009-04-30  5:33  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-04-30  5:33 UTC (permalink / raw)
  To: git

It's been a while since I sent the "What's in" report.  Hopefully we can
do an -rc4 this weekend and then 1.6.3 final next week.

* The 'maint' branch has these fixes since 1.6.2.3

Allan Caffee (2):
  builtin-merge: fix a typo in an error message
  Documentation: fix a grammatical error in api-builtin.txt

Björn Steinbrink (1):
  tree_entry_interesting: a pathspec only matches at directory boundary

Clemens Buchacher (3):
  add tests for merging with submodules
  update cache for conflicting submodule entries
  simplify output of conflicting merge

Erik Faye-Lund (4):
  test-suite: adding a test for fast-export with tag variants
  builtin-fast-export.c: turn error into warning
  builtin-fast-export.c: fix crash on tagged trees
  builtin-fast-export.c: handle nested tags

Frank Lichtenheld (2):
  init: Do not segfault on big GIT_TEMPLATE_DIR environment variable
  gitcvs-migration: Link to git-cvsimport documentation

Jeff King (2):
  doc/gitattributes: clarify location of config text
  add-interactive: refactor mode hunk handling

Johan Herland (1):
  Update docs on behaviour of 'core.sharedRepository' and 'git init
    --shared'

Johannes Schindelin (2):
  Fix 'git checkout <submodule>' to update the index
  Fix off-by-one in read_tree_recursive

Johannes Sixt (1):
  t1301-shared-repo: fix forced modes test

Junio C Hamano (4):
  match_tree_entry(): a pathspec only matches at directory boundaries
  Describe fixes since 1.6.2.3
  GIT 1.6.2.4
  diff -c -p: do not die on submodules

Junio Hamano (1):
  Speed up reflog pruning of unreachable commits

Linus Torvalds (2):
  Clean up reflog unreachability pruning decision
  grep: fix segfault when "git grep '('" is given

Markus Heidelberg (2):
  doc/git-daemon: add missing arguments to options
  doc/git-daemon: add missing arguments to max-connections option

Matthieu Moy (2):
  git add -p: new "quit" command at the prompt.
  Update git-add.txt according to the new possibilities of 'git add -p'.

Nguyễn Thái Ngọc Duy (1):
  Makefile: remove {fetch,send}-pack from PROGRAMS as they are builtins

Paul Bolle (1):
  imap-send: use correct configuration variable in documentation

Stephen Boyd (1):
  test-genrandom: Add newline to usage string

Thomas Jarosch (1):
  Fix buffer overflow in config parser

Ulrich Windl (1):
  git-apply: fix option description


* The 'master' branch has these since 1.6.3-rc0
  in addition to the above.

Alex Riesen (3):
  Wait for git diff to finish in git difftool
  Explain seemingly pointless use of system in difftool
  improve error message in config.c

Allan Caffee (4):
  graph API: Added logic for colored edges
  t4202-log: extend test coverage of graphing
  graph API: fix extra space during pre_commit_line state
  graph API: fix a bug in the rendering of octopus merges

Ben Jackson (1):
  Work around ash "alternate value" expansion bug

Benjamin Kramer (2):
  connect: replace inet_ntop with getnameinfo
  daemon.c: fix segfault on OS X

Bert Wesarg (3):
  shorten_unambiguous_ref(): add strict mode
  for-each-ref: utilize core.warnAmbiguousRefs for :short-format
  rev-parse: --abbrev-ref option to shorten ref name

Bill Pemberton (1):
  Add parsing of elm aliases to git-send-email

Brandon Casey (2):
  t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'
  t7700-repack: repack -a now works properly, expect success from test

Dan Loewenherz (1):
  Convert to use quiet option when available

David Aguilar (11):
  difftool: remove merge options for opendiff, tkdiff, kdiff3 and xxdiff
  difftool: remove the backup file feature
  difftool: use perl built-ins when testing for msys
  difftool: add a -y shortcut for --no-prompt
  difftool: move 'git-difftool' out of contrib
  difftool: add various git-difftool tests
  difftool: add support for a difftool.prompt config variable
  bash completion: add git-difftool
  mergetool: use $( ... ) instead of `backticks`
  difftool/mergetool: refactor commands to use git-mergetool--lib
  mergetool--lib: simplify API usage by removing more global variables

Eric Blake (2):
  Makefile: installing git in cygwin 1.7.0
  doc: consistently use ASCIIDOC_EXTRA

Erik Broes (1):
  git-shell: Add 'git-upload-archive' to allowed commands.

Felipe Contreras (1):
  git config: error when editing a repo config and not being in one

Ferry Huberts (1):
  Fix misspelled mergetool.keepBackup

Holger Weiß (1):
  gitweb: Fix snapshots requested via PATH_INFO

Jeff King (8):
  doc: clarify --no-track option
  doc: refer to tracking configuration as "upstream"
  doc/checkout: refer to git-branch(1) as appropriate
  doc/checkout: split checkout and branch creation in synopsis
  docs/checkout: clarify what "non-branch" means
  add-interactive: refactor mode hunk handling
  t7800: respect NO_PERL
  Makefile: fix NO_PERL bug with gitweb

Johannes Schindelin (3):
  Add an option not to use link(src, dest) && unlink(src) when that is
    unreliable
  t5701: do not get stuck in empty-push/
  Rename core.unreliableHardlinks to core.createObject

Johannes Sixt (5):
  Windows: Work around intermittent failures in mingw_rename
  Windows: Skip fstat/lstat optimization in write_entry()
  builtin-help: silently tolerate unknown keys
  remote.c: do not trigger remote.<name>.<var> codepath for two-level names
  prune-packed: advanced progress even for non-existing fan-out directories

Junio C Hamano (11):
  gitignore git-bisect--helper
  unpack-trees: do not muck with attributes when we are not checking out
  Update draft release notes to 1.6.3
  read-tree A B: do not corrupt cache-tree
  Move prime_cache_tree() to cache-tree.c
  read-tree -m A B: prime cache-tree from the switched-to tree
  checkout branch: prime cache-tree fully
  Revert "stat_tracking_info(): only count real commits"
  Makefile: ignore perl/ subdirectory under NO_PERL
  GIT 1.6.3-rc2
  merge-recursive: do not die on a conflicting submodule

Linus Torvalds (4):
  Allow users to un-configure rename detection
  process_{tree,blob}: show objects without buffering
  show_object(): push path_name() call further down
  t4202: fix typo

Mark Drago (1):
  Add semicolon to curly brace group in main Makefile

Markus Heidelberg (4):
  doc/merge-config: list ecmerge as a built-in merge tool
  git-mergetool/difftool: make (g)vimdiff workable under Windows
  git-mergetool: add new merge tool TortoiseMerge
  grep: don't support "grep.color"-like config options

Matthieu Moy (3):
  git add -p: new "quit" command at the prompt.
  Update git-add.txt according to the new possibilities of 'git add -p'.
  clone: add test for push on an empty clone.

Michael J Gruber (3):
  remote.c: use shorten_unambiguous_ref
  test-lib.sh: Help test_create_repo() find the templates dir
  Fix more typos/spelling in comments

Michał Kiedrowicz (6):
  tests: test applying criss-cross rename patch
  builtin-apply: keep information about files to be deleted
  Documentation: boolean value may be given by on/off
  tests: test applying criss-cross rename patch
  builtin-apply: keep information about files to be deleted
  tests: make test-apply-criss-cross-rename more robust

Mike Ralphson (3):
  builtin-remote: fix typo in option description
  Documentation: fix typos / spelling mistakes
  Fix typos / spelling in comments

Nanako Shiraishi (1):
  git-am: teach git-am to apply a patch to an unborn branch

Nguyễn Thái Ngọc Duy (3):
  get_local_heads(): do not return random pointer if there is no head
  attr: add GIT_ATTR_INDEX "direction"
  archive: do not read .gitattributes in working directory

Nicolas Pitre (1):
  progress bar: round to the nearest instead of truncating down

Patrick Welche (1):
  NetBSD compilation fix

Pierre Habouzit (1):
  hook/update: example of how to prevent branch creation

René Scharfe (2):
  archive tests: do not use .gitattributes in working directory
  archive test: attributes

Sam Vilain (1):
  SubmittingPatches: itemize and reflect upon well written changes

Sebastian Pipping (1):
  difftool/mergetool: add diffuse as merge and diff tool

Sitaram Chamarty (1):
  Remove obsolete bug warning in man git-update-server-info

Stephen Boyd (7):
  config.txt: add missing format.{subjectprefix,cc,attach} variables
  Documentation: use lowercase for shallow and deep threading
  git-show-branch.txt: cleanup example description
  git-format-patch.txt: general rewordings and cleanups
  config.txt: add missing 'the's and make words plural
  config.txt: clarify sentences in the configuration and syntax sections
  config.txt: Make configuration paragraph more consistent

Uwe Kleine-König (1):
  parseopt: fix documentation for --keep-dashdash

Wesley J. Landaker (4):
  Documentation: git-svn: fix spurious bolding that mangles the output
  Documentation: git-svn: fix a grammatical error without awkwardness
  Documentation: git-clean: fix minor grammatical errors
  Documentation: git-clean: make description more readable

Wincent Colaiuta (1):
  git add -p: add missing "q" to patch prompt

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] GIT 1.6.3.rc4
  @ 2009-05-03 21:59  2% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-05-03 21:59 UTC (permalink / raw)
  To: git

A release candidate GIT 1.6.3.rc4 is available at the usual places
for testing:

  http://www.kernel.org/pub/software/scm/git/

  git-1.6.3.rc4.tar.{gz,bz2}			(source tarball)
  git-htmldocs-1.6.3.rc4.tar.{gz,bz2}		(preformatted docs)
  git-manpages-1.6.3.rc4.tar.{gz,bz2}		(preformatted docs)

The RPM binary packages for a few architectures are found in:

  testing/git-*-1.6.3.rc4-1.fc9.$arch.rpm	(RPM)

This is hopefully the final rc before the real thing; it includes the
updates to git-gui and gitk.

----------------------------------------------------------------

Changes since v1.6.3-rc3 are as follows:

Alex Riesen (3):
      git-gui: Update Russian translation
      improve error message in config.c
      gitk: Add Russian translation

Alexander Gavrilov (3):
      git-gui: Fix post-commit status with subject in non-locale encoding
      git-gui: Avoid an infinite rescan loop in handle_empty_diff.
      git-gui: Support more git version notations.

Allan Caffee (2):
      builtin-merge: fix a typo in an error message
      Documentation: fix a grammatical error in api-builtin.txt

Benjamin Kramer (1):
      daemon.c: fix segfault on OS X

Christian Stimming (1):
      gitk: Mark forgotten string for translation

Daniel A. Steffen (2):
      gitk: Fixes for Mac OS X TkAqua
      git-gui: Fixes for Mac OS X TkAqua

Eric Blake (2):
      Makefile: installing git in cygwin 1.7.0
      doc: consistently use ASCIIDOC_EXTRA

Felipe Contreras (2):
      git config: error when editing a repo config and not being in one
      Fix a bunch of pointer declarations (codestyle)

Ferry Huberts (1):
      git-gui: Ensure consistent usage of mergetool.keepBackup

Giuseppe Bilotta (1):
      gitk: Provide a window icon if possible

Jeff King (1):
      Makefile: fix NO_PERL bug with gitweb

Jens Lehmann (4):
      git-gui: Fix merge conflict display error when filename contains spaces
      git-gui: When calling post-commit hook wrong variable was cleared.
      git-gui: run post-checkout hook on checkout
      git-gui: run post-checkout hook after clone

Joerg Bornemann (1):
      git-gui: fix use of undeclared variable diff_empty_count

Johannes Schindelin (2):
      t5701: do not get stuck in empty-push/
      Rename core.unreliableHardlinks to core.createObject

Johannes Sixt (1):
      prune-packed: advanced progress even for non-existing fan-out directories

Junio C Hamano (3):
      diff -c -p: do not die on submodules
      merge-recursive: do not die on a conflicting submodule
      GIT 1.6.3-rc4

Linus Torvalds (1):
      grep: fix segfault when "git grep '('" is given

Mark Drago (1):
      Add semicolon to curly brace group in main Makefile

Markus Heidelberg (5):
      git-gui: don't hide the Browse button when resizing the repo chooser
      git-gui: fix deleting from the context menu with empty selection
      git-gui: use `git --html-path` to get the location of installed HTML docs
      git-gui (Win): make "Explore Working Copy" more robust
      git-gui (Win): make starting via "Git GUI Here" on .git/ possible

Michele Ballabio (2):
      gitk: Mark some more strings for translation
      gitk: Map KP_Divide to focus the search box

Pat Thoyts (4):
      gitk: Handle blobs containing a DOS end-of-file marker
      gitk: Remember and restore the window state with the geometry
      gitk: Handle external diff tool with spaces in the path
      gitk: Avoid crash if closed while reading references

Patrick Welche (1):
      NetBSD compilation fix

Paul Mackerras (4):
      gitk: Add a way to mark a commit, plus a "find descendant" command
      gitk: Add a command to compare two strings of commits
      gitk: Make .gitk a hidden file under windows
      gitk: Fix compare-commits function when we have local changes

Phil Lawrence (1):
      Append ampersand to "Target" of lnk files created by do_cygwin_shortcut

René Scharfe (1):
      ctype.c: fix typo in comment

Sam Hocevar (2):
      git-gui: various French translation fixes
      git-gui: minor spelling fix and string factorisation.

Sam Vilain (1):
      SubmittingPatches: itemize and reflect upon well written changes

Stephen Boyd (1):
      gitk: Provide a 32x32 window icon based on the git logo

Uwe Kleine-König (1):
      parseopt: fix documentation for --keep-dashdash

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (May 2009, #03; Mon, 25)
@ 2009-05-25  8:33  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-05-25  8:33 UTC (permalink / raw)
  To: git

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.

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

* sb/opt-filename (Sat May 23 11:53:13 2009 -0700) 5 commits
 - parse-opts: add OPT_FILENAME and transition builtins
 - parse-opts: prepare for OPT_FILENAME
 - Merge branch 'jc/mktree' into sb/opt-filename
 - Merge branch 'sb/format-patch-parseopt' into sb/opt-filename
 - Merge branch 'sb/show-branch-parse-options' into sb/opt-filename
 - Merge branch 'master' into sb/opt-filename
 + apply, fmt-merge-msg: use relative filenames
 + commit: -F overrides -t

There are quite a few new callers to parse_options() in 'next' and 'pu'
that are more likely to graduate before this series, so for now I merged a
few of them and adjusted the commit "prepare for OPT_FILENAME".  I tried
to be careful but extra sets of eyeballs would be helpful.

* da/araxis-mergetool (Sun May 24 00:24:41 2009 +0000) 1 commit
 + mergetool--lib: add support for araxis merge

I admit that I feel certain distaste in supporting a closed tool, but we
already make things bearable for people on Windows; Araxis is no worse,
right?

* rs/maint-grep-word-regexp-fix (Sat May 23 13:45:26 2009 +0200) 1 commit
 + grep: fix word-regexp at the beginning of lines

* mm/apply-double-slash (Thu May 21 14:25:11 2009 +0200) 1 commit
 + apply: handle filenames with double slashes better

* bc/old-iconv (Fri May 22 18:47:06 2009 -0500) 10 commits
 + t8005: convert CP1251 character set to ISO8859-5
 + t8005: use more portable character encoding names
 + t5100: use ancient encoding syntax for backwards compatibility
 + t9301: use ISO8859-1 rather than ISO-8859-1
 + t3901: Use ISO8859-1 instead of ISO-8859-1 for backward
   compatibility
 + t3901: avoid negation on right hand side of '|'
 + builtin-mailinfo.c: use "ISO8859-1" instead of "latin1" as
   fallback encoding
 + builtin-mailinfo.c: compare character encodings case insensitively
 + Use 'UTF-8' rather than 'utf-8' everywhere for backward
   compatibility
 + t3900: use ancient iconv names for backward compatibility

* sb/show-branch-parse-options (Thu May 21 00:33:18 2009 -0700) 3 commits
 + show-branch: migrate to parse-options API
 + Merge branch 'mh/show-branch-color' into sb/show-branch-parse-
   options
 + parse-options: add PARSE_OPT_LITERAL_ARGHELP for complicated
   argh's

* sb/maint-1.6.2-opt-filename-fix (Sat May 23 11:53:11 2009 -0700) 2 commits
 + apply, fmt-merge-msg: use relative filenames
 + commit: -F overrides -t

* jc/cache-tree (Fri May 22 23:14:25 2009 -0700) 5 commits
 - Avoid "diff-index --cached" optimization under --find-copies-
   harder
 - Optimize "diff-index --cached" using cache-tree
 - t4007: modernize the style
 - cache-tree.c::cache_tree_find(): simplify inernal API
 - write-tree --ignore-cache-tree

* jc/solaris-0811 (Fri May 22 22:55:31 2009 -0700) 2 commits
 - OpenSolaris 200811 (SunOS 5.11) does not want OLD_ICONV
 - Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6

* cb/maint-1.6.0-xdl-merge-fix (Mon May 25 01:21:14 2009 +0100) 2 commits
 - Change xdl_merge to generate output even for null merges
 - t6023: merge-file fails to output anything for a degenerate merge

* jc/diff-whitespace-only-status (Sat May 23 01:15:35 2009 -0700) 2 commits
 - diff: Rename QUIET internal option to QUICK
 - diff: change semantics of "ignore whitespace" options

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

* cc/bisect (Sat May 9 17:55:47 2009 +0200) 20 commits
 + bisect: make "git bisect" use new "--next-all" bisect-helper
   function
 + bisect: add "check_good_are_ancestors_of_bad" function
 + bisect: implement the "check_merge_bases" function
 + bisect: automatically sort sha1_array if needed when looking it up
 + bisect: make skipped array functions more generic
 + bisect: remove too much function nesting
 + bisect: use new "struct argv_array" to prepare argv for
   "setup_revisions"
 + bisect: store good revisions in a "sha1_array"
 + bisect: implement "rev_argv_push" to fill an argv with revs
 + bisect: use "sha1_array" to store skipped revisions
 + am: simplify "sq" function by using "git rev-parse --sq-quote"
 + bisect: use "git rev-parse --sq-quote" instead of a custom "sq"
   function
 + rev-parse: add --sq-quote to shell quote arguments
 + rev-list: remove stringed output flag from "show_bisect_vars"
 + bisect--helper: remove "--next-vars" option as it is now useless
 + bisect: use "git bisect--helper --next-exit" in "git-bisect.sh"
 + bisect--helper: add "--next-exit" to output bisect results
 + bisect: move common bisect functionality to "bisect_common"
 + rev-list: refactor printing bisect vars
 + rev-list: make "estimate_bisect_steps" non static

Rewriting major part of "git-bisect" shell script continues.  The patches
seem to be reasonably clean.

* fc/decorate-tag (Thu May 14 00:32:53 2009 +0300) 2 commits
 + Prettify log decorations even more
 + Change prettify_ref to prettify_refname

* mg/track (Mon May 11 16:42:54 2009 +0200) 2 commits
 + Fix behavior with non-commit upstream references
 + Test tracking of non-commit upstreams

* jn/gitweb-cleanup (Mon May 11 19:45:11 2009 +0200) 8 commits
 + gitweb: Remove unused $hash_base parameter from
   normalize_link_target
 + gitweb: Simplify snapshot format detection logic in
   evaluate_path_info
 + gitweb: Use capturing parentheses only when you intend to capture
 + gitweb: Replace wrongly added tabs with spaces
 + gitweb: Use block form of map/grep in a few cases more
 + gitweb: Always use three argument form of open
 + gitweb: Always use three argument form of open
 + gitweb: Do not use bareword filehandles

* js/maint-no-ln-across-libexec-and-bin (Mon May 11 13:02:18 2009 +0200) 1 commit
 + Add NO_CROSS_DIRECTORY_HARDLINKS support to the Makefile

* tp/send-email-from-config (Tue May 12 15:48:56 2009 -0700) 1 commit
 + send-email: Add config option for sender address

* ae/anon-fetch-info (Fri Apr 17 10:20:11 2009 +0200) 1 commit
 + fetch: Strip usernames from url's before storing them

* ac/graph-horizontal-line (Tue Apr 21 08:47:01 2009 -0400) 1 commit
 + graph API: Use horizontal lines for more compact graphs

* mh/show-branch-color (Sat Apr 25 13:46:14 2009 +0200) 2 commits
 + bash completion: show-branch color support
 + show-branch: color the commit status signs

* mh/diff-stat-color (Sat Apr 25 00:06:47 2009 +0200) 1 commit
 + diff: do not color --stat output like patch context

* js/add-edit (Mon Apr 27 19:51:42 2009 +0200) 2 commits
 + t3702: fix reliance on SHELL_PATH being '/bin/sh'
 + git-add: introduce --edit (to edit the diff vs. the index)

* jk/maint-add-empty (Tue Apr 28 23:21:01 2009 -0400) 1 commit
 + add: don't complain when adding empty project root

* ar/unlink-err (Wed Apr 29 23:24:52 2009 +0200) 3 commits
 + print unlink(2) errno in copy_or_link_directory
 + replace direct calls to unlink(2) with unlink_or_warn
 + Introduce an unlink(2) wrapper which gives warning if unlink
   failed

* ar/merge-one-file-diag (Wed Apr 29 23:40:50 2009 +0200) 1 commit
 + Clarify kind of conflict in merge-one-file helper

* np/push-delta (Fri May 1 16:56:47 2009 -0400) 1 commit
 + allow OFS_DELTA objects during a push

* mt/submodule-reference (Mon May 4 22:30:01 2009 +0300) 1 commit
 + Add --reference option to git submodule.

* fl/git-pm (Thu May 7 15:41:28 2009 +0200) 2 commits
 + Git.pm: Always set Repository to absolute path if autodetecting
 + Git.pm: Set GIT_WORK_TREE if we set GIT_DIR

* rs/grep-parseopt (Thu May 7 21:46:48 2009 +0200) 5 commits
 + grep: use parseopt
 + grep: remove global variable builtin_grep
 + parseopt: add PARSE_OPT_NODASH
 + parseopt: add OPT_NUMBER_CALLBACK
 + parseopt: add OPT_NEGBIT

* jk/no-no-no-empty-directory (Fri May 8 01:01:17 2009 -0400) 2 commits
 + parseopt: add OPT_NEGBIT
 + parseopt: add OPT_NEGBIT

* jk/maint-1.6.0-trace-argv (Fri May 8 05:06:15 2009 -0400) 1 commit
 + fix GIT_TRACE segfault with shell-quoted aliases

* hv/sample-update (Fri May 8 17:22:30 2009 +0200) 1 commit
 + Extend sample update hook, disable modifying of existing tags

* rr/forbid-bs-in-ref (Fri May 8 07:32:37 2009 +0200) 1 commit
 + Disallow '\' in ref names

* do/maint-merge-recursive-fix (Sat May 9 14:49:59 2009 -0700) 1 commit
 + merge-recursive: never leave index unmerged while recursing

* jm/format-patch-no-auto-n-when-k-is-given (Sat May 9 10:12:01 2009 +0200) 1 commit
 + format-patch let -k override a config-specified format.numbered

* lt/maint-diff-reduce-lstat (Sat May 9 15:11:17 2009 -0700) 2 commits
 + Teach 'git checkout' to preload the index contents
 + Avoid unnecessary 'lstat()' calls in 'get_stat_data()'

* da/mergetool-lib (Sat May 2 01:57:21 2009 -0700) 1 commit
 + mergetool--lib: specialize diff options for emerge and ecmerge

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

* mw/send-email (Mon Apr 13 13:23:52 2009 -0500) 6 commits
 + send-email: Remove superfluous `my $editor = ...'
 + send-email: 'References:' should only reference what is sent
 + send-email: Handle "GIT:" rather than "GIT: " during --compose
 + Docs: send-email: --smtp-server-port can take symbolic ports
 + Docs: send-email: Refer to CONFIGURATION section for
   sendemail.multiedit
 + Docs: send-email: Put options back into alphabetical order

* ph/submodule-rebase (Fri Apr 24 09:06:38 2009 +1000) 1 commit
 + git-submodule: add support for --rebase.

* cc/bisect (Sun May 17 17:36:46 2009 +0200) 3 commits
 + bisect: check ancestors without forking a "git rev-list" process
 + commit: add function to unparse a commit and its parents
 + bisect: rework some rev related functions to make them more
   reusable

----------------------------------------------------------------
[Stalled and may need help and prodding to go forward]

* lt/read-directory (Fri May 15 12:01:29 2009 -0700) 3 commits
 - Add initial support for pathname conversion to UTF-8
 - read_directory(): infrastructure for pathname character set
   conversion
 - Add 'fill_directory()' helper function for directory traversal

Before adding the real "conversion", this needs a few real fixups, I
think.  For example there is one hardcoded array that is used without
bounds check.

* ar/maint-1.6.2-merge-recursive-d-f (Mon May 11 21:25:36 2009 +0200) 2 commits
 - Fix for a merge where a branch has an F->D transition
 - Add a reminder test case for a merge with F/D transition

Although the reported breakage is covered with the patch, Alex feels the
solution unsatisfactory. Cleaning up D/F conflict handling in merge-recursive
may be long overdue but seems to be a hard problem.

* ps/blame (Thu Mar 12 21:30:03 2009 +1100) 1 commit
 - blame.c: start libifying the blame infrastructure

A few minor point remains in this initial one.  I hate to do these minor
fix-ups myself, but I may end up doing so...

* jc/log-tz (Tue Mar 3 00:45:37 2009 -0800) 1 commit
 - Allow --date=local --date=other-format to work as expected

The one I posted had a few corner-case bugs that was caught with the test
suite; this one has them fixed.  People did not like the UI so it is kept
out of 'next'

* jc/merge-convert (Mon Jan 26 16:45:01 2009 -0800) 1 commit
 - git-merge-file: allow converting the results for the work tree

This is a feature waiting for a user.

We did not give scripted Porcelains a way to say "this temporary file I am
using for merging is for this path, so use the core.autocrlf and attributes
rules for that final path".  Instead, merge-file simply wrote out the
data in the canonical repository representation.

rerere has the same issue, but it is a lot worse.  It reads the three
files (preimage, postimage and thisimage) from the work tree in the work
tree representation, merges them without converting them to the canonical
representation first but inserts the conflict markers with the canonical
representation and writes the resulting mess out.  It needs to be fixed to
read with convert_to_git(), merge them while they are still in the
canonical representation and possibly add conflict markers, and then write
the results out after convert_to_working_tree().  It also needs to write
in binary mode as well.

* db/foreign-scm (Tue Mar 24 23:04:12 2009 -0400) 3 commits
 - Add option for using a foreign VCS
 - Document details of transport function APIs
 - Allow late reporting of fetched hashes

* hv/cvsps-tests (Sun Apr 5 01:40:50 2009 -0700) 8 commits
 - t/t9600: remove exit after test_done
 - cvsimport: extend testcase about patchset order to contain
   branches
 - cvsimport: add test illustrating a bug in cvsps
 - Add a test of "git cvsimport"'s handling of tags and branches
 - Add some tests of git-cvsimport's handling of vendor branches
 - Test contents of entire cvsimported "master" tree contents
 - Use CVS's -f option if available (ignore user's ~/.cvsrc file)
 - Start a library for cvsimport-related tests

----------------------------------------------------------------
[Actively cooking]

* jc/mktree (Thu May 14 15:49:10 2009 -0700) 9 commits
 + mktree: validate entry type in input
 + mktree --batch: build more than one tree object
 + mktree --missing: updated usage message and man page
 + mktree --missing: allow missing objects
 + t1010: add mktree test
 + mktree: do not barf on a submodule commit
 + builtin-mktree.c: use a helper function to handle one line of
   input
 + mktree: use parse-options
 + build-in git-mktree

* jc/maint-add-p-coalesce-fix (Sat May 16 10:48:23 2009 -0700) 2 commits
 + Revert "git-add--interactive: remove hunk coalescing"
 + Splitting a hunk that adds a line at the top fails in "add -p"

* sb/format-patch-parseopt (Sat May 16 02:24:46 2009 -0700) 1 commit
 + format-patch: migrate to parse-options API

* jh/notes (Sat May 16 13:44:17 2009 +0200) 5 commits
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

* rc/http-push (Mon May 18 16:14:24 2009 +0800) 15 commits
 - http*: add helper methods for fetching objects (loose)
 - http*: add helper methods for fetching objects/info/packs
 - http*: add helper methods for fetching packs
 - http*: add fetch_http_pack_index
 - http: create function end_url_with_slash
 - http*: move common variables and macros to http.[ch]
 - http-push: do not SEGV after fetching a bad pack idx file
 - http*: copy string returned by sha1_to_hex
 - http-walker: verify remote packs
 - http-push, http-walker: style fixes
 - t5550-http-fetch: test fetching of packed objects
 - http-push: fix missing "#ifdef USE_CURL_MULTI" around
   "is_running_queue"
 - http-push: send out fetch requests on queue
 - t5540-http-push: test fetching of packed objects
 - t5540-http-push: test fetching of loose objects

This is not the re-rolled 18-patch series we discussed yesterday.

* cc/replace (Tue Apr 14 00:36:59 2009 +0200) 13 commits
 - Documentation: add documentation for "git replace"
 - Add git-replace to .gitignore
 - builtin-replace: use "usage_msg_opt" to give better error messages
 - parse-options: add new function "usage_msg_opt"
 - builtin-replace: teach "git replace" to actually replace
 - Add new "git replace" command
 - environment: add global variable to disable replacement
 - mktag: call "check_sha1_signature" with the replacement sha1
 - replace_object: add a test case
 - object: call "check_sha1_signature" with the replacement sha1
 - sha1_file: add a "read_sha1_file_repl" function
 - replace_object: add mechanism to replace objects found in
   "refs/replace/"
 - refs: add a "for_each_replace_ref" function

I suspect an attempt to replace an object that is directly listed on the
command line would not work very well with this series.

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

* jc/deny-delete-current-1.7.0 (Mon Feb 9 00:19:46 2009 -0800) 1 commit
 - receive-pack: default receive.denyDeleteCurrent to refuse

* jc/refuse-push-to-current-1.7.0 (Wed Feb 11 02:28:03 2009 -0800) 1 commit
 - Refuse updating the current branch in a non-bare repository via
   push

These are for 1.7.0, but the messages when they trigger together may need
to be rethought.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2009, #04; Sun, 31)
@ 2009-06-01  1:24  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-06-01  1:24 UTC (permalink / raw)
  To: git

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.

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

All of these are soon to be in 'next'.

* bc/solaris (Wed May 27 21:17:08 2009 -0500) 4 commits
 - Makefile: introduce SANE_TOOL_PATH for prepending required
   elements to PATH
 - Makefile: add section for SunOS 5.7
 - Makefile: add NEEDS_RESOLV to optionally add -lresolv to compile
   arguments
 - Makefile: use /usr/ucb/install on SunOS platforms rather than
   ginstall

* nw/maint-cvsexportcommit (Fri May 29 00:23:33 2009 +0100) 1 commit
 - git-cvsexportcommit can't commit files which have been removed
   from CVS

* tr/maint-doc-stash-pop (Thu May 28 11:40:15 2009 +0200) 1 commit
 - Documentation: teach stash/pop workflow instead of stash/apply

* da/pretty-tempname (Sun May 31 01:35:52 2009 -0700) 3 commits
 - diff: generate pretty filenames in prep_temp_blob()
 - compat: add a basename() compatibility function
 - compat: add a mkstemps() compatibility function

* ak/maint-for-each-ref-no-lookup (Wed May 27 15:23:12 2009 -0400) 1 commit
 - for-each-ref: Do not lookup objects when they will not be used

* cb/match_refs_internal_tail (Wed May 27 22:13:44 2009 +0200) 1 commit
 - match_refs: search ref list tail internally

I need to replace this with the new iteration...

* gb/am-foreign (Wed May 27 11:25:19 2009 +0200) 4 commits
 - git-am: refactor 'cleaning up and aborting'
 - git-am foreign patch support: StGIT support
 - git-am foreign patch support: autodetect some patch formats
 - git-am foreign patch support: introduce patch_format

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

* sb/opt-filename (Sat May 23 11:53:13 2009 -0700) 2 commits
 + parse-opts: add OPT_FILENAME and transition builtins
 + parse-opts: prepare for OPT_FILENAME

* rs/maint-grep-word-regexp-fix (Sat May 23 13:45:26 2009 +0200) 1 commit
 + grep: fix word-regexp at the beginning of lines

* mm/apply-double-slash (Thu May 21 14:25:11 2009 +0200) 1 commit
 + apply: handle filenames with double slashes better

* bc/old-iconv (Fri May 22 18:47:06 2009 -0500) 10 commits
 + t8005: convert CP1251 character set to ISO8859-5
 + t8005: use more portable character encoding names
 + t5100: use ancient encoding syntax for backwards compatibility
 + t9301: use ISO8859-1 rather than ISO-8859-1
 + t3901: Use ISO8859-1 instead of ISO-8859-1 for backward
   compatibility
 + t3901: avoid negation on right hand side of '|'
 + builtin-mailinfo.c: use "ISO8859-1" instead of "latin1" as
   fallback encoding
 + builtin-mailinfo.c: compare character encodings case insensitively
 + Use 'UTF-8' rather than 'utf-8' everywhere for backward
   compatibility
 + t3900: use ancient iconv names for backward compatibility

* sb/show-branch-parse-options (Thu May 21 00:33:18 2009 -0700) 3 commits
 + show-branch: migrate to parse-options API
 + Merge branch 'mh/show-branch-color' into sb/show-branch-parse-
   options
 + parse-options: add PARSE_OPT_LITERAL_ARGHELP for complicated
   argh's

* sb/maint-1.6.2-opt-filename-fix (Sat May 23 11:53:11 2009 -0700) 2 commits
 + apply, fmt-merge-msg: use relative filenames
 + commit: -F overrides -t

* jc/solaris-0811 (Fri May 22 22:55:31 2009 -0700) 2 commits
 - OpenSolaris 200811 (SunOS 5.11) does not want OLD_ICONV
 - Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6

* mw/send-email (Mon Apr 13 13:23:52 2009 -0500) 6 commits
 + send-email: Remove superfluous `my $editor = ...'
 + send-email: 'References:' should only reference what is sent
 + send-email: Handle "GIT:" rather than "GIT: " during --compose
 + Docs: send-email: --smtp-server-port can take symbolic ports
 + Docs: send-email: Refer to CONFIGURATION section for
   sendemail.multiedit
 + Docs: send-email: Put options back into alphabetical order

* jc/mktree (Thu May 14 15:49:10 2009 -0700) 9 commits
 + mktree: validate entry type in input
 + mktree --batch: build more than one tree object
 + mktree --missing: updated usage message and man page
 + mktree --missing: allow missing objects
 + t1010: add mktree test
 + mktree: do not barf on a submodule commit
 + builtin-mktree.c: use a helper function to handle one line of
   input
 + mktree: use parse-options
 + build-in git-mktree

* jc/maint-add-p-coalesce-fix (Sat May 16 10:48:23 2009 -0700) 2 commits
 + Revert "git-add--interactive: remove hunk coalescing"
 + Splitting a hunk that adds a line at the top fails in "add -p"

* sb/format-patch-parseopt (Sat May 16 02:24:46 2009 -0700) 1 commit
 + format-patch: migrate to parse-options API

* cc/bisect (Sun May 17 17:36:46 2009 +0200) 3 commits (early part)
 + bisect: check ancestors without forking a "git rev-list" process
 + commit: add function to unparse a commit and its parents
 + bisect: rework some rev related functions to make them more
   reusable

----------------------------------------------------------------
[Stalled and may need help and prodding to go forward]

* jh/notes (Sat May 16 13:44:17 2009 +0200) 5 commits
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

Dscho asked about the performance implications of this; I do not think I
saw any progress on that yet...

* ph/submodule-rebase (Fri Apr 24 09:06:38 2009 +1000) 1 commit
 + git-submodule: add support for --rebase.

There was a discussion on --rebase vs --merge and needs for unified
configuration variable handling for this patch...

* lt/read-directory (Fri May 15 12:01:29 2009 -0700) 3 commits
 - Add initial support for pathname conversion to UTF-8
 - read_directory(): infrastructure for pathname character set
   conversion
 - Add 'fill_directory()' helper function for directory traversal

Before adding the real "conversion", this needs a few real fixups, I
think.  For example there is one hardcoded array that is used without
bounds check.

* ar/maint-1.6.2-merge-recursive-d-f (Mon May 11 21:25:36 2009 +0200) 2 commits
 - Fix for a merge where a branch has an F->D transition
 - Add a reminder test case for a merge with F/D transition

Although the reported breakage is covered with the patch, Alex feels the
solution unsatisfactory. Cleaning up D/F conflict handling in merge-recursive
may be long overdue but seems to be a hard problem.

* ps/blame (Thu Mar 12 21:30:03 2009 +1100) 1 commit
 - blame.c: start libifying the blame infrastructure

A few minor point remains in this initial one.  I hate to do these minor
fix-ups myself, but I may end up doing so...

* jc/log-tz (Tue Mar 3 00:45:37 2009 -0800) 1 commit
 - Allow --date=local --date=other-format to work as expected

The one I posted had a few corner-case bugs that was caught with the test
suite; this one has them fixed.  People did not like the UI so it is kept
out of 'next'

* jc/merge-convert (Mon Jan 26 16:45:01 2009 -0800) 1 commit
 - git-merge-file: allow converting the results for the work tree

This is a feature waiting for a user.

We did not give scripted Porcelains a way to say "this temporary file I am
using for merging is for this path, so use the core.autocrlf and attributes
rules for that final path".  Instead, merge-file simply wrote out the
data in the canonical repository representation.

rerere has the same issue, but it is a lot worse.  It reads the three
files (preimage, postimage and thisimage) from the work tree in the work
tree representation, merges them without converting them to the canonical
representation first but inserts the conflict markers with the canonical
representation and writes the resulting mess out.  It needs to be fixed to
read with convert_to_git(), merge them while they are still in the
canonical representation and possibly add conflict markers, and then write
the results out after convert_to_working_tree().  It also needs to write
in binary mode as well.

* db/foreign-scm (Tue Mar 24 23:04:12 2009 -0400) 3 commits
 - Add option for using a foreign VCS
 - Document details of transport function APIs
 - Allow late reporting of fetched hashes

* hv/cvsps-tests (Sun Apr 5 01:40:50 2009 -0700) 8 commits
 - t/t9600: remove exit after test_done
 - cvsimport: extend testcase about patchset order to contain
   branches
 - cvsimport: add test illustrating a bug in cvsps
 - Add a test of "git cvsimport"'s handling of tags and branches
 - Add some tests of git-cvsimport's handling of vendor branches
 - Test contents of entire cvsimported "master" tree contents
 - Use CVS's -f option if available (ignore user's ~/.cvsrc file)
 - Start a library for cvsimport-related tests

----------------------------------------------------------------
[Actively cooking]

* da/araxis-mergetool (Sun May 24 00:24:41 2009 +0000) 1 commit
 + mergetool--lib: add support for araxis merge

* jc/cache-tree (Fri May 22 23:14:25 2009 -0700) 5 commits
 + Avoid "diff-index --cached" optimization under --find-copies-
   harder
 + Optimize "diff-index --cached" using cache-tree
 + t4007: modernize the style
 + cache-tree.c::cache_tree_find(): simplify internal API
 + write-tree --ignore-cache-tree

* cb/maint-1.6.0-xdl-merge-fix (Mon May 25 01:21:14 2009 +0100) 2 commits
 - Change xdl_merge to generate output even for null merges
 - t6023: merge-file fails to output anything for a degenerate merge

Soon in 'next';

* jc/diff-whitespace-only-status (Sat May 23 01:15:35 2009 -0700) 2 commits
 - diff: Rename QUIET internal option to QUICK
 - diff: change semantics of "ignore whitespace" options

* cc/bisect (Thu May 28 23:21:16 2009 +0200) 2 commits
 - bisect: display first bad commit without forking a new process
 - bisect: drop unparse_commit() and use clear_commit_marks()

Soon in 'next';

* rc/http-push (Sat May 30 01:59:50 2009 +0800) 21 commits
 - http*: add helper methods for fetching objects (loose)
 - http*: add helper methods for fetching packs
 - http: use new http API in fetch_index()
 - http*: add http_get_info_packs
 - Use the new http API in fetch_symref()
 - Use the new http API in update_remote_info_refs()
 - Use the new http API in http_fetch_ref()
 - Use the new http API in get_refs_via_curl()
 - Two new functions for the http API
 - http: create function end_url_with_slash
 - http*: move common variables and macros to http.[ch]
 - Some cleanup in get_refs_via_curl()
 - Don't expect verify_pack() callers to set pack_size
 - http-push: do not SEGV after fetching a bad pack idx file
 - http*: copy string returned by sha1_to_hex
 - http-walker: verify remote packs
 - http-push, http-walker: style fixes
 - http-push: fix missing "#ifdef USE_CURL_MULTI" around
   "is_running_queue"
 - http-push: send out fetch requests on queue
 - t5540-http-push: test fetching of packed objects
 - t5540-http-push: test fetching of loose objects

Updated (but not yet with the "slot->local = NULL" patch)

* cc/replace (Wed May 27 07:14:09 2009 +0200) 14 commits
 - t6050: check pushing something based on a replaced commit
 - Documentation: add documentation for "git replace"
 - Add git-replace to .gitignore
 - builtin-replace: use "usage_msg_opt" to give better error messages
 - parse-options: add new function "usage_msg_opt"
 - builtin-replace: teach "git replace" to actually replace
 - Add new "git replace" command
 - environment: add global variable to disable replacement
 - mktag: call "check_sha1_signature" with the replacement sha1
 - replace_object: add a test case
 - object: call "check_sha1_signature" with the replacement sha1
 - sha1_file: add a "read_sha1_file_repl" function
 - replace_object: add mechanism to replace objects found in
   "refs/replace/"
 - refs: add a "for_each_replace_ref" function

Rebased to master.

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

* jc/deny-delete-current-1.7.0 (Mon Feb 9 00:19:46 2009 -0800) 1 commit
 - receive-pack: default receive.denyDeleteCurrent to refuse

* jc/refuse-push-to-current-1.7.0 (Wed Feb 11 02:28:03 2009 -0800) 1 commit
 - Refuse updating the current branch in a non-bare repository via
   push

These are for 1.7.0, but the messages when they trigger together may need
to be rethought.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jun 2009, #01; Fri, 12)
@ 2009-06-12  9:11  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-06-12  9:11 UTC (permalink / raw)
  To: git

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.

Unfortunately I am unusually short of time these days, and some of the
topics unfortunately got less "final review before deciding to merge up"
than I would have liked to give them.  This message itself has more
"please comment/review" requests than usual.

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

* tr/die_errno (Mon Jun 8 23:02:20 2009 +0200) 4 commits
 - Use die_errno() instead of die() when checking syscalls
 - Convert existing die(..., strerror(errno)) to die_errno()
 - die_errno(): double % in strerror() output just in case
 - Introduce die_errno() that appends strerror(errno) to die()

I didn't check the individual conversion from die() to die_errno()
in this latest round; comments?

* cb/maint-no-double-merge (Mon Jun 1 11:20:56 2009 +0200) 1 commit
 + refuse to merge during a merge

Will merge to 'master' soonish.

* sp/msysgit (Thu Jun 11 22:56:12 2009 +0200) 13 commits
 + compat/ has subdirectories: do not omit them in 'make clean'
 + Fix typo in nedmalloc warning fix
 + MinGW: Teach Makefile to detect msysgit and apply specific
   settings
 + Fix warnings in nedmalloc when compiling with GCC 4.4.0
 + Add custom memory allocator to MinGW and MacOS builds
 + MinGW readdir reimplementation to support d_type
 + connect.c: Support PuTTY plink and TortoisePlink as SSH on Windows
 + git: browsing paths with spaces when using the start command
 + MinGW: fix warning about implicit declaration of _getch()
 + test-chmtime: work around Windows limitation
 + Work around a regression in Windows 7, causing erase_in_line() to
   crash sometimes
 + Quiet make: do not leave Windows behind
 + MinGW: GCC >= 4 does not need SNPRINTF_SIZE_CORR anymore

A silly typo I failed to spot was fixed by J6t; should be ready for
'master' now.

* mh/master-send-email (Sun Jun 7 23:40:52 2009 +0200) 8 commits
 - send-email: fix a typo in a comment
 - Merge branch 'mh/maint-send-email' into mh/master-send-email
 - Merge branch 'mh/master-send-email-threaded-fix' into mh/master-
   send-email
 - add a test for git-send-email for threaded mails without chain-
   reply-to
 - send-email: fix threaded mails without chain-reply-to
 - doc/send-email: clarify the behavior of --in-reply-to with --no-
   thread
 - send-email: fix non-threaded mails
 - add a test for git-send-email for non-threaded mails

The author seems to have a better organization than the way I queued this
topic, so I am holding off merging it to 'next' yet.  My goal was to have
two topics, one eventually mergeable to 'maint', the other to 'master'.

* mn/maint-iconv-autoconf (Mon Jun 8 20:46:38 2009 -0700) 1 commit
 - fix handling of iconv configuration options

Will merge to 'next' soon.

* rc/maint-http-local-slot-fix (Sat Jun 6 16:43:26 2009 +0800) 1 commit
 + http*: cleanup slot->local after fclose

* sb/parse-options-integer (Thu Jun 4 16:43:57 2009 -0700) 2 commits
 + parse-options: simplify usage argh handling
 + parse-options: make OPT_INTEGER's argh explicit

* sb/pull-rebase (Fri Jun 12 00:39:21 2009 +0200) 3 commits
 - parse-remote: remove unused functions
 - parse-remote: support default reflist in get_remote_merge_branch
 - parse-remote: function to get the tracking branch to be merge

Will merge to 'next' soon, but it would be nice if we can fix the
"currently works only for the default mapping" before it goes to
'master'.

* ne/futz-upload-pack (Wed Jun 10 01:50:18 2009 +0200) 1 commit
 - Shift object enumeration out of upload-pack

* ml/http (Wed May 27 23:16:03 2009 -0400) 2 commits
 - http.c: add http.sslCertNoPass option
 - http.c: prompt for SSL client certificate password

I think "sslCertNoPass" is a mistake.  We should aim for the ideal (i.e.
detect when we do not need passphrase), and live with a configuration
kludge until the code achives the ideal (i.e. "needPass" to trigger the
new codepath to ask for passphrase), _if_ that ideal is achievable.  And
in this particular case, I think the ideal is not rocket science.

* mg/pushurl (Tue Jun 9 18:01:38 2009 +0200) 5 commits
 - builtin-remote: Make "remote -v" display push urls
 - builtin-remote: Show push urls as well
 - technical/api-remote: Describe new struct remote member pushurl
 - t5516: Check pushurl config setting
 - Allow push and fetch urls to be different

Will merge to 'next' soon.

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

* tr/maint-doc-stash-pop (Thu May 28 11:40:15 2009 +0200) 1 commit
 + Documentation: teach stash/pop workflow instead of stash/apply

* da/pretty-tempname (Sun May 31 01:35:52 2009 -0700) 3 commits
 + diff: generate pretty filenames in prep_temp_blob()
 + compat: add a basename() compatibility function
 + compat: add a mkstemps() compatibility function

* cb/maint-1.6.0-xdl-merge-fix (Mon May 25 01:21:14 2009 +0100) 2 commits
 + Change xdl_merge to generate output even for null merges
 + t6023: merge-file fails to output anything for a degenerate merge

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

* bc/solaris (Sun Jun 7 07:40:29 2009 +0200) 10 commits
 - configure: test whether -lresolv is needed
 + Makefile: insert SANE_TOOL_PATH to PATH before /bin or /usr/bin
 + git-compat-util.h: avoid using c99 flex array feature with Sun
   compiler 5.8
 + Makefile: add section for SunOS 5.7
 + Makefile: introduce SANE_TOOL_PATH for prepending required
   elements to PATH
 + Makefile: define __sun__ on SunOS
 + git-compat-util.h: tweak the way _XOPEN_SOURCE is set on Solaris
 + On Solaris choose the OLD_ICONV iconv() declaration based on the
   UNIX spec
 + Makefile: add NEEDS_RESOLV to optionally add -lresolv to compile
   arguments
 + Makefile: use /usr/ucb/install on SunOS platforms rather than
   ginstall

We saw some success report with Sun's c99 compiler, which would allow us
to include the last remaining patch from Brandon with updates.  I lost
track of the status of the tip patch for autoconf.  Is it ready to go?
Comments from Solaris folks are appreciated.

* cb/match_refs_internal_tail (Sun May 31 16:26:48 2009 +0200) 1 commit
 + match_refs: search ref list tail internally

* nw/maint-cvsexportcommit (Fri May 29 00:23:33 2009 +0100) 1 commit
 + git-cvsexportcommit can't commit files which have been removed
   from CVS

* ak/maint-for-each-ref-no-lookup (Wed May 27 15:23:12 2009 -0400) 1 commit
 + for-each-ref: Do not lookup objects when they will not be used

I think this makes sense, except that I have this nagging feeling that its
use of for_each_rawref() where the original used for_each_ref() may have
some unintended side effects in corner cases.

* ph/submodule-rebase (Wed Jun 3 00:59:12 2009 +0200) 3 commits
 - git-submodule: add support for --merge.
 + Rename submodule.<name>.rebase to submodule.<name>.update
 + git-submodule: add support for --rebase.

I think people do not have issues with the first two, even though some
might still argue that "update --merge" is not a good mode of
operation.

* da/araxis-mergetool (Sun May 24 00:24:41 2009 +0000) 1 commit
 + mergetool--lib: add support for araxis merge

* cc/bisect (Sat Jun 6 06:41:35 2009 +0200) 5 commits
 + t6030: test skipping away from an already skipped commit
 + bisect: when skipping, choose a commit away from a skipped commit
 + bisect: add parameters to "filter_skipped"
 + bisect: display first bad commit without forking a new process
 + bisect: drop unparse_commit() and use clear_commit_marks()

Regardless of metrics, this is an improvement from the current one.  Will
merge to 'master', and let the finer details taken care of later.

* rc/http-push (Sat Jun 6 16:44:02 2009 +0800) 24 commits
 + http*: add helper methods for fetching objects (loose)
 + http*: add helper methods for fetching packs
 + http: use new http API in fetch_index()
 + http*: add http_get_info_packs
 + http-push.c::fetch_symref(): use the new http API
 + http-push.c::remote_exists(): use the new http API
 + http.c::http_fetch_ref(): use the new http API
 + transport.c::get_refs_via_curl(): use the new http API
 + http.c: new functions for the http API
 + http: create function end_url_with_slash
 + http*: move common variables and macros to http.[ch]
 + transport.c::get_refs_via_curl(): do not leak refs_url
 + Don't expect verify_pack() callers to set pack_size
 + http-push: do not SEGV after fetching a bad pack idx file
 + http*: copy string returned by sha1_to_hex
 + http-walker: verify remote packs
 + http-push, http-walker: style fixes
 + t5550-http-fetch: test fetching of packed objects
 + http-push: fix missing "#ifdef USE_CURL_MULTI" around
   "is_running_queue"
 + http-push: send out fetch requests on queue
 + t5540-http-push: test fetching of packed objects
 + t5540-http-push: test fetching of loose objects
 + Merge branch 'rc/maint-http-local-slot-fix' into rc/http-push
 + http*: cleanup slot->local after fclose

I do not use http-push myself, and as I said, I have shortage of git time
in recent weeks, so these are not as carefully reviewed as usual; but
RCTay is proving to be a very reliable HTTP guy I can trust, so unless
there are regression reports from people who actually use http-push, this
will be in 'master' soon.

----------------------------------------------------------------
[Stalled and may need help and prodding to go forward]

* jh/notes (Sat May 16 13:44:17 2009 +0200) 5 commits
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

Dscho asked about the performance implications of this; I do not think I
saw any progress on that yet...

* lt/read-directory (Fri May 15 12:01:29 2009 -0700) 3 commits
 - Add initial support for pathname conversion to UTF-8
 - read_directory(): infrastructure for pathname character set
   conversion
 - Add 'fill_directory()' helper function for directory traversal

Before adding the real "conversion", this needs a few real fixups, I
think.  For example there is one hardcoded array that is used without
bounds check.

* ar/maint-1.6.2-merge-recursive-d-f (Mon May 11 21:25:36 2009 +0200) 2 commits
 - Fix for a merge where a branch has an F->D transition
 - Add a reminder test case for a merge with F/D transition

Although the reported breakage is covered with the patch, Alex feels the
solution unsatisfactory. Cleaning up D/F conflict handling in merge-recursive
may be long overdue but seems to be a hard problem.

* ps/blame (Thu Mar 12 21:30:03 2009 +1100) 1 commit
 - blame.c: start libifying the blame infrastructure

A few minor point remains in this initial one.

* jc/log-tz (Tue Mar 3 00:45:37 2009 -0800) 1 commit
 - Allow --date=local --date=other-format to work as expected

The one I posted had a few corner-case bugs that was caught with the test
suite; this one has them fixed.  People did not like the UI so it is kept
out of 'next'

* jc/merge-convert (Mon Jan 26 16:45:01 2009 -0800) 1 commit
 - git-merge-file: allow converting the results for the work tree

This is a feature waiting for a user.

We did not give scripted Porcelains a way to say "this temporary file I am
using for merging is for this path, so use the core.autocrlf and attributes
rules for that final path".  Instead, merge-file simply wrote out the
data in the canonical repository representation.

rerere has the same issue, but it is a lot worse.  It reads the three
files (preimage, postimage and thisimage) from the work tree in the work
tree representation, merges them without converting them to the canonical
representation first but inserts the conflict markers with the canonical
representation and writes the resulting mess out.  It needs to be fixed to
read with convert_to_git(), merge them while they are still in the
canonical representation and possibly add conflict markers, and then write
the results out after convert_to_working_tree().  It also needs to write
in binary mode as well.

* db/foreign-scm (Tue Mar 24 23:04:12 2009 -0400) 3 commits
 - Add option for using a foreign VCS
 - Document details of transport function APIs
 - Allow late reporting of fetched hashes

* hv/cvsps-tests (Sun Apr 5 01:40:50 2009 -0700) 8 commits
 - t/t9600: remove exit after test_done
 - cvsimport: extend testcase about patchset order to contain
   branches
 - cvsimport: add test illustrating a bug in cvsps
 - Add a test of "git cvsimport"'s handling of tags and branches
 - Add some tests of git-cvsimport's handling of vendor branches
 - Test contents of entire cvsimported "master" tree contents
 - Use CVS's -f option if available (ignore user's ~/.cvsrc file)
 - Start a library for cvsimport-related tests

----------------------------------------------------------------
[Actively cooking]

* gb/am-foreign (Wed May 27 11:25:19 2009 +0200) 4 commits
 - git-am: refactor 'cleaning up and aborting'
 - git-am foreign patch support: StGIT support
 - git-am foreign patch support: autodetect some patch formats
 - git-am foreign patch support: introduce patch_format

Should re-review and merge to 'next' but I am short of time these days.

* jc/cache-tree (Fri May 22 23:14:25 2009 -0700) 5 commits
 + Avoid "diff-index --cached" optimization under --find-copies-
   harder
 + Optimize "diff-index --cached" using cache-tree
 + t4007: modernize the style
 + cache-tree.c::cache_tree_find(): simplify internal API
 + write-tree --ignore-cache-tree

I believe the code is right, but this touches a very low-level code with
high chance of subtle breakages unless you are really careful.  I'll let
it simmer a bit longer in 'next'.

* jc/diff-whitespace-only-status (Sat May 23 01:15:35 2009 -0700) 2 commits
 - diff: Rename QUIET internal option to QUICK
 - diff: change semantics of "ignore whitespace" options

I am not sure if it should wait for a major version bump but this is a
good semantics change.  Perhaps merge to 'next' soonish, but I am
undecided.  Comments?

* cc/replace (Wed May 27 07:14:09 2009 +0200) 14 commits
 - t6050: check pushing something based on a replaced commit
 - Documentation: add documentation for "git replace"
 - Add git-replace to .gitignore
 - builtin-replace: use "usage_msg_opt" to give better error messages
 - parse-options: add new function "usage_msg_opt"
 - builtin-replace: teach "git replace" to actually replace
 - Add new "git replace" command
 - environment: add global variable to disable replacement
 - mktag: call "check_sha1_signature" with the replacement sha1
 - replace_object: add a test case
 - object: call "check_sha1_signature" with the replacement sha1
 - sha1_file: add a "read_sha1_file_repl" function
 - replace_object: add mechanism to replace objects found in
   "refs/replace/"
 - refs: add a "for_each_replace_ref" function

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

* jc/deny-delete-current-1.7.0 (Mon Feb 9 00:19:46 2009 -0800) 1 commit
 - receive-pack: default receive.denyDeleteCurrent to refuse

* jc/refuse-push-to-current-1.7.0 (Wed Feb 11 02:28:03 2009 -0800) 1 commit
 - Refuse updating the current branch in a non-bare repository via
   push

These are for 1.7.0, but the messages when they trigger together may need
to be rethought.

^ permalink raw reply	[relevance 3%]

* Re: [PATCH] merge: indicate remote tracking branches in merge message
  @ 2009-08-09 10:00  3%       ` Jeff King
  2009-08-09 10:02  2%         ` [PATCH 2/3] merge: fix incorrect merge message for ambiguous tag/branch Jeff King
  2009-08-09 10:07  0%         ` [PATCH] merge: indicate remote tracking branches in merge message Jeff King
  0 siblings, 2 replies; 200+ results
From: Jeff King @ 2009-08-09 10:00 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Sun, Aug 09, 2009 at 05:14:43AM -0400, Jeff King wrote:

> In t4202, we have a branch name and a tag name that are the same
> (octopus-a), and we "git merge octopus-a". This actually merges the tag,
> but because the branch name existed, we write "Merge branch 'octopus-a'"
> in the log, which is not true. With your patch, it does the right thing
> and says "Merge commit 'octopus-a'".
> 
> The simple thing is to just update the "expect" text. Though the current
> behavior does show off the ability to collape the two branches and say
> 
>   Merge branches 'octopus-a' and 'octopus-b'
> 
> instead of
> 
>   Merge commit 'octopus-a'; commit 'octopus-b'

Thinking about it for a few seconds, it's silly to try to test something
that happens to occur in a totally unrelated test. The right thing to do
is to write actual tests for this area, fix the bug, and then add the
new feature. So how about this series:

  [1/3] add tests for merge message headings
  [2/3] merge: fix incorrect merge message for ambiguous tag/branch
  [3/3] merge: indicate remote tracking branches in merge message

-Peff

^ permalink raw reply	[relevance 3%]

* [PATCH 2/3] merge: fix incorrect merge message for ambiguous tag/branch
  2009-08-09 10:00  3%       ` Jeff King
@ 2009-08-09 10:02  2%         ` Jeff King
  2009-08-09 10:07  0%         ` [PATCH] merge: indicate remote tracking branches in merge message Jeff King
  1 sibling, 0 replies; 200+ results
From: Jeff King @ 2009-08-09 10:02 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

If we have both a tag and a branch named "foo", then calling
"git merge foo" will warn about the ambiguous ref, but merge
the tag.

When generating the commit message, though, we simply
checked whether "refs/heads/foo" existed, and if it did,
assumed it was a branch. This led to the statement "Merge
branch 'foo'" in the commit message, which is quite wrong.

Instead, we should use dwim_ref to find the actual ref used,
and describe it appropriately.

In addition to the test in t7608, we must also tweak the
expected output of t4202, which was accidentally triggering
this bug.

Signed-off-by: Jeff King <peff@peff.net>
---
 builtin-merge.c           |   15 +++++++--------
 t/t4202-log.sh            |    4 ++--
 t/t7608-merge-messages.sh |    2 +-
 3 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/builtin-merge.c b/builtin-merge.c
index 82b5466..f7db148 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c
@@ -358,6 +358,7 @@ static void merge_name(const char *remote, struct strbuf *msg)
 	struct strbuf buf = STRBUF_INIT;
 	struct strbuf bname = STRBUF_INIT;
 	const char *ptr;
+	char *found_ref;
 	int len, early;
 
 	strbuf_branchname(&bname, remote);
@@ -368,14 +369,12 @@ static void merge_name(const char *remote, struct strbuf *msg)
 	if (!remote_head)
 		die("'%s' does not point to a commit", remote);
 
-	strbuf_addstr(&buf, "refs/heads/");
-	strbuf_addstr(&buf, remote);
-	resolve_ref(buf.buf, branch_head, 0, NULL);
-
-	if (!hashcmp(remote_head->sha1, branch_head)) {
-		strbuf_addf(msg, "%s\t\tbranch '%s' of .\n",
-			sha1_to_hex(branch_head), remote);
-		goto cleanup;
+	if (dwim_ref(remote, strlen(remote), branch_head, &found_ref) > 0) {
+		if (!prefixcmp(found_ref, "refs/heads/")) {
+			strbuf_addf(msg, "%s\t\tbranch '%s' of .\n",
+				    sha1_to_hex(branch_head), remote);
+			goto cleanup;
+		}
 	}
 
 	/* See if remote matches <name>^^^.. or <name>~<number> */
diff --git a/t/t4202-log.sh b/t/t4202-log.sh
index 48e0088..1e952ca 100755
--- a/t/t4202-log.sh
+++ b/t/t4202-log.sh
@@ -320,11 +320,11 @@ test_expect_success 'set up more tangled history' '
 '
 
 cat > expect <<\EOF
-*   Merge branch 'reach'
+*   Merge commit 'reach'
 |\
 | \
 |  \
-*-. \   Merge branches 'octopus-a' and 'octopus-b'
+*-. \   Merge commit 'octopus-a'; commit 'octopus-b'
 |\ \ \
 * | | | seventh
 | | * | octopus-b
diff --git a/t/t7608-merge-messages.sh b/t/t7608-merge-messages.sh
index 9d10583..81ced8a 100755
--- a/t/t7608-merge-messages.sh
+++ b/t/t7608-merge-messages.sh
@@ -38,7 +38,7 @@ test_expect_success 'merge tag' '
 	check_oneline "Merge commit Qtag-1Q"
 '
 
-test_expect_failure 'ambiguous tag' '
+test_expect_success 'ambiguous tag' '
 	git checkout -b ambiguous master &&
 	test_commit ambiguous &&
 	git checkout master &&
-- 
1.6.4.178.g7a987

^ permalink raw reply related	[relevance 2%]

* Re: [PATCH] merge: indicate remote tracking branches in merge message
  2009-08-09 10:00  3%       ` Jeff King
  2009-08-09 10:02  2%         ` [PATCH 2/3] merge: fix incorrect merge message for ambiguous tag/branch Jeff King
@ 2009-08-09 10:07  0%         ` Jeff King
  2009-08-09 19:36  0%           ` Junio C Hamano
  1 sibling, 1 reply; 200+ results
From: Jeff King @ 2009-08-09 10:07 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Sun, Aug 09, 2009 at 06:00:45AM -0400, Jeff King wrote:

>   [1/3] add tests for merge message headings
>   [2/3] merge: fix incorrect merge message for ambiguous tag/branch
>   [3/3] merge: indicate remote tracking branches in merge message

And here is the 4/3 you mentioned earlier:

-- >8 --
Subject: [PATCH] merge: describe tags as such in merge message

Previously, merging a tag directly via "git merge tag" would
get you the message "Merge commit 'tag'". It is a little
more descriptive to note that it was actually a tag (i.e.,
"Merge tag 'tag'").

Signed-off-by: Jeff King <peff@peff.net>
---
 builtin-merge.c           |    5 +++++
 t/t7608-merge-messages.sh |    4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/builtin-merge.c b/builtin-merge.c
index f4de73f..db74901 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c
@@ -380,6 +380,11 @@ static void merge_name(const char *remote, struct strbuf *msg)
 				    sha1_to_hex(branch_head), remote);
 			goto cleanup;
 		}
+		if (!prefixcmp(found_ref, "refs/tags/")) {
+			strbuf_addf(msg, "%s\t\ttag '%s' of .\n",
+				    sha1_to_hex(branch_head), remote);
+			goto cleanup;
+		}
 	}
 
 	/* See if remote matches <name>^^^.. or <name>~<number> */
diff --git a/t/t7608-merge-messages.sh b/t/t7608-merge-messages.sh
index 28d5679..3ee0983 100755
--- a/t/t7608-merge-messages.sh
+++ b/t/t7608-merge-messages.sh
@@ -35,7 +35,7 @@ test_expect_success 'merge tag' '
 	git checkout master &&
 	test_commit master-3 &&
 	git merge tag-1 &&
-	check_oneline "Merge commit Qtag-1Q"
+	check_oneline "Merge tag Qtag-1Q"
 '
 
 test_expect_success 'ambiguous tag' '
@@ -44,7 +44,7 @@ test_expect_success 'ambiguous tag' '
 	git checkout master &&
 	test_commit master-4 &&
 	git merge ambiguous &&
-	check_oneline "Merge commit QambiguousQ"
+	check_oneline "Merge tag QambiguousQ"
 '
 
 test_expect_success 'remote branch' '
-- 
1.6.4.178.g7a987

^ permalink raw reply related	[relevance 0%]

* Re: [PATCH] merge: indicate remote tracking branches in merge message
  2009-08-09 10:07  0%         ` [PATCH] merge: indicate remote tracking branches in merge message Jeff King
@ 2009-08-09 19:36  0%           ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-08-09 19:36 UTC (permalink / raw)
  To: Jeff King; +Cc: git

Jeff King <peff@peff.net> writes:

> On Sun, Aug 09, 2009 at 06:00:45AM -0400, Jeff King wrote:
>
>>   [1/3] add tests for merge message headings
>>   [2/3] merge: fix incorrect merge message for ambiguous tag/branch
>>   [3/3] merge: indicate remote tracking branches in merge message
>
> And here is the 4/3 you mentioned earlier:
>
> -- >8 --
> Subject: [PATCH] merge: describe tags as such in merge message
>
> Previously, merging a tag directly via "git merge tag" would
> get you the message "Merge commit 'tag'". It is a little
> more descriptive to note that it was actually a tag (i.e.,
> "Merge tag 'tag'").

Maybe "Merge version 'v1.6.3'" or "Merge commit tagged as 'v1.6.3'"? 
I dunno.

^ permalink raw reply	[relevance 0%]

* What's cooking in git.git (Aug 2009, #02; Wed, 12)
@ 2009-08-13  2:14  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-08-13  2:14 UTC (permalink / raw)
  To: git

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.

After the 1.6.5 cycle, the next release will be 1.7.0, and we will push
out the planned "push safety" change.  1.7.0 would be a good time to
introduce "justifiable" changes that are not strictly backward compatible.

During 1.6.5 cycle, 'next' will hold topics meant for 1.6.5 and 1.7.0.

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

* ld/p4 (Thu Jul 30 00:13:46 2009 +0100) 1 commit
 - git-p4: stream from perforce to speed up clones

Waiting for Ack/Nack from stakeholders.  Probably I should merge this to
'next' soon, keep it there for a week and see if anybody screams, aka
"Nack now or forever hold your peace" ;-).

* mr/gitweb-xz (Thu Aug 6 10:28:25 2009 -0400) 3 commits
 - gitweb: add support for XZ compressed snapshots
 - gitweb: update INSTALL regarding specific snapshot settings
 - gitweb: support to globally disable a snapshot format

This should be safe as long as it does not silently enable itself for
folks who merely updated gitweb to this version without explicitly asking
for the new format (but I do not remember if that is what the patch does).

* jh/cvs-helper (Wed Aug 12 02:13:51 2009 +0200) 4 commits
 - Add simple selftests of git-remote-cvs functionality
 - Third draft of CVS remote helper program
 - Add Python support library for CVS remote helper
 - Basic build infrastructure for Python scripts

Builds on db/vcs-helper.  The last round failed its own selftest for me,
but this one seems to be Ok.  Documentation/git-remote-cvs.txt needs to be
fixed to build, though.

* bc/maint-am-email (Thu Aug 6 20:08:13 2009 -0500) 2 commits
 + git-am: print fair error message when format detection fails
 + am: allow individual e-mail files as input

It seems that the "not mbox but a single piece of e-mail" format was
something many people relied on.  I'm cooking this in 'next', and
hopefully it can graduate both to 'master' and 'maint'.

* js/maint-cover-letter-non-ascii (Mon Aug 10 18:22:22 2009 +0200) 2 commits
 + Correctly mark cover letters' encodings if they are not pure ASCII
 + Expose the has_non_ascii() function

* jc/verify-pack-stat (Fri Aug 7 15:45:30 2009 -0700) 2 commits
 + verify-pack --stat-only: show histogram without verifying
 + Merge branch 'maint' into jc/verify-pack-stat

* lt/block-sha1 (Wed Aug 12 15:47:55 2009 -0400) 15 commits
 + block-sha1: support for architectures with memory alignment
   restrictions
 + block-sha1: split the different "hacks" to be individually
   selected
 + block-sha1: move code around
 + block-sha1: improve code on large-register-set machines
 + block-sha1: improved SHA1 hashing
 + block-sha1: perform register rotation using cpp
 + block-sha1: get rid of redundant 'lenW' context
 + block-sha1: Use '(B&C)+(D&(B^C))' instead of '(B&C)|(D&(B|C))' in
   round 3
 + block-sha1: macroize the rounds a bit further
 + block-sha1: re-use the temporary array as we calculate the SHA1
 + block-sha1: make the 'ntohl()' part of the first SHA1 loop
 + block-sha1: minor fixups
 + block-sha1: try to use rol/ror appropriately
 + block-sha1: undo ctx->size change
 + Add new optimized C 'block-sha1' routines

Linus's "written in C, faster than handcrafted asm" SHA-1 implementation
with clean-up and ARM support from Nico.

* nd/sparse (Tue Aug 11 22:44:06 2009 +0700) 8 commits
 . --sparse for porcelains
 . Support sparse checkout in unpack_trees() and read-tree
 . unpack-trees.c: generalize verify_* functions
 . dir.c: export excluded_1() and add_excludes_from_file_1()
 . excluded_1(): support exclude "directories" in index
 . Read .gitignore from index if it is assume-unchanged
 . Avoid writing to buffer in add_excludes_from_file_1()
 . Prevent diff machinery from examining assume-unchanged entries on
   worktree

Privately applied but not yet queued to 'pu', expecting a minor reroll
near the tip.

* jk/maint-merge-msg-fix (Sun Aug 9 06:02:51 2009 -0400) 3 commits
 + merge: indicate remote tracking branches in merge message
 + merge: fix incorrect merge message for ambiguous tag/branch
 + add tests for merge message headings

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

* zf/maint-gitweb-acname (Sun Aug 2 09:42:24 2009 +0200) 1 commit
 - gitweb: parse_commit_text encoding fix

* jc/maint-merge-recursive-fix (Thu Jul 30 17:38:15 2009 -0700) 1 commit
 - merge-recursive: don't segfault while handling rename clashes

* js/run-command-updates (Tue Aug 4 11:28:40 2009 +0200) 7 commits
 + run-command.c: squelch a "use before assignment" warning
 + receive-pack: remove unnecessary run_status report
 + run_command: report failure to execute the program, but optionally
   don't
 + run_command: encode deadly signal number in the return value
 + run_command: report system call errors instead of returning error
   codes
 + run_command: return exit code as positive value
 + MinGW: simplify waitpid() emulation macros

* mk/grep-max-depth (Wed Jul 22 19:52:15 2009 +0200) 1 commit
 + grep: Add --max-depth option.

* jp/symlink-dirs (Wed Jul 29 20:22:25 2009 -0700) 3 commits
 + git-checkout: be careful about untracked symlinks
 + lstat_cache: guard against full match of length of 'name'
   parameter
 + Demonstrate bugs when a directory is replaced with a symlink

----------------------------------------------------------------
[In 'next']

* bc/mailsplit-cr-at-eol (Tue Aug 4 22:31:59 2009 -0500) 4 commits
 + Allow mailsplit (and hence git-am) to handle mails with CRLF line-
   endings
 + builtin-mailsplit.c: remove read_line_with_nul() since it is no
   longer used
 + builtin-mailinfo,builtin-mailsplit: use strbufs
 + strbuf: add new function strbuf_getwholeline()

* gb/apply-ignore-whitespace (Tue Aug 4 13:16:49 2009 +0200) 1 commit
 + git apply: option to ignore whitespace differences

* cc/replace (Wed May 27 07:14:09 2009 +0200) 14 commits
 + t6050: check pushing something based on a replaced commit
 + Documentation: add documentation for "git replace"
 + Add git-replace to .gitignore
 + builtin-replace: use "usage_msg_opt" to give better error messages
 + parse-options: add new function "usage_msg_opt"
 + builtin-replace: teach "git replace" to actually replace
 + Add new "git replace" command
 + environment: add global variable to disable replacement
 + mktag: call "check_sha1_signature" with the replacement sha1
 + replace_object: add a test case
 + object: call "check_sha1_signature" with the replacement sha1
 + sha1_file: add a "read_sha1_file_repl" function
 + replace_object: add mechanism to replace objects found in
   "refs/replace/"
 + refs: add a "for_each_replace_ref" function

* jc/1.7.0-diff-whitespace-only-status (Sat May 23 01:15:35 2009 -0700) 2 commits
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* jc/1.7.0-push-safety (Mon Feb 9 00:19:46 2009 -0800) 2 commits
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via
   push

----------------------------------------------------------------
[In 'pu']

* jn/gitweb-blame (Thu Aug 6 19:11:52 2009 +0200) 14 commits
 - gitweb: Create links leading to 'blame_incremental' using
   JavaScript
 - gitweb: Incremental blame (proof of concept)
 - gitweb: Add optional "time to generate page" info in footer
 + Revert the four topmost commits from jn/gitweb-blame topic
 + gitweb: Create links leading to 'blame_incremental' using
   JavaScript
 + gitweb: Incremental blame (proof of concept)
 + gitweb: Add optional "time to generate page" info in footer
 + gitweb: Add -partial_query option to href() subroutine
 + gitweb: Use light/dark for class names also in 'blame' view
 + gitweb: Add author initials in 'blame' view, a la "git gui blame"
 + gitweb: Mark commits with no "previous" in 'blame' view
 + gitweb: Use "previous" header of git-blame -p in 'blame' view
 + gitweb: Mark boundary commits in 'blame' view
 + gitweb: Make .error style generic

I haven't picked up Jakub's replacement to the second one from the tip.
We probably should merge up to "Use light/dark" (aef3768) to 'master' and
start the rest over.

* jc/maint-clean-nested-dir-safety (Tue Jun 30 15:33:45 2009 -0700) 1 commit
 + clean: require double -f options to nuke nested git repository and
   work tree

This probably should go in 'master' soonish.

* jc/shortstatus (Tue Aug 4 23:55:22 2009 -0700) 12 commits
 - git stat -s: short status output
 - git stat: pathspec limits, unlike traditional "git status"
 - git stat: the beginning
 + wt-status: collect untracked files in a separate "collect" phase
 + Make git_status_config() file scope static to builtin-commit.c
 + wt-status: move wt_status_colors[] into wt_status structure
 + wt-status: move many global settings to wt_status structure
 + commit: --dry-run
 + status: show worktree status of conflicted paths separately
 + wt-status.c: rework the way changes to the index and work tree are
   summarized
 + diff-index: keep the original index intact
 + diff-index: report unmerged new entries

Slowly progressing.  I've addressed issues pointed out by Jeff in his
review, and hopefully the whole thing would be ready to go.

* db/vcs-helper (Sun Aug 9 15:28:28 2009 -0400) 17 commits
 - Allow helpers to request marks for fast-import
 - Allow helpers to report in "list" command that the ref is
   unchanged
 - Add support for "import" helper command
 - transport-helper_init(): fix a memory leak in error path
 - Add a config option for remotes to specify a foreign vcs
 - Allow programs to not depend on remotes having urls
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 - Use a clearer style to issue commands to remote helpers
 + Makefile: install hardlinks for git-remote-<scheme> supported by
   libcurl if possible
 + Makefile: do not link three copies of git-remote-* programs
 + Makefile: git-http-fetch does not need expat
 + http-fetch: Fix Makefile dependancies
 + Add transport native helper executables to .gitignore
 + git-http-fetch: not a builtin
 + Use an external program to implement fetching with curl
 + Add support for external programs for handling native fetches

This consolidates various previous rounds from Daniel and Johan.  It seems
that the use of colon ':' before vcs helper name needs to be corrected
before this series can go further.

* je/send-email-no-subject (Wed Aug 5 18:49:54 2009 +0200) 1 commit
 - send-email: confirm on empty mail subjects

This seems to break t9001.  Near the tip of 'pu' I have a iffy workaround.

* jh/notes (Wed Jul 29 04:25:26 2009 +0200) 8 commits
 - t3302-notes-index-expensive: Speed up create_repo()
 - fast-import: Add support for importing commit notes
 - First draft of notes tree parser with support for fanout subtrees
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

* cc/sequencer-rebase-i (Wed Aug 5 22:53:00 2009 +0200) 8 commits
 - rebase -i: use "git sequencer--helper --reset-hard"
 - sequencer: add "--reset-hard" option to "git sequencer--helper"
 - sequencer: add comments about reset_almost_hard()
 - sequencer: add "reset_almost_hard()" and related functions
 - rebase -i: use "git sequencer--helper --make-patch"
 - sequencer: free memory used in "make_patch" function
 - sequencer: add "make_patch" function to save a patch
 - sequencer: add "builtin-sequencer--helper.c"

More sequencer updates.  I didn't look at the latest round that had a
handful "oops, fix that earlier botch" patches, expecting a cleaner
reroll.

* jc/mailinfo-remove-brackets (Wed Jul 15 15:31:12 2009 -0700) 1 commit
 - mailinfo: -b option keeps [bracketed] strings that is not a
   [PATCH] marker

* tr/reset-checkout-patch (Tue Jul 28 23:20:12 2009 +0200) 8 commits
 - DWIM 'git stash save -p' for 'git stash -p'
 - Merge branch 'js/stash-dwim' into tr/reset-checkout-patch
 - Make 'git stash -k' a short form for 'git stash save --keep-index'
 - Implement 'git stash save --patch'
 - Implement 'git checkout --patch'
 - Implement 'git reset --patch'
 - builtin-add: refactor the meat of interactive_add()
 - git-apply--interactive: Refactor patch mode code

Progress?

* js/stash-dwim (Mon Jul 27 20:37:10 2009 +0200) 1 commit
 - Make 'git stash -k' a short form for 'git stash save --keep-index'

This should be merged to 'next' soonish, but I keep forgetting.

* pb/tracking (Thu Jul 16 16:26:15 2009 -0500) 7 commits
 . branch.c: if remote is not config'd for branch, don't try delete
   push config
 . branch, checkout: introduce autosetuppush
 . move deletion of merge configuration to branch.c
 . remote: add per-remote autosetupmerge and autosetuprebase
   configuration
 . introduce a struct tracking_config
 . branch: install_branch_config and struct tracking refactoring
 . config: allow false and true values for branch.autosetuprebase

Has been ejected from 'pu' for some time, expecting a reroll.

* jc/log-tz (Tue Mar 3 00:45:37 2009 -0800) 1 commit
 - Allow --date=local --date=other-format to work as expected

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Aug 2009, #03; Thu, 20)
@ 2009-08-21  2:48  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-08-21  2:48 UTC (permalink / raw)
  To: git

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.

After the 1.6.5 cycle, the next release will be 1.7.0, and we will push
out the planned "push safety" change.  1.7.0 would be a good time to
introduce "justifiable" changes that are not strictly backward compatible.

During 1.6.5 cycle, 'next' will hold topics meant for 1.6.5 and 1.7.0.

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

* aj/fix-read-tree-from-scratch (2009-08-17) 1 commit
  (merged to 'next' on 2009-08-20 at 7a04133)
 + read-tree: Fix regression with creation of a new index file.

* as/maint-graph-interesting-fix (2009-08-18) 1 commit.
 - graph API: fix bug in graph_is_interesting()

* jc/1.7.0-status (2009-08-15) 7 commits
 - git-status: adjust tests
 - git status: not "commit --dry-run" anymore
 - git stat -s: short status output
 - git stat: pathspec limits, unlike traditional "git status"
 - git stat: show traditional status headers and trailers as well
 - git stat: honor relative paths setting
 - git stat: the beginning
 (this branch uses jc/shortstatus.)

* jc/maint-checkout-index-to-prefix (2009-08-16) 1 commit
  (merged to 'next' on 2009-08-20 at 2f6aea2)
 + check_path(): allow symlinked directories to checkout-index --prefix

* jc/maint-unpack-objects-strict (2009-08-13) 1 commit.
 - Fix "unpack-objects --strict"

* jh/submodule-foreach (2009-08-20) 9 commits
  (merged to 'next' on 2009-08-20 at 671bea4)
 + git clone: Add --recursive to automatically checkout (nested) submodules
 + t7407: Use 'rev-parse --short' rather than bash's substring expansion notation
  (merged to 'next' on 2009-08-18 at f4a881d)
 + git submodule status: Add --recursive to recurse into nested submodules
 + git submodule update: Introduce --recursive to update nested submodules
 + git submodule foreach: Add --recursive to recurse into nested submodules
 + git submodule foreach: test access to submodule name as '$name'
 + Add selftest for 'git submodule foreach'
 + git submodule: Cleanup usage string and add option parsing to cmd_foreach()
 + git submodule foreach: Provide access to submodule name, as '$name'

* jl/submodule-summary-diff-files (2009-08-15) 2 commits
  (merged to 'next' on 2009-08-15 at 165bd8e)
 + Documentaqtion/git-submodule.txt: Typofix
  (merged to 'next' on 2009-08-14 at a702e78)
 + git submodule summary: add --files option

* lh/short-decorate (2009-08-15) 1 commit
  (merged to 'next' on 2009-08-18 at b8c1d96)
 + git-log: allow --decorate[=short|full]

* oa/stash-na (2009-08-11) 1 commit
  (merged to 'next' on 2009-08-14 at 12c2e2b)
 + git stash: Give friendlier errors when there is nothing to apply

* sr/gfi-options (2009-08-13) 3 commits
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: put option parsing code in seperate functions

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

* bc/maint-am-email (Thu Aug 6 20:08:13 2009 -0500) 2 commits
 + git-am: print fair error message when format detection fails
 + am: allow individual e-mail files as input

It seems that the "not mbox but a single piece of e-mail" format was
something many people relied on.  Hopefully this can also be sent
to 'maint'.

* js/maint-cover-letter-non-ascii (Mon Aug 10 18:22:22 2009 +0200) 2 commits
 + Correctly mark cover letters' encodings if they are not pure ASCII
 + Expose the has_non_ascii() function

* jk/maint-merge-msg-fix (Sun Aug 9 06:02:51 2009 -0400) 3 commits
 + merge: indicate remote tracking branches in merge message
 + merge: fix incorrect merge message for ambiguous tag/branch
 + add tests for merge message headings

* jc/maint-clean-nested-dir-safety (Tue Jun 30 15:33:45 2009 -0700) 1 commit
 + clean: require double -f options to nuke nested git repository and
   work tree

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

* cc/sequencer-rebase-i (2009-08-05) 8 commits.
 - rebase -i: use "git sequencer--helper --reset-hard"
 - sequencer: add "--reset-hard" option to "git sequencer--helper"
 - sequencer: add comments about reset_almost_hard()
 - sequencer: add "reset_almost_hard()" and related functions
 - rebase -i: use "git sequencer--helper --make-patch"
 - sequencer: free memory used in "make_patch" function
 - sequencer: add "make_patch" function to save a patch
 - sequencer: add "builtin-sequencer--helper.c"

More sequencer updates.  I didn't look at the latest round that had a
handful "oops, fix that earlier botch" patches, expecting a cleaner
reroll (which hasn't happened yet).

* pb/tracking (2009-07-16) 7 commits.
 . branch.c: if remote is not config'd for branch, don't try delete push config
 . branch, checkout: introduce autosetuppush
 . move deletion of merge configuration to branch.c
 . remote: add per-remote autosetupmerge and autosetuprebase configuration
 . introduce a struct tracking_config
 . branch: install_branch_config and struct tracking refactoring
 . config: allow false and true values for branch.autosetuprebase

Has been ejected from 'pu' for some time, expecting a reroll.

* db/vcs-helper (2009-08-09) 17 commits
 - Allow helpers to request marks for fast-import
 - Allow helpers to report in "list" command that the ref is unchanged
 - Add support for "import" helper command
 - transport-helper_init(): fix a memory leak in error path
 - Add a config option for remotes to specify a foreign vcs
 - Allow programs to not depend on remotes having urls
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 - Use a clearer style to issue commands to remote helpers
  (merged to 'next' on 2009-08-07 at f3533ba)
 + Makefile: install hardlinks for git-remote-<scheme> supported by libcurl if possible
 + Makefile: do not link three copies of git-remote-* programs
 + Makefile: git-http-fetch does not need expat
  (merged to 'next' on 2009-08-06 at 15da79d)
 + http-fetch: Fix Makefile dependancies
 + Add transport native helper executables to .gitignore
  (merged to 'next' on 2009-08-05 at 33d491e)
 + git-http-fetch: not a builtin
 + Use an external program to implement fetching with curl
 + Add support for external programs for handling native fetches
 (this branch is used by jh/cvs-helper.)

There was a discussion that suggests that the use of colon ':' before vcs
helper name needs to be corrected.  Nothing happened since.

* je/send-email-no-subject (2009-08-05) 1 commit
 - send-email: confirm on empty mail subjects

This seems to break t9001.  Near the tip of 'pu' I have a iffy
workaround.

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

* ld/p4 (2009-07-30) 1 commit
  (merged to 'next' on 2009-08-14 at 36d310d)
 + git-p4: stream from perforce to speed up clones

Should graduate to 'master' soon.

* mr/gitweb-xz (2009-08-06) 3 commits
  (merged to 'next' on 2009-08-14 at b63b8e6)
 + gitweb: add support for XZ compressed snapshots
 + gitweb: update INSTALL regarding specific snapshot settings
 + gitweb: support to globally disable a snapshot format

Should graduate to 'master' soon.

* jh/cvs-helper (2009-08-18) 7 commits
 - More fixes to the git-remote-cvs installation procedure
 - Fix the Makefile-generated path to the git_remote_cvs package
   in git-remote-cvs
 - Add simple selftests of git-remote-cvs functionality
 - git-remote-cvs: Remote helper program for CVS repositories
 - 2/2: Add Python support library for CVS remote helper
 - 1/2: Add Python support library for CVS remote helper
 - Basic build infrastructure for Python scripts
 (this branch uses db/vcs-helper.)

Builds on db/vcs-helper.  The testing of Python part seemed to be
still fragile even with the latest fix on one of my boches with an
earlier round already installed, but I didn't look very deeply before
removing the older installation.

* jc/verify-pack-stat (2009-08-07) 1 commit
  (merged to 'next' on 2009-08-10 at f80d0e9)
 + verify-pack --stat-only: show histogram without verifying

* lt/block-sha1 (2009-08-17) 4 commits
  (merged to 'next' on 2009-08-18 at 67a1ce8)
 + remove ARM and Mozilla SHA1 implementations
 + block-sha1: guard gcc extensions with __GNUC__
 + make sure byte swapping is optimal for git
 + block-sha1: make the size member first in the context struct

Finishing touches ;-)  There were a few Solaris portability patches
floated around that I didn't pick up, waiting for them to finalize.

* nd/sparse (2009-08-11) 8 commits
 . --sparse for porcelains
 . Support sparse checkout in unpack_trees() and read-tree
 . unpack-trees.c: generalize verify_* functions
 . dir.c: export excluded_1() and add_excludes_from_file_1()
 . excluded_1(): support exclude "directories" in index
 . Read .gitignore from index if it is assume-unchanged
 . Avoid writing to buffer in add_excludes_from_file_1()
  (merged to 'next' on 2009-08-20 at ea167d7)
 + Prevent diff machinery from examining assume-unchanged entries on worktree

The first one was an independent fix; the rest will be discarded and
replaced with the "return of no-checkout" series.

* bc/mailsplit-cr-at-eol (2009-08-04) 4 commits
  (merged to 'next' on 2009-08-06 at 6bc7c5c)
 + Allow mailsplit (and hence git-am) to handle mails with CRLF line-endings
 + builtin-mailsplit.c: remove read_line_with_nul() since it is no longer used
 + builtin-mailinfo,builtin-mailsplit: use strbufs
 + strbuf: add new function strbuf_getwholeline()

Will merge.

* gb/apply-ignore-whitespace (2009-08-04) 1 commit
  (merged to 'next' on 2009-08-06 at 59e2c86)
 + git apply: option to ignore whitespace differences

Will merge.

* cc/replace (2009-05-27) 14 commits.
  (merged to 'next' on 2009-08-02 at b9c4bc0)
 + t6050: check pushing something based on a replaced commit
 + Documentation: add documentation for "git replace"
 + Add git-replace to .gitignore
 + builtin-replace: use "usage_msg_opt" to give better error messages
 + parse-options: add new function "usage_msg_opt"
 + builtin-replace: teach "git replace" to actually replace
 + Add new "git replace" command
 + environment: add global variable to disable replacement
 + mktag: call "check_sha1_signature" with the replacement sha1
 + replace_object: add a test case
 + object: call "check_sha1_signature" with the replacement sha1
 + sha1_file: add a "read_sha1_file_repl" function
 + replace_object: add mechanism to replace objects found in "refs/replace/"
 + refs: add a "for_each_replace_ref" function

Will merge.

* jc/1.7.0-diff-whitespace-only-status (2009-05-23) 2 commits.
  (merged to 'next' on 2009-08-02 at 9c08420)
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

For 1.7.0.  This changes exit code from "git diff --ignore-whitespace" and
friends when there is no actual output.  It is a backward incompatible
change, but we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits
  (merged to 'next' on 2009-08-02 at 38b82fe)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

For 1.7.0.

* jn/gitweb-blame (2009-08-06) 3 commits
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
 - gitweb: Incremental blame (WIP)
 - gitweb: Add optional "time to generate page" info in footer

* jc/shortstatus (2009-08-15) 11 commits
  (merged to 'next' on 2009-08-15 at 7e40766)
 + git commit --dry-run -v: show diff in color when asked
 + Documentation/git-commit.txt: describe --dry-run
  (merged to 'next' on 2009-08-12 at 53bda17)
 + wt-status: collect untracked files in a separate "collect" phase
 + Make git_status_config() file scope static to builtin-commit.c
 + wt-status: move wt_status_colors[] into wt_status structure
 + wt-status: move many global settings to wt_status structure
 + commit: --dry-run
  (merged to 'next' on 2009-08-06 at fe8cb94)
 + status: show worktree status of conflicted paths separately
 + wt-status.c: rework the way changes to the index and work tree are summarized
 + diff-index: keep the original index intact
 + diff-index: report unmerged new entries
 (this branch is used by jc/1.7.0-status.)

Will cook for a bit more and then merge.

* jh/notes (2009-07-29) 8 commits.
 - t3302-notes-index-expensive: Speed up create_repo()
 - fast-import: Add support for importing commit notes
 - First draft of notes tree parser with support for fanout subtrees
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

The cvs-helper series depends on this one.

* tr/reset-checkout-patch (2009-08-18) 8 commits.
  (merged to 'next' on 2009-08-18 at e465bb3)
 + tests: disable interactive hunk selection tests if perl is not available
  (merged to 'next' on 2009-08-16 at 67896c4)
 + DWIM 'git stash save -p' for 'git stash -p'
 + Implement 'git stash save --patch'
 + Implement 'git checkout --patch'
 + Implement 'git reset --patch'
 + builtin-add: refactor the meat of interactive_add()
 + Add a small patch-mode testing library
 + git-apply--interactive: Refactor patch mode code
 (this branch uses js/stash-dwim.)

There was a discussion on better DWIMmery to (1) forbid "git stash save
--anything-with-dash" and (2) redirect with any option "git stash --opt"
to "git stash save --opt", to keep it flexible and safe at the same time.
I think it is a sane thing to do.

* js/stash-dwim (2009-07-27) 1 commit.
  (merged to 'next' on 2009-08-16 at 67896c4)
 + Make 'git stash -k' a short form for 'git stash save --keep-index'
 (this branch is used by tr/reset-checkout-patch.)

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

--------------------------------------------------
[I have been too busy to purge these]

* ar/maint-1.6.2-merge-recursive-d-f (2009-05-11) 2 commits.
 . Fix for a merge where a branch has an F->D transition
 . Add a reminder test case for a merge with F/D transition

* jc/merge-convert (2009-01-26) 1 commit.
 . git-merge-file: allow converting the results for the work tree

* lt/read-directory (2009-05-15) 3 commits.
 . Add initial support for pathname conversion to UTF-8
 . read_directory(): infrastructure for pathname character set conversion
 . Add 'fill_directory()' helper function for directory traversal

* ne/rev-cache (2009-08-17) 6 commits
 . support for path name caching of blobs/trees in rev-cache
 . full integration of rev-cache into git's revision walker, completed test suite
 . administrative functions for rev-cache, and start of integration into git
 . non-commit object support for rev-cache
 . bare minimum revision cache system, no integration with git
 . revision caching documentation: man page and technical discussion

* ps/blame (2009-03-12) 1 commit.
 . blame.c: start libifying the blame infrastructure

^ permalink raw reply	[relevance 2%]

* [PATCH] Aggressive three-way merge: fix D/F case
@ 2009-10-12  2:53  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-10-12  2:53 UTC (permalink / raw)
  To: git

When the ancestor used to have a blob "P", your tree removed it, and the
tree you are merging with also removed it, the agressive three-way cleanly
merges to remove that blob.  If the other tree added a new blob "P/Q"
while removing "P", it should also merge cleanly to remove "P" and create
"P/Q" (since neither the ancestor nor your tree could have had it, so it
is a typical "created in one").

The "aggressive" rule is not new anymore.  Reword the stale comment.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 * This fixes one problem in the 3-way merge with corrected tree/index
   entry order the jc/fix-tree-walk topic exposes.

 t/t6035-merge-dir-to-symlink.sh |    2 +-
 unpack-trees.c                  |   13 ++++++++-----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/t/t6035-merge-dir-to-symlink.sh b/t/t6035-merge-dir-to-symlink.sh
index b9a280e..d1b2287 100755
--- a/t/t6035-merge-dir-to-symlink.sh
+++ b/t/t6035-merge-dir-to-symlink.sh
@@ -74,7 +74,7 @@ test_expect_success 'setup a merge where dir a/b-2 changed to symlink' '
 	git tag test2
 '
 
-test_expect_failure 'merge should not have conflicts (resolve)' '
+test_expect_success 'merge should not have conflicts (resolve)' '
 	git reset --hard &&
 	git checkout baseline^0 &&
 	git merge -s resolve test2 &&
diff --git a/unpack-trees.c b/unpack-trees.c
index c424bab..ec12341 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -767,7 +767,8 @@ int threeway_merge(struct cache_entry **stages, struct unpack_trees_options *o)
 		remote = NULL;
 	}
 
-	/* First, if there's a #16 situation, note that to prevent #13
+	/*
+	 * First, if there's a #16 situation, note that to prevent #13
 	 * and #14.
 	 */
 	if (!same(remote, head)) {
@@ -781,7 +782,8 @@ int threeway_merge(struct cache_entry **stages, struct unpack_trees_options *o)
 		}
 	}
 
-	/* We start with cases where the index is allowed to match
+	/*
+	 * We start with cases where the index is allowed to match
 	 * something other than the head: #14(ALT) and #2ALT, where it
 	 * is permitted to match the result instead.
 	 */
@@ -811,12 +813,13 @@ int threeway_merge(struct cache_entry **stages, struct unpack_trees_options *o)
 	if (!head && !remote && any_anc_missing)
 		return 0;
 
-	/* Under the new "aggressive" rule, we resolve mostly trivial
+	/*
+	 * Under the "aggressive" rule, we resolve mostly trivial
 	 * cases that we historically had git-merge-one-file resolve.
 	 */
 	if (o->aggressive) {
-		int head_deleted = !head && !df_conflict_head;
-		int remote_deleted = !remote && !df_conflict_remote;
+		int head_deleted = !head;
+		int remote_deleted = !remote;
 		struct cache_entry *ce = NULL;
 
 		if (index)
-- 
1.6.5.59.g7e3f2

^ permalink raw reply related	[relevance 2%]

* What's cooking in git.git (Oct 2009, #02; Sun, 11)
@ 2009-10-12  3:18  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-10-12  3:18 UTC (permalink / raw)
  To: git

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planeed changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * git-send-email won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * git-status won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git-diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

As a post-release ritual, I've rebuilt 'next' on top of 'master'.

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

* ch/am-header (2009-09-25) 2 commits
  (merged to 'next' on 2009-09-25 at f86e197)
 + git-am: force egrep to use correct characters set
 + git-am: fixed patch_format detection according to RFC2822

* ef/msvc-noreturn (2009-09-30) 2 commits
  (merged to 'next' on 2009-10-07 at 66137a0)
 + add NORETURN_PTR for function pointers
 + increase portability of NORETURN declarations

jk: This is the latest round and I think should be ready for at least
'next' (maybe even 'master' as it is really about the build and not about
functionality).

* fc/mutt-alias (2009-09-30) 1 commit
  (merged to 'next' on 2009-10-07 at df7ac20)
 + send-email: fix mutt regex for grouped aliases

jk: Latest round that addressed comments. Ready for 'next' if not
'master'.

* jk/reflog-date (2009-09-24) 1 commit
  (merged to 'next' on 2009-09-29 at 43d444a)
 + improve reflog date/number heuristic

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

* jp/maint-send-email-fold (2009-10-08) 1 commit.
 - git-send-email.perl: fold multiple entry "Cc:" and multiple single line "RCPT TO:"s

* ks/precompute-completion (2009-10-05) 1 commit.
 - Speedup bash completion loading

* pv/maint-add-p-no-exclude (2009-10-10) 1 commit.
  (merged to 'next' on 2009-10-11 at 0ff2e96)
 + git-add--interactive: never skip files included in index

* sp/smart-http (2009-10-08) 4 commits.
 - Smart fetch and push over HTTP: server side
 - Add smart-http options to upload-pack, receive-pack
 - Git-aware CGI to provide dumb HTTP transport
 - Document the HTTP transport protocol

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

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

Ejected from 'next' as fast-import folks still seem to be discussing with
how to proceed.

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

* jh/cvs-helper (2009-08-18) 8 commits.
 - More fixes to the git-remote-cvs installation procedure
 - Fix the Makefile-generated path to the git_remote_cvs package in git-remote-cvs
 - Add simple selftests of git-remote-cvs functionality
 - git-remote-cvs: Remote helper program for CVS repositories
 - 2/2: Add Python support library for CVS remote helper
 - 1/2: Add Python support library for CVS remote helper
 - Basic build infrastructure for Python scripts
 - Allow helpers to request marks for fast-import
 (this branch uses db/vcs-helper-rest.)

Builds on db/vcs-helper.  There is a re-roll planned.

* ne/rev-cache (2009-09-07) 7 commits.
 . support for commit grafts, slight change to general mechanism
 . support for path name caching in rev-cache
 . full integration of rev-cache into git, completed test suite
 . administrative functions for rev-cache, start of integration into git
 . support for non-commit object caching in rev-cache
 . basic revision cache system, no integration or features
 . man page and technical discussion for rev-cache

This seems to break at least t6001 when merged to 'pu'.

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

* dk/blame-el (2009-09-29) 1 commit.
 - git-blame.el: Change how blame information is shown.

Soon in 'next'.

* ef/msys-imap (2009-10-09) 8 commits.
 - MSVC: Enable OpenSSL, and translate -lcrypto
 - mingw: enable OpenSSL
 - mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle
 - imap-send: build imap-send on Windows
 - imap-send: fix compilation-error on Windows
 - imap-send: use run-command API for tunneling
 - imap-send: use separate read and write fds
 - imap-send: remove useless uid code

* jn/gitweb-patch (2009-10-09) 1 commit.
 - gitweb: Do not show 'patch' link for merge commits

Soon in 'next'

* mr/gitweb-snapshot (2009-09-26) 2 commits.
 - gitweb: append short hash ids to snapshot files
  (merged to 'next' on 2009-10-11 at 22ba047)
 + gitweb: check given hash before trying to create snapshot

* mr/instaweb-cgid (2009-09-26) 1 commit.
  (merged to 'next' on 2009-10-11 at 99bcfaf)
 + instaweb: support mod_cgid for apache2

* tf/doc-pt-br (2009-09-23) 1 commit.
 - Documentation: update pt-BR

The current AsciiDoc may barf on NOME and SINOPSE, as pt_BR language
definition is not widely distributed yet (it just hit the development
tree).  Need to revert these headings (or change the length of the section
underlines to match the length of translated names).

* jc/pretty-lf (2009-10-04) 1 commit.
 - Pretty-format: %[+-]x to tweak inter-item newlines

I am not happy with this one yet.  I am contemplating to introduce a new
syntax "%[magic(param)<anything>%]" to generalize expressions of this and
line wrapping features in an extensible way.

* js/log-rewrap (2008-11-10) 3 commits.
 . Add "%w" to pretty formats, which rewraps the commit message
 - Add strbuf_add_wrapped_text() to utf8.[ch]
 - print_wrapped_text(): allow hard newlines
... and the first two from this series will be useful to implement an
example magic "wrap", e.g. "%[wrap(i,j,w)%s%+b%]".

* jg/log-format-body-indent (2009-09-19) 1 commit.
 - git-log --format: Add %B tag with %B(x) option

I think we should redo this on top of the first two patches from
js/log-rewrap series; %B(x) is just a special case %B(x,x,0), no?  If a
magic value 0 (or negative) given to wrap-width does not disable wrapping,
we probably should make it so.

* bg/rebase-reword (2009-10-07) 1 commit.
 - Teach 'rebase -i' the command "reword"

Soon in 'next'

* js/diff-verbose-submodule (2009-10-04) 1 commit.
 - Add the --submodule-summary option to the diff option family

Dscho sounded like he has some corrections after list comments, but I did
not pick up his interdiff in the middle.

* jl/submodule-add-noname (2009-09-22) 1 commit.
 - git submodule add: make the <path> parameter optional

Dscho started an interesting discussion regarding the larger workflow in
which the "submodule add" is used.  I think the patch itself makes sense
but at the same time it probably makes sense to also take the <path> and
infer the <repository> as Dscho suggested, probably in "git submodule
add", not in "git add" proper, at least initially.

* jc/fix-tree-walk (2009-09-14) 10 commits.
 - 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
 - unpack_callback(): use unpack_failed() consistently
 - unpack-trees: typofix
 - diff-lib.c: fix misleading comments on oneway_diff()

This is my replacement for Linus's lt/maint-traverse-trees-fix patch.  It
is not so much as a counter-proposal; I originally thought it might make
sense to walk the index and drive the walker to return the entries from
trees to match entries from the index, but I ended up doing pretty much
what Linus outlined --- walk the trees, and have the index walker follow
it.  It turned out that the index side also needed some hairy look-ahead,

This includes the fix to aggressive mode of three-way merge used by the
resolve strategy.  I think the series is Ok for 'next'.

* jp/fetch-tag-match (2009-09-17) 1 commit.
 - fetch: Speed up fetch by rewriting find_non_local_tags

I just queued this without reading nor thinking about it very much.  I
personally liked my version that had far smaller number of lines changed
(which means I can be fairly certain that it did not introduce any
regression), but perhaps the majorly rewritten logic this patch gives us
may be easier to follow and maintain.

* jc/maint-blank-at-eof (2009-09-15) 0 commits.
 (this branch uses jc/maint-1.6.0-blank-at-eof.)

The series does not have a commit of its own but is a preparation for
merging the original jc/1.6.0-maint-blank-at-eof topic to 'maint' and then
'master'

Soon in 'next'

* db/vcs-helper-rest (2009-09-03) 6 commits.
 - Allow helpers to report in "list" command that the ref is unchanged
 - Add support for "import" helper command
 - Add a config option for remotes to specify a foreign vcs
 - Allow programs to not depend on remotes having urls
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 (this branch is used by jh/cvs-helper.)

This holds the remainder of the db/vcs-helper topic that has already
merged in 1.6.5.

* jh/notes (2009-10-09) 22 commits.
 - fast-import: Proper notes tree manipulation using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Add selftests verifying concatenation of multiple notes for the same commit
 - Refactor notes code to concatenate multiple notes annotating the same object
 - Add selftests verifying that we can parse notes trees with various fanouts
 - Teach the notes lookup code to parse notes trees with various fanout schemes
 - Teach notes code to free its internal data structures on request
 - Add '%N'-format for pretty-printing commit notes
 - Add flags to get_commit_notes() to control the format of the note string
 - t3302-notes-index-expensive: Speed up create_repo()
 - fast-import: Add support for importing commit notes
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

Rerolled and queued.

* jn/gitweb-show-size (2009-09-07) 1 commit.
 - gitweb: Add 'show-sizes' feature to show blob sizes in tree view

Soon in 'next'

* jc/maint-1.6.0-blank-at-eof (2009-09-14) 15 commits.
  (merged to 'next' on 2009-10-11 at 7f34fb3)
 + diff -B: colour whitespace errors
 + diff.c: emit_add_line() takes only the rest of the line
 + diff.c: split emit_line() from the first char and the rest of the line
 + diff.c: shuffling code around
 + diff --whitespace: fix blank lines at end
 + core.whitespace: split trailing-space into blank-at-{eol,eof}
 + diff --color: color blank-at-eof
 + diff --whitespace=warn/error: fix blank-at-eof check
 + diff --whitespace=warn/error: obey blank-at-eof
 + diff.c: the builtin_diff() deals with only two-file comparison
 + apply --whitespace: warn blank but not necessarily empty lines at EOF
 + apply --whitespace=warn/error: diagnose blank at EOF
 + apply.c: split check_whitespace() into two
 + apply --whitespace=fix: detect new blank lines at eof correctly
 + apply --whitespace=fix: fix handling of blank lines at the eof
 (this branch is used by jc/maint-blank-at-eof.)

This is a fix for an ancient bug (or inconsistent set of features); the
topic is based on an ancient codebase and is designed to be merged
upwards.  jc/maint-blank-at-eof serves that purpose.

* jn/gitweb-blame (2009-09-01) 5 commits.
 - gitweb: Minify gitweb.js if JSMIN is defined
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame.

* nd/sparse (2009-08-20) 19 commits.
 - sparse checkout: inhibit empty worktree
 - Add tests for sparse checkout
 - read-tree: add --no-sparse-checkout to disable sparse checkout support
 - unpack-trees(): ignore worktree check outside checkout area
 - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 - unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 - unpack-trees.c: generalize verify_* functions
 - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 - Introduce "sparse checkout"
 - dir.c: export excluded_1() and add_excludes_from_file_1()
 - excluded_1(): support exclude files in index
 - unpack-trees(): carry skip-worktree bit over in merged_entry()
 - Read .gitignore from index if it is skip-worktree
 - Avoid writing to buffer in add_excludes_from_file_1()
 - Teach Git to respect skip-worktree bit (writing part)
 - Teach Git to respect skip-worktree bit (reading part)
 - Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 - Add test-index-version
 - update-index: refactor mark_valid() in preparation for new options

--------------------------------------------------
[For 1.7.0]

* jk/1.7.0-status (2009-09-05) 5 commits.
 - docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[I have been too busy to purge these]

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Maybe some people care about this.  I dunno.

* lt/read-directory (2009-05-15) 3 commits.
 . Add initial support for pathname conversion to UTF-8
 . read_directory(): infrastructure for pathname character set conversion
 . Add 'fill_directory()' helper function for directory traversal

* cc/reset-merge (2009-09-16) 4 commits.
 . reset: add test cases for "--merge-safe" option
 . reset: add option "--merge-safe" to "git reset"
 . reset: use "unpack_trees()" directly instead of "git read-tree"
 . reset: add a few tests for "git reset --merge"

* cc/sequencer-rebase-i (2009-08-28) 15 commits.
 . rebase -i: use "git sequencer--helper --cherry-pick"
 . sequencer: add "--cherry-pick" option to "git sequencer--helper"
 . sequencer: add "do_commit()" and related functions working on "next_commit"
 . pick: libify "pick_help_msg()"
 . revert: libify cherry-pick and revert functionnality
 . rebase -i: use "git sequencer--helper --fast-forward"
 . sequencer: let "git sequencer--helper" callers set "allow_dirty"
 . sequencer: add "--fast-forward" option to "git sequencer--helper"
 . sequencer: add "do_fast_forward()" to perform a fast forward
 . rebase -i: use "git sequencer--helper --reset-hard"
 . sequencer: add "--reset-hard" option to "git sequencer--helper"
 . sequencer: add "reset_almost_hard()" and related functions
 . rebase -i: use "git sequencer--helper --make-patch"
 . sequencer: add "make_patch" function to save a patch
 . sequencer: add "builtin-sequencer--helper.c"

* lt/maint-traverse-trees-fix (2009-09-06) 1 commit.
 . Prepare 'traverse_trees()' for D/F conflict lookahead

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Oct 2009, #03; Mon, 19)
@ 2009-10-19  8:05  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-10-19  8:05 UTC (permalink / raw)
  To: git

What's cooking in git.git (Oct 2009, #03; Mon, 19)
--------------------------------------------------

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planeed changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * git-send-email won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * git-status won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git-diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

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

* jp/maint-send-email-fold (2009-10-08) 1 commit.
 + git-send-email.perl: fold multiple entry "Cc:" and multiple single line "RCPT TO:"s

* pv/maint-add-p-no-exclude (2009-10-10) 1 commit.
  (merged to 'next' on 2009-10-11 at 0ff2e96)
 + git-add--interactive: never skip files included in index

* dk/blame-el (2009-09-29) 1 commit.
 + git-blame.el: Change how blame information is shown.

* jn/gitweb-patch (2009-10-09) 1 commit.
 + gitweb: Do not show 'patch' link for merge commits

* mr/instaweb-cgid (2009-09-26) 1 commit.
  (merged to 'next' on 2009-10-11 at 99bcfaf)
 + instaweb: support mod_cgid for apache2

* tf/doc-pt-br (2009-09-23) 1 commit.
 + Documentation: update pt-BR

The current AsciiDoc may barf on NOME and SINOPSE, as pt_BR language
definition is not widely distributed yet (it just hit the development
tree).

* bg/rebase-reword (2009-10-07) 2 commits.
 + rebase-i: fix reword when using a terminal editor
 + Teach 'rebase -i' the command "reword"

* jp/fetch-tag-match (2009-09-17) 1 commit.
 + fetch: Speed up fetch by rewriting find_non_local_tags

* jn/gitweb-show-size (2009-09-07) 1 commit.
 + gitweb: Add 'show-sizes' feature to show blob sizes in tree view

* jc/maint-1.6.0-blank-at-eof (2009-09-14) 15 commits.
  (merged to 'next' on 2009-10-11 at 7f34fb3)
 + diff -B: colour whitespace errors
 + diff.c: emit_add_line() takes only the rest of the line
 + diff.c: split emit_line() from the first char and the rest of the line
 + diff.c: shuffling code around
 + diff --whitespace: fix blank lines at end
 + core.whitespace: split trailing-space into blank-at-{eol,eof}
 + diff --color: color blank-at-eof
 + diff --whitespace=warn/error: fix blank-at-eof check
 + diff --whitespace=warn/error: obey blank-at-eof
 + diff.c: the builtin_diff() deals with only two-file comparison
 + apply --whitespace: warn blank but not necessarily empty lines at EOF
 + apply --whitespace=warn/error: diagnose blank at EOF
 + apply.c: split check_whitespace() into two
 + apply --whitespace=fix: detect new blank lines at eof correctly
 + apply --whitespace=fix: fix handling of blank lines at the eof
 (this branch is used by jc/maint-blank-at-eof.)

This is a fix for an ancient bug (or inconsistent set of features); the
topic is based on an ancient codebase and is designed to be merged
upwards.  jc/maint-blank-at-eof serves that purpose.

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

* ak/bisect-reset-to-switch (2009-10-13) 1 commit.
 - bisect reset: Allow resetting to any commit, not just a branch

* fc/doc-fast-forward (2009-10-11) 1 commit.
 - user-manual: use 'fast-forward'

* gb/maint-gitweb-esc-param (2009-10-13) 1 commit.
  (merged to 'next' on 2009-10-14 at 105f997)
 + gitweb: fix esc_param
 (this branch is used by sb/gitweb-link-author.)

* jc/maint-1.6.3-graft-trailing-space (2009-10-14) 1 commit.
 - info/grafts: allow trailing whitespaces at the end of line

* jc/strbuf-nested-expand (2009-10-18) 5 commits
 - Teach --wrap to only indent without wrapping
 - Add %[wrap(width,in1,in2)<<any-string>>%] implementation
 - strbuf_nested_expand(): allow expansion to interrupt in the middle
 - Add strbuf_add_wrapped_text() to utf8.[ch]
 - print_wrapped_text(): allow hard newlines
 (this branch uses js/log-rewrap.)

* jk/maint-cvsimport-pathname (2009-10-19) 1 commit.
  (merged to 'next' on 2009-10-19 at 77824f2)
 + cvsimport: fix relative argument filenames

* jn/show-normalized-refs (2009-10-12) 3 commits.
 - check-ref-format: simplify --print implementation
 - git check-ref-format --print
 - Add tests for git check-ref-format

* sb/gitweb-link-author (2009-10-14) 1 commit.
 - gitweb: linkify author/committer names with search
 (this branch uses gb/maint-gitweb-esc-param.)

* jc/checkout-auto-track (2009-10-18) 3 commits
 - git checkout --nodwim
 - DWIM "git checkout frotz" to "git checkout -b frotz origin/frotz"
 - check_filename(): make verify_filename() callable without dying

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

* db/vcs-helper-rest (2009-09-03) 6 commits.
 - Allow helpers to report in "list" command that the ref is unchanged
 - Add support for "import" helper command
 - Add a config option for remotes to specify a foreign vcs
 - Allow programs to not depend on remotes having urls
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 (this branch is used by jh/cvs-helper.)

This holds the remainder of the db/vcs-helper topic that has already
merged in 1.6.5.  If people want to replace this with improvements it
would be a good time to do so.

* jl/submodule-add-noname (2009-09-22) 1 commit.
 - git submodule add: make the <path> parameter optional

Dscho started an interesting discussion regarding the larger workflow in
which the "submodule add" is used.  I think the patch itself makes sense
but at the same time it probably makes sense to also take the <path> and
infer the <repository> as Dscho suggested, probably in "git submodule
add", not in "git add" proper, at least initially.

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions
 (this branch is used by jh/notes.)

Ejected from 'next' as fast-import folks still seem to be discussing with
how to proceed.

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

* jh/cvs-helper (2009-08-18) 8 commits.
 - More fixes to the git-remote-cvs installation procedure
 - Fix the Makefile-generated path to the git_remote_cvs package in git-remote-cvs
 - Add simple selftests of git-remote-cvs functionality
 - git-remote-cvs: Remote helper program for CVS repositories
 - 2/2: Add Python support library for CVS remote helper
 - 1/2: Add Python support library for CVS remote helper
 - Basic build infrastructure for Python scripts
 - Allow helpers to request marks for fast-import
 (this branch uses db/vcs-helper-rest.)

Builds on db/vcs-helper.

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

* tr/stash-format (2009-10-16) 5 commits
 . stash list: drop the default limit of 10 stashes
 . stash list: use new %g formats instead of sed
 . Introduce new pretty formats %g[sdD] for reflog information
 . reflog-walk: refactor the branch@{num} formatting
 . Refactor pretty_print_commit arguments into a struct

Expecting a re-roll.

* ks/precompute-completion (2009-10-05) 1 commit.
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

* sp/smart-http (2009-10-14) 17 commits
 - Smart HTTP fetch: gzip requests
 - Smart fetch over HTTP: client side
 - Smart push over HTTP: client side
 - Discover refs via smart HTTP server when available
 - Smart fetch and push over HTTP: server side
 - Add stateless RPC options to upload-pack, receive-pack
 - Git-aware CGI to provide dumb HTTP transport
 - Move WebDAV HTTP push under remote-curl
 - remote-helpers: Support custom transport options
 - remote-helpers: Fetch more than one ref in a batch
 - fetch: Allow transport -v -v -v to set verbosity to 3
 - remote-curl: Refactor walker initialization
 - Add multi_ack_detailed capability to fetch-pack/upload-pack
 - Move "get_ack()" back to fetch-pack
 - fetch-pack: Use a strbuf to compose the want list
 - pkt-line: Make packet_read_line easier to debug
 - pkt-line: Add strbuf based functions

* ef/msys-imap (2009-10-13) 8 commits.
 - MSVC: Enable OpenSSL, and translate -lcrypto
 - mingw: enable OpenSSL
 - mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle
 - imap-send: build imap-send on Windows
 - imap-send: fix compilation-error on Windows
 - imap-send: use run-command API for tunneling
 - imap-send: use separate read and write fds
 - imap-send: remove useless uid code

Is this good to go yet?

* mr/gitweb-snapshot (2009-09-26) 2 commits.
 - gitweb: append short hash ids to snapshot files
  (merged to 'next' on 2009-10-11 at 22ba047)
 + gitweb: check given hash before trying to create snapshot

* jc/pretty-lf (2009-10-04) 1 commit.
 - Pretty-format: %[+-]x to tweak inter-item newlines

* js/log-rewrap (2008-11-10) 2 commits
 - Add strbuf_add_wrapped_text() to utf8.[ch]
 - print_wrapped_text(): allow hard newlines
 (this branch is used by jc/strbuf-nested-expand.)

* js/diff-verbose-submodule (2009-10-14) 4 commits.
 - add tests for git diff --submodule-summary
 - fix output for deleted submodules in git diff --submodule-summary
 - fix indentation depth for git diff --submodule-summary
 - Add the --submodule-summary option to the diff option family

There was an attempted re-roll and it looked very promising with a minor
fix-up, but I ran out of time to pick it up and unilaterally tweaking it.
Waiting for a response.

* jc/fix-tree-walk (2009-09-14) 10 commits.
 - read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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
 + unpack_callback(): use unpack_failed() consistently
 + unpack-trees: typofix
 + diff-lib.c: fix misleading comments on oneway_diff()

This is my replacement for Linus's lt/maint-traverse-trees-fix patch.  It
is not so much as a counter-proposal; I originally thought it might make
sense to walk the index and drive the walker to return the entries from
trees to match entries from the index, but I ended up doing pretty much
what Linus outlined --- walk the trees, and have the index walker follow
it.  It turned out that the index side also needed some hairy look-ahead,

This includes the fix to aggressive mode of three-way merge used by the
resolve strategy.

* jh/notes (2009-10-09) 22 commits.
 - fast-import: Proper notes tree manipulation using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Add selftests verifying concatenation of multiple notes for the same commit
 - Refactor notes code to concatenate multiple notes annotating the same object
 - Add selftests verifying that we can parse notes trees with various fanouts
 - Teach the notes lookup code to parse notes trees with various fanout schemes
 - Teach notes code to free its internal data structures on request
 - Add '%N'-format for pretty-printing commit notes
 - Add flags to get_commit_notes() to control the format of the note string
 - t3302-notes-index-expensive: Speed up create_repo()
 - fast-import: Add support for importing commit notes
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes
 (this branch uses sr/gfi-options.)

Is this good for 'next' now?

* jn/gitweb-blame (2009-09-01) 5 commits.
 - gitweb: Minify gitweb.js if JSMIN is defined
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame.

* nd/sparse (2009-08-20) 19 commits.
 - sparse checkout: inhibit empty worktree
 - Add tests for sparse checkout
 - read-tree: add --no-sparse-checkout to disable sparse checkout support
 - unpack-trees(): ignore worktree check outside checkout area
 - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 - unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 - unpack-trees.c: generalize verify_* functions
 - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 - Introduce "sparse checkout"
 - dir.c: export excluded_1() and add_excludes_from_file_1()
 - excluded_1(): support exclude files in index
 - unpack-trees(): carry skip-worktree bit over in merged_entry()
 - Read .gitignore from index if it is skip-worktree
 - Avoid writing to buffer in add_excludes_from_file_1()
 - Teach Git to respect skip-worktree bit (writing part)
 - Teach Git to respect skip-worktree bit (reading part)
 - Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 - Add test-index-version
 - update-index: refactor mark_valid() in preparation for new options

--------------------------------------------------
[For 1.7.0]

* jk/1.7.0-status (2009-09-05) 5 commits.
 - docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[I have been too busy to purge these]

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Maybe some people care about this.  I dunno.

* ne/rev-cache (2009-09-07) 7 commits.
 . support for commit grafts, slight change to general mechanism
 . support for path name caching in rev-cache
 . full integration of rev-cache into git, completed test suite
 . administrative functions for rev-cache, start of integration into git
 . support for non-commit object caching in rev-cache
 . basic revision cache system, no integration or features
 . man page and technical discussion for rev-cache

This seems to break at least t6001 when merged to 'pu'.

* jg/log-format-body-indent (2009-09-19) 1 commit.
 . git-log --format: Add %B tag with %B(x) option

Ejected from 'pu' as this is merely a short-hand for %[wrap(0,x,x)%b%].

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Oct 2009, #04; Wed, 21)
@ 2009-10-22  6:52  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-10-22  6:52 UTC (permalink / raw)
  To: git

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planeed changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * git-send-email won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * git-status won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git-diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

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

* gb/maint-gitweb-esc-param (2009-10-13) 1 commit.
  (merged to 'next' on 2009-10-14 at 105f997)
 + gitweb: fix esc_param
 (this branch is used by sb/gitweb-link-author.)

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

* vl/git-gui (2009-10-16) 1 commit.
 - git-gui: adjust the minimum height of diff pane for shorter screen height

Shawn?

* cb/doc-fetch-pull-merge (2009-10-21) 1 commit.
  (merged to 'next' on 2009-10-21 at 1d9190d)
 + modernize fetch/merge/pull examples

* ja/fetch-doc (2009-10-21) 1 commit.
  (merged to 'next' on 2009-10-21 at bf09f62)
 + Documentation/fetch-options.txt: order options alphabetically

Helps 'git-fetch.{1,html}' without helping 'git-pull.{1,html}'.

* jc/1.7.0-no-commit-no-ff-2 (2009-10-21) 1 commit.
 - git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  I haven't described this at the beginning of this message
yet, as it is not clear if this is even necessary, but since I already
wrote it and many people seem to be interested in UI and behaviour
warts,...

Some tests expect the traditional behaviour of silently ignoring --no-commit
upon fast-forward, and tonight's 'pu' does not pass them.

* jc/1.7.0-no-commit-no-ff (2009-10-21) 1 commit.
 . git-merge: imply --no-ff when --no-commit is given

This is an alternative patch to the same issue.

* jc/fsck-default-full (2009-10-20) 1 commit
  (merged to 'next' on 2009-10-21 at 1375192)
 + fsck: default to "git fsck --full"

Should be safe enough to be in 'master' soon.

* jc/maint-fix-unpack-zlib-check (2009-10-21) 1 commit.
 - Fix incorrect error check while reading deflated pack data

This is the final round from 2009-10-21, not my earlier botched attempts.

* jc/receive-pack-auto (2009-10-20) 2 commits.
  (merged to 'next' on 2009-10-21 at fef13ef)
 + receive-pack: run "gc --auto --quiet" and optionally "update-server-info"
 + gc --auto --quiet: make the notice a bit less verboase

* jp/dirty-describe (2009-10-21) 1 commit.
 - Teach "git describe" --dirty option

Ack?

* tr/filter-branch (2009-10-21) 2 commits.
 - filter-branch: nearest-ancestor rewriting outside subdir filter
 - filter-branch: stop special-casing $filter_subdir argument

J6t already has some comments on this.

* tr/maint-roff-quote (2009-10-21) 2 commits.
 - Document GNU_ROFF in Makefile
 - Quote ' as \(aq in manpages

The doc may need to be clarified a bit more.

* bg/clone-doc (2009-10-20) 1 commit.
  (merged to 'next' on 2009-10-21 at 3016736)
 + git-clone.txt: Fix grammar and formatting

Should be correct enough to be in 'master' soon.

* iv/tar-lzma-xz (2009-10-20) 1 commit.
  (merged to 'next' on 2009-10-21 at cb0df8a)
 + import-tars: Add support for tarballs compressed with lzma, xz

Should be safe enough to be in 'master' soon.

* rs/pretty-wrap (2009-10-17) 1 commit
 - Implement wrap format %w() as if it is a mode switch
 (this branch uses js/log-rewrap; is related to jc/strbuf-nested-expand.)

When it comes to design issues to keep unnecessary complexity out, I tend
to trust R辿ne (and Nico) a lot more than I trust myself.  Tonight's 'pu'
queues this series instead of my "nested" one.

* sr/blame-incomplete (2009-10-19) 1 commit.
 - blame: make sure that the last line ends in an LF

I think this is _good enough_ as-is; although it would be better if we
added some hint to the output for Porcelain implementations, that can be
done as a follow-up fix.

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

* mr/gitweb-snapshot (2009-09-26) 2 commits.
 - gitweb: append short hash ids to snapshot files
  (merged to 'next' on 2009-10-11 at 22ba047)
 + gitweb: check given hash before trying to create snapshot

I lost track of the discussion around the tip commit.  The bottom one may
better go to 'master' regardless.

* db/vcs-helper-rest (2009-09-03) 6 commits.
 - Allow helpers to report in "list" command that the ref is unchanged
 - Add support for "import" helper command
 - Add a config option for remotes to specify a foreign vcs
 - Allow programs to not depend on remotes having urls
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 (this branch is used by jh/cvs-helper.)

This holds the remainder of the db/vcs-helper topic that has already
merged in 1.6.5.  If people want to replace this with improvements it
would be a good time to do so.

* jl/submodule-add-noname (2009-09-22) 1 commit.
 - git submodule add: make the <path> parameter optional

Dscho started an interesting discussion regarding the larger workflow in
which the "submodule add" is used.  I think the patch itself makes sense
but at the same time it probably makes sense to also take the <path> and
infer the <repository> as Dscho suggested, probably in "git submodule
add", not in "git add" proper, at least initially.

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

* jh/cvs-helper (2009-08-18) 8 commits.
 . More fixes to the git-remote-cvs installation procedure
 . Fix the Makefile-generated path to the git_remote_cvs package in git-remote-cvs
 . Add simple selftests of git-remote-cvs functionality
 . git-remote-cvs: Remote helper program for CVS repositories
 . 2/2: Add Python support library for CVS remote helper
 . 1/2: Add Python support library for CVS remote helper
 . Basic build infrastructure for Python scripts
 . Allow helpers to request marks for fast-import
 (this branch uses db/vcs-helper-rest.)

* jc/strbuf-nested-expand (2009-10-18) 3 commits
 . Teach --wrap to only indent without wrapping
 . Add %[wrap(width,in1,in2)<<any-string>>%] implementation
 . strbuf_nested_expand(): allow expansion to interrupt in the middle
 (this branch uses js/log-rewrap; is related to rs/pretty-wrap.)

Ejected from 'pu' to let rs/pretty-wrap in as described above.

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

* ne/rev-cache (2009-10-19) 7 commits.
 - support for commit grafts, slight change to general mechanism
 - support for path name caching in rev-cache
 - full integration of rev-cache into git, completed test suite
 - administrative functions for rev-cache, start of integration into git
 - support for non-commit object caching in rev-cache
 - basic revision cache system, no integration or features
 - man page and technical discussion for rev-cache

Still unstable?  Has an extra test squashed in; tonight's 'pu' does not
pass tests.

* ak/bisect-reset-to-switch (2009-10-13) 1 commit.
 - bisect reset: Allow resetting to any commit, not just a branch

Soon in 'next'.

* fc/doc-fast-forward (2009-10-11) 1 commit.
 - user-manual: use 'fast-forward'

* jc/maint-1.6.3-graft-trailing-space (2009-10-14) 1 commit.
 - info/grafts: allow trailing whitespaces at the end of line

Soon in 'next'.

* jk/maint-cvsimport-pathname (2009-10-19) 1 commit.
  (merged to 'next' on 2009-10-19 at 77824f2)
 + cvsimport: fix relative argument filenames

Should be safe enough to be in 'master' soon.

* jn/show-normalized-refs (2009-10-12) 3 commits.
 - check-ref-format: simplify --print implementation
 - git check-ref-format --print
 - Add tests for git check-ref-format

This was for helping Porcelains like git-gui to sanely cope with user
input that has redundant // in refnames.  Are potential users happy with
the series?  I think this is ready for 'next'.

* sb/gitweb-link-author (2009-10-15) 1 commit
 - gitweb: linkify author/committer names with search

Soon in 'next'.

* jc/checkout-auto-track (2009-10-18) 3 commits
 - git checkout --no-guess
 - DWIM "git checkout frotz" to "git checkout -b frotz origin/frotz"
 - check_filename(): make verify_filename() callable without dying

The final shape of this series ended up to be more or less exactly what
Dscho hinted he wanted to have in one of the discussion. Is everybody
happy with this kind of new user-friendliness?  I think it is safe enough
to be queued to 'next'.

* tr/stash-format (2009-10-19) 5 commits
 - stash list: drop the default limit of 10 stashes
 - stash list: use new %g formats instead of sed
 - Introduce new pretty formats %g[sdD] for reflog information
 - reflog-walk: refactor the branch@{num} formatting
 - Refactor pretty_print_commit arguments into a struct

Soon in 'next'.

* ks/precompute-completion (2009-10-05) 1 commit.
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

Are people happy with this?

* sp/smart-http (2009-10-14) 17 commits
 - Smart HTTP fetch: gzip requests
 - Smart fetch over HTTP: client side
 - Smart push over HTTP: client side
 - Discover refs via smart HTTP server when available
 - Smart fetch and push over HTTP: server side
 - Add stateless RPC options to upload-pack, receive-pack
 - Git-aware CGI to provide dumb HTTP transport
 - Move WebDAV HTTP push under remote-curl
 - remote-helpers: Support custom transport options
 - remote-helpers: Fetch more than one ref in a batch
 - fetch: Allow transport -v -v -v to set verbosity to 3
 - remote-curl: Refactor walker initialization
 - Add multi_ack_detailed capability to fetch-pack/upload-pack
 - Move "get_ack()" back to fetch-pack
 - fetch-pack: Use a strbuf to compose the want list
 - pkt-line: Make packet_read_line easier to debug
 - pkt-line: Add strbuf based functions

What's the doneness of this series?

* ef/msys-imap (2009-10-21) 8 commits.
 - MSVC: Enable OpenSSL, and translate -lcrypto
 - mingw: enable OpenSSL
 - mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle
 - imap-send: build imap-send on Windows
 - imap-send: fix compilation-error on Windows
 - imap-send: use run-command API for tunneling
 - imap-send: use separate read and write fds
 - imap-send: remove useless uid code

Another re-roll.  Waiting for an Ack from MSVC folks but otherwise it is
ready for 'next', I think.

* jc/pretty-lf (2009-10-04) 1 commit.
 - Pretty-format: %[+-]x to tweak inter-item newlines

* js/log-rewrap (2008-11-10) 2 commits
 - Add strbuf_add_wrapped_text() to utf8.[ch]
 - print_wrapped_text(): allow hard newlines
 (this branch is used by jc/strbuf-nested-expand and rs/pretty-wrap.)

Soon in 'next'; regardless of how wrapping is exposed to --pretty=format,
this code will be used, and it seems to be leak-free and reasonably done.

We _might_ want to cherry-pick the tip of jc/strbuf-nested-expand to this
series, though.

* js/diff-verbose-submodule (2009-10-14) 2 commits.
 - add tests for git diff --submodule-summary
 - Add the --submodule option to the diff option family

I should retitle and fix some comments in the tip commit (the tests have
already been adjusted to use the real option name), but otherwise I think
this is ready for 'next'.

* jc/fix-tree-walk (2009-09-14) 10 commits.
 - read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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
 + unpack_callback(): use unpack_failed() consistently
 + unpack-trees: typofix
 + diff-lib.c: fix misleading comments on oneway_diff()

This is my replacement for Linus's lt/maint-traverse-trees-fix patch.  It
is not so much as a counter-proposal; I originally thought it might make
sense to walk the index and drive the walker to return the entries from
trees to match entries from the index, but I ended up doing pretty much
what Linus outlined --- walk the trees, and have the index walker follow
it.  It turned out that the index side also needed some hairy look-ahead,

This includes the fix to aggressive mode of three-way merge used by the
resolve strategy.

* jh/notes (2009-10-09) 22 commits.
 - fast-import: Proper notes tree manipulation using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Add selftests verifying concatenation of multiple notes for the same commit
 - Refactor notes code to concatenate multiple notes annotating the same object
 - Add selftests verifying that we can parse notes trees with various fanouts
 - Teach the notes lookup code to parse notes trees with various fanout schemes
 - Teach notes code to free its internal data structures on request
 - Add '%N'-format for pretty-printing commit notes
 - Add flags to get_commit_notes() to control the format of the note string
 - t3302-notes-index-expensive: Speed up create_repo()
 - fast-import: Add support for importing commit notes
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

Rebased so that it does not pull in anything else.  Presumably it is ready
for next?

* jn/gitweb-blame (2009-09-01) 5 commits.
 - gitweb: Minify gitweb.js if JSMIN is defined
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame.  Probably the first three should go to 'master' by now?

* nd/sparse (2009-08-20) 19 commits.
 - sparse checkout: inhibit empty worktree
 - Add tests for sparse checkout
 - read-tree: add --no-sparse-checkout to disable sparse checkout support
 - unpack-trees(): ignore worktree check outside checkout area
 - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 - unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 - unpack-trees.c: generalize verify_* functions
 - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 - Introduce "sparse checkout"
 - dir.c: export excluded_1() and add_excludes_from_file_1()
 - excluded_1(): support exclude files in index
 - unpack-trees(): carry skip-worktree bit over in merged_entry()
 - Read .gitignore from index if it is skip-worktree
 - Avoid writing to buffer in add_excludes_from_file_1()
 - Teach Git to respect skip-worktree bit (writing part)
 - Teach Git to respect skip-worktree bit (reading part)
 - Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 - Add test-index-version
 - update-index: refactor mark_valid() in preparation for new options

--------------------------------------------------
[For 1.7.0]

* jk/1.7.0-status (2009-09-05) 5 commits.
 - docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[I have been too busy to purge these]

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Maybe some people care about this.  I dunno.

* jg/log-format-body-indent (2009-09-19) 1 commit.
 . git-log --format: Add %B tag with %B(x) option

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Oct 2009, #05; Wed, 28)
@ 2009-10-28 21:11  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-10-28 21:11 UTC (permalink / raw)
  To: git

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planeed changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * git-send-email won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * git-status won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git-diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

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

* jc/fsck-default-full (2009-10-20) 1 commit
 + fsck: default to "git fsck --full"

* jc/maint-fix-unpack-zlib-check (2009-10-21) 1 commit.
 + Fix incorrect error check while reading deflated pack data

* jc/receive-pack-auto (2009-10-20) 2 commits.
 + receive-pack: run "gc --auto --quiet" and optionally "update-server-info"
 + gc --auto --quiet: make the notice a bit less verboase

* bg/clone-doc (2009-10-20) 1 commit.
 + git-clone.txt: Fix grammar and formatting

* iv/tar-lzma-xz (2009-10-20) 1 commit.
 + import-tars: Add support for tarballs compressed with lzma, xz

* jk/maint-cvsimport-pathname (2009-10-19) 1 commit.
 + cvsimport: fix relative argument filenames

* sb/gitweb-link-author (2009-10-15) 1 commit
 + gitweb: linkify author/committer names with search

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

* jp/dirty-describe (2009-10-21) 1 commit.
 - Teach "git describe" --dirty option

Soon in 'next'.

* jp/fetch-cull-many-refs (2009-10-25) 2 commits
 - fetch: Speed up fetch of large numbers of refs
 - remote: Make ref_remove_duplicates faster for large numbers of refs

* bg/format-patch-p-noop (2009-10-25) 3 commits.
 - format-patch documentation: Fix formatting
 - format-patch documentation: Remove diff options that are not useful
 - format-patch: Make implementation and documentation agree

* jk/gitignore-anchored (2009-10-26) 1 commit
 - gitignore: root most patterns at the top-level directory

* jk/maint-add-p-empty (2009-10-27) 1 commit.
 - add-interactive: handle deletion of empty files

Soon in 'next'.

* jk/maint-push-config (2009-10-25) 1 commit.
 - push: always load default config

Soon in 'next'.

* lt/revision-bisect (2009-10-27) 1 commit.
 - Add '--bisect' revision machinery argument

* mh/maint-diff-color-words (2009-10-28) 3 commits
 - diff: fix the location of hunk headers for "git diff --color-words -U0"
 - diff: move the handling of the hunk header after the changed lines
 - t4034-diff-words: add a test for word diff without context

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

* tr/filter-branch (2009-10-21) 2 commits.
 - filter-branch: nearest-ancestor rewriting outside subdir filter
 - filter-branch: stop special-casing $filter_subdir argument

J6t already has some comments on this.

* mr/gitweb-snapshot (2009-09-26) 2 commits.
 - gitweb: append short hash ids to snapshot files
  (merged to 'next' on 2009-10-11 at 22ba047)
 + gitweb: check given hash before trying to create snapshot

Jakub says the tip one needs updates.

* ne/rev-cache (2009-10-19) 7 commits.
 - support for commit grafts, slight change to general mechanism
 - support for path name caching in rev-cache
 - full integration of rev-cache into git, completed test suite
 - administrative functions for rev-cache, start of integration into git
 - support for non-commit object caching in rev-cache
 - basic revision cache system, no integration or features
 - man page and technical discussion for rev-cache

The author indicated that there is another round coming.

* jl/submodule-add-noname (2009-09-22) 1 commit.
 - git submodule add: make the <path> parameter optional

Dscho started an interesting discussion regarding the larger workflow in
which the "submodule add" is used.  I think the patch itself makes sense
but at the same time it probably makes sense to also take the <path> and
infer the <repository> as Dscho suggested, probably in "git submodule
add", not in "git add" proper, at least initially.

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

???

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

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

* db/vcs-helper-rest (2009-10-27) 7 commits.
 - Fix memory leak in helper method for disconnect
 - Allow helpers to report in "list" command that the ref is unchanged
 - Add support for "import" helper command
 - Add a config option for remotes to specify a foreign vcs
 - Allow programs to not depend on remotes having urls
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 (this branch is used by jh/cvs-helper.)

Queued a fix-up.

* jh/cvs-helper (2009-08-18) 8 commits.
 - More fixes to the git-remote-cvs installation procedure
 - Fix the Makefile-generated path to the git_remote_cvs package in git-remote-cvs
 - Add simple selftests of git-remote-cvs functionality
 - git-remote-cvs: Remote helper program for CVS repositories
 - 2/2: Add Python support library for CVS remote helper
 - 1/2: Add Python support library for CVS remote helper
 - Basic build infrastructure for Python scripts
 - Allow helpers to request marks for fast-import
 (this branch uses db/vcs-helper-rest.)

This depends on the above.

* cb/doc-fetch-pull-merge (2009-10-21) 1 commit.
  (merged to 'next' on 2009-10-21 at 1d9190d)
 + modernize fetch/merge/pull examples

Soon in 'master'.

* ja/fetch-doc (2009-10-22) 3 commits.
  (merged to 'next' on 2009-10-22 at 8868407)
 + Documentation/merge-options.txt: order options in alphabetical groups
 + Documentation/git-pull.txt: Add subtitles above included option files
  (merged to 'next' on 2009-10-21 at bf09f62)
 + Documentation/fetch-options.txt: order options alphabetically

Soon in 'master'.

* tr/maint-roff-quote (2009-10-22) 1 commit.
  (merged to 'next' on 2009-10-22 at 14c5631)
 + Quote ' as \(aq in manpages

Soon in 'master'.

* rs/pretty-wrap (2009-10-17) 1 commit
 - Implement wrap format %w() as if it is a mode switch
 (this branch uses js/log-rewrap.)

* jc/pretty-lf (2009-10-04) 1 commit.
 - Pretty-format: %[+-]x to tweak inter-item newlines

* js/log-rewrap (2009-10-18) 3 commits
 - Teach --wrap to only indent without wrapping
 - Add strbuf_add_wrapped_text() to utf8.[ch]
 - print_wrapped_text(): allow hard newlines
 (this branch is used by rs/pretty-wrap.)

Before discarding jc/strbuf-nested-expand, I cherry-picked the tip of it
to this series.

* sr/blame-incomplete (2009-10-19) 1 commit.
  (merged to 'next' on 2009-10-22 at 133e0ce)
 + blame: make sure that the last line ends in an LF

I think this is _good enough_ as-is; although it would be better if we
added some hint to the output for Porcelain implementations, that can be
done as a follow-up fix.

* ak/bisect-reset-to-switch (2009-10-13) 1 commit.
  (merged to 'next' on 2009-10-22 at 592fff3)
 + bisect reset: Allow resetting to any commit, not just a branch

Soon in 'master'.

* fc/doc-fast-forward (2009-10-24) 1 commit.
 - Use 'fast-forward' all over the place

* jc/maint-1.6.3-graft-trailing-space (2009-10-14) 1 commit.
  (merged to 'next' on 2009-10-22 at 90ccac6)
 + info/grafts: allow trailing whitespaces at the end of line

Soon in 'master'.

* jn/show-normalized-refs (2009-10-12) 3 commits.
  (merged to 'next' on 2009-10-23 at 332aad3)
 + check-ref-format: simplify --print implementation
 + git check-ref-format --print
 + Add tests for git check-ref-format

Soon in 'master'.

* jc/checkout-auto-track (2009-10-18) 3 commits
  (merged to 'next' on 2009-10-23 at ff7e8f3)
 + git checkout --no-guess
 + DWIM "git checkout frotz" to "git checkout -b frotz origin/frotz"
 + check_filename(): make verify_filename() callable without dying

The final shape of this series ended up to be more or less exactly what
Dscho hinted he wanted to have in one of the discussion.

Soon in 'master'.

* tr/stash-format (2009-10-19) 5 commits
  (merged to 'next' on 2009-10-23 at 6c551c3)
 + stash list: drop the default limit of 10 stashes
 + stash list: use new %g formats instead of sed
 + Introduce new pretty formats %g[sdD] for reflog information
 + reflog-walk: refactor the branch@{num} formatting
 + Refactor pretty_print_commit arguments into a struct

Soon in 'master'.

* ks/precompute-completion (2009-10-26) 3 commits.
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

* sp/smart-http (2009-10-25) 24 commits
 - remote-helpers: return successfully if everything up-to-date
 - update http tests according to remote-curl capabilities
 - http-backend: more explict LocationMatch
 - http-backend: add example for gitweb on same URL
 - http-backend: use mod_alias instead of mod_rewrite
 - http-backend: reword some documentation
 - http-backend: add GIT_PROJECT_ROOT environment var
 - Smart HTTP fetch: gzip requests
 - Smart fetch over HTTP: client side
 - Smart push over HTTP: client side
 - Discover refs via smart HTTP server when available
 - Smart fetch and push over HTTP: server side
 - Add stateless RPC options to upload-pack, receive-pack
 - Git-aware CGI to provide dumb HTTP transport
 - Move WebDAV HTTP push under remote-curl
 - remote-helpers: Support custom transport options
 - remote-helpers: Fetch more than one ref in a batch
 - fetch: Allow transport -v -v -v to set verbosity to 3
 - remote-curl: Refactor walker initialization
 - Add multi_ack_detailed capability to fetch-pack/upload-pack
 - Move "get_ack()" back to fetch-pack
 - fetch-pack: Use a strbuf to compose the want list
 - pkt-line: Make packet_read_line easier to debug
 - pkt-line: Add strbuf based functions

Shawn plans another round of re-roll.

* ef/msys-imap (2009-10-22) 9 commits.
 - Windows: use BLK_SHA1 again
 - MSVC: Enable OpenSSL, and translate -lcrypto
 - mingw: enable OpenSSL
 - mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle
 - imap-send: build imap-send on Windows
 - imap-send: fix compilation-error on Windows
 - imap-send: use run-command API for tunneling
 - imap-send: use separate read and write fds
 - imap-send: remove useless uid code

This is pulled from J6t; I'll merge it to 'next' if Dscho is Ok with it.

* js/diff-verbose-submodule (2009-10-23) 2 commits.
  (merged to 'next' on 2009-10-23 at e479773)
 + add tests for git diff --submodule
 + Add the --submodule option to the diff option family

Soon in 'master'.

* jc/fix-tree-walk (2009-10-22) 11 commits.
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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
 + unpack_callback(): use unpack_failed() consistently
 + unpack-trees: typofix
 + diff-lib.c: fix misleading comments on oneway_diff()

This has some stupid bugs and temporarily reverted from 'next' until I can
fix it.

* jh/notes (2009-10-09) 22 commits.
 - fast-import: Proper notes tree manipulation using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Add selftests verifying concatenation of multiple notes for the same commit
 - Refactor notes code to concatenate multiple notes annotating the same object
 - Add selftests verifying that we can parse notes trees with various fanouts
 - Teach the notes lookup code to parse notes trees with various fanout schemes
 - Teach notes code to free its internal data structures on request
 - Add '%N'-format for pretty-printing commit notes
 - Add flags to get_commit_notes() to control the format of the note string
 - t3302-notes-index-expensive: Speed up create_repo()
 - fast-import: Add support for importing commit notes
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

I think Johan indicated that early parts of it is ready for 'next', so I
may do so up to "Add selftests" one.

* jn/gitweb-blame (2009-09-01) 5 commits.
 - gitweb: Minify gitweb.js if JSMIN is defined
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame.  Probably the first three should go to 'master' by now?

* nd/sparse (2009-08-20) 19 commits.
 - sparse checkout: inhibit empty worktree
 - Add tests for sparse checkout
 - read-tree: add --no-sparse-checkout to disable sparse checkout support
 - unpack-trees(): ignore worktree check outside checkout area
 - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 - unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 - unpack-trees.c: generalize verify_* functions
 - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 - Introduce "sparse checkout"
 - dir.c: export excluded_1() and add_excludes_from_file_1()
 - excluded_1(): support exclude files in index
 - unpack-trees(): carry skip-worktree bit over in merged_entry()
 - Read .gitignore from index if it is skip-worktree
 - Avoid writing to buffer in add_excludes_from_file_1()
 - Teach Git to respect skip-worktree bit (writing part)
 - Teach Git to respect skip-worktree bit (reading part)
 - Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 - Add test-index-version
 - update-index: refactor mark_valid() in preparation for new options

--------------------------------------------------
[For 1.7.0]

* jc/1.7.0-no-commit-no-ff-2 (2009-10-22) 1 commit.
 - git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  I haven't described this at the beginning of this message
yet, as it is not clear if this change is even necessary.  Opinions?

* jk/1.7.0-status (2009-09-05) 5 commits.
 - docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

The tip one is not in 'next' as I have been hoping that somebody may want
to change the code to make it unnecessary, but it does not seem to be
happening, so probably it should also go to 'next'.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[I have been too busy to purge these]

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Maybe some people care about this.  I dunno.

* jg/log-format-body-indent (2009-09-19) 1 commit.
 . git-log --format: Add %B tag with %B(x) option

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Oct 2009, #06; Fri, 30)
@ 2009-10-31  4:04  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-10-31  4:04 UTC (permalink / raw)
  To: git

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planeed changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * git-send-email won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * git-status won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git-diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

The tests do not pass with three series at the tip of tonight's 'pu' branch.

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

* cb/doc-fetch-pull-merge (2009-10-21) 1 commit.
  (merged to 'next' on 2009-10-21 at 1d9190d)
 + modernize fetch/merge/pull examples

* ja/fetch-doc (2009-10-22) 3 commits.
  (merged to 'next' on 2009-10-22 at 8868407)
 + Documentation/merge-options.txt: order options in alphabetical groups
 + Documentation/git-pull.txt: Add subtitles above included option files
  (merged to 'next' on 2009-10-21 at bf09f62)
 + Documentation/fetch-options.txt: order options alphabetically

* tr/maint-roff-quote (2009-10-22) 1 commit.
  (merged to 'next' on 2009-10-22 at 14c5631)
 + Quote ' as \(aq in manpages

* ak/bisect-reset-to-switch (2009-10-13) 1 commit.
  (merged to 'next' on 2009-10-22 at 592fff3)
 + bisect reset: Allow resetting to any commit, not just a branch

* jc/maint-1.6.3-graft-trailing-space (2009-10-14) 1 commit.
  (merged to 'next' on 2009-10-22 at 90ccac6)
 + info/grafts: allow trailing whitespaces at the end of line

* jn/show-normalized-refs (2009-10-12) 3 commits.
  (merged to 'next' on 2009-10-23 at 332aad3)
 + check-ref-format: simplify --print implementation
 + git check-ref-format --print
 + Add tests for git check-ref-format

* jc/checkout-auto-track (2009-10-18) 3 commits
  (merged to 'next' on 2009-10-23 at ff7e8f3)
 + git checkout --no-guess
 + DWIM "git checkout frotz" to "git checkout -b frotz origin/frotz"
 + check_filename(): make verify_filename() callable without dying

The final shape of this series ended up to be more or less exactly what
Dscho hinted he wanted to have in one of the discussion.

* tr/stash-format (2009-10-19) 5 commits
  (merged to 'next' on 2009-10-23 at 6c551c3)
 + stash list: drop the default limit of 10 stashes
 + stash list: use new %g formats instead of sed
 + Introduce new pretty formats %g[sdD] for reflog information
 + reflog-walk: refactor the branch@{num} formatting
 + Refactor pretty_print_commit arguments into a struct

* js/diff-verbose-submodule (2009-10-23) 2 commits.
  (merged to 'next' on 2009-10-23 at e479773)
 + add tests for git diff --submodule
 + Add the --submodule option to the diff option family

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

* bg/merge-ff-only (2009-10-29) 1 commit
 - Teach 'git merge' and 'git pull' the option --ff-only

Soon in 'next'.

* jk/maint-1.6.3-ls-files-i (2009-10-30) 1 commit.
 - ls-files: unbreak "ls-files -i"

Soon in 'next'.

* jn/editor-pager (2009-10-30) 8 commits
 - Provide a build time default-pager setting
 - Provide a build time default-editor setting
 - am -i, git-svn: use "git var GIT_PAGER"
 - add -i, send-email, svn, p4, etc: use "git var GIT_EDITOR"
 - Teach git var about GIT_PAGER
 - Teach git var about GIT_EDITOR
 - Do not use VISUAL editor on dumb terminals
 - Handle more shell metacharacters in editor names

Does not seem to pass t3404 by itself.

* js/maint-diff-color-words (2009-10-30) 3 commits.
 - (pu) cleanup with diff_words_flush()
 - diff --color-words -U0: fix the location of hunk headers
 - t4034-diff-words: add a test for word diff without context

Replaces mh/maint-diff-color-words.  The tip one is my "at least it would
be a bit more readable this way" patch without proper commit log message.

* sc/difftool-p4merge (2009-10-28) 1 commit
 - mergetool--lib: add p4merge as a pre-configured mergetool option

Soon in 'next'.

* sc/protocol-doc (2009-10-29) 1 commit
 - Update packfile transfer protocol documentation

Expecting replacement.

* sr/vcs-helper (2009-10-29) 19 commits
 - .gitignore: add git-remote-cvs
 - Refactor git_remote_cvs to a more generic git_remote_helpers
 - More fixes to the git-remote-cvs installation procedure
 - Fix the Makefile-generated path to the git_remote_cvs package in git-remote-cvs
 - Add simple selftests of git-remote-cvs functionality
 - git-remote-cvs: Remote helper program for CVS repositories
 - 2/2: Add Python support library for CVS remote helper
 - 1/2: Add Python support library for CVS remote helper
 - Basic build infrastructure for Python scripts
 - Allow helpers to request marks for fast-import
 - Introduce <vcs>::<url> syntax for remote url
 - Fix memory leak in helper method for disconnect
 - Allow helpers to report in "list" command that the ref is unchanged
 - Factor ref updating out of fetch_with_import
 - Add support for "import" helper command
 - Add a config option for remotes to specify a foreign vcs
 - Allow programs to not depend on remotes having urls
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid

Supposed to replace db/vcs-helper-rest and jh/cvs-helper but expecting
replacement.   Does not pass selftest yet (e.g. t9801).

* tr/describe-advice (2009-10-28) 1 commit
 - describe: when failing, tell the user about options that work

Soon in 'next'.

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

* tr/filter-branch (2009-10-28) 2 commits.
 - filter-branch: nearest-ancestor rewriting outside subdir filter
 - filter-branch: stop special-casing $filter_subdir argument

J6t has some comments on this.

* ne/rev-cache (2009-10-19) 7 commits.
 - support for commit grafts, slight change to general mechanism
 - support for path name caching in rev-cache
 - full integration of rev-cache into git, completed test suite
 - administrative functions for rev-cache, start of integration into git
 - support for non-commit object caching in rev-cache
 - basic revision cache system, no integration or features
 - man page and technical discussion for rev-cache

The author indicated that there is another round coming.  Does not seem to
pass the tests when merged to 'pu'.

* jl/submodule-add-noname (2009-09-22) 1 commit.
 - git submodule add: make the <path> parameter optional

Dscho started an interesting discussion regarding the larger workflow in
which the "submodule add" is used.  I think the patch itself makes sense
but at the same time it probably makes sense to also take the <path> and
infer the <repository> as Dscho suggested, probably in "git submodule
add", not in "git add" proper, at least initially.

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

Seems to be moving again soon.

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

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

* mr/gitweb-snapshot (2009-10-29) 3 commits.
 - gitweb: Smarter snapshot names
 - t/gitweb-lib.sh: Split gitweb output into headers and body
  (merged to 'next' on 2009-10-11 at 22ba047)
 + gitweb: check given hash before trying to create snapshot

Replaced the tip with Jakub's updates.

* jp/dirty-describe (2009-10-21) 1 commit.
  (merged to 'next' on 2009-10-30 at 19c7fc7)
 + Teach "git describe" --dirty option

* jp/fetch-cull-many-refs (2009-10-25) 2 commits
 - fetch: Speed up fetch of large numbers of refs
 - remote: Make ref_remove_duplicates faster for large numbers of refs

* bg/format-patch-p-noop (2009-10-25) 3 commits.
  (merged to 'next' on 2009-10-30 at e34a3db)
 + format-patch documentation: Fix formatting
 + format-patch documentation: Remove diff options that are not useful
 + format-patch: Make implementation and documentation agree

* jk/gitignore-anchored (2009-10-26) 1 commit
  (merged to 'next' on 2009-10-30 at 9391a93)
 + gitignore: root most patterns at the top-level directory

* jk/maint-add-p-empty (2009-10-27) 1 commit.
  (merged to 'next' on 2009-10-30 at 2bd302f)
 + add-interactive: handle deletion of empty files

* jk/maint-push-config (2009-10-25) 1 commit.
  (merged to 'next' on 2009-10-30 at 934e3c5)
 + push: always load default config

* lt/revision-bisect (2009-10-27) 1 commit.
  (merged to 'next' on 2009-10-30 at 81ee52b)
 + Add '--bisect' revision machinery argument

* jc/pretty-lf (2009-10-04) 1 commit.
 - Pretty-format: %[+-]x to tweak inter-item newlines

* rs/pretty-wrap (2009-10-17) 1 commit
  (merged to 'next' on 2009-10-30 at 403bbfe)
 + Implement wrap format %w() as if it is a mode switch
 (this branch uses js/log-rewrap.)

* js/log-rewrap (2009-10-18) 3 commits
  (merged to 'next' on 2009-10-30 at 403bbfe)
 + Teach --wrap to only indent without wrapping
 + Add strbuf_add_wrapped_text() to utf8.[ch]
 + print_wrapped_text(): allow hard newlines
 (this branch is used by rs/pretty-wrap.)

* sr/blame-incomplete (2009-10-19) 1 commit.
  (merged to 'next' on 2009-10-22 at 133e0ce)
 + blame: make sure that the last line ends in an LF

I think this is _good enough_ as-is; although it would be better if we
added some hint to the output for Porcelain implementations, that can be
done as a follow-up fix.

* fc/doc-fast-forward (2009-10-24) 1 commit.
 - Use 'fast-forward' all over the place

* ks/precompute-completion (2009-10-26) 3 commits.
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

* sp/smart-http (2009-10-30) 28 commits
 - test smart http fetch and push
 - http tests: use /dumb/ URL prefix
 - set httpd port before sourcing lib-httpd
 - t5540-http-push: remove redundant fetches
 - Smart HTTP fetch: gzip requests
 - Smart fetch over HTTP: client side
 - Smart push over HTTP: client side
 - Discover refs via smart HTTP server when available
 - http-backend: more explict LocationMatch
 - http-backend: add example for gitweb on same URL
 - http-backend: use mod_alias instead of mod_rewrite
 - http-backend: reword some documentation
 - http-backend: add GIT_PROJECT_ROOT environment var
 - Smart fetch and push over HTTP: server side
 - Add stateless RPC options to upload-pack, receive-pack
 - Git-aware CGI to provide dumb HTTP transport
 - remote-helpers: return successfully if everything up-to-date
 - Move WebDAV HTTP push under remote-curl
 - remote-helpers: Support custom transport options
 - remote-helpers: Fetch more than one ref in a batch
 - fetch: Allow transport -v -v -v to set verbosity to 3
 - remote-curl: Refactor walker initialization
 - Add multi_ack_detailed capability to fetch-pack/upload-pack
 - Move "get_ack()" back to fetch-pack
 - fetch-pack: Use a strbuf to compose the want list
 - pkt-line: Make packet_read_line easier to debug
 - pkt-line: Add strbuf based functions
 - http-push: fix check condition on http.c::finish_http_pack_request()

v5

* ef/msys-imap (2009-10-22) 9 commits.
 - Windows: use BLK_SHA1 again
 - MSVC: Enable OpenSSL, and translate -lcrypto
 - mingw: enable OpenSSL
 - mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle
 - imap-send: build imap-send on Windows
 - imap-send: fix compilation-error on Windows
 - imap-send: use run-command API for tunneling
 - imap-send: use separate read and write fds
 - imap-send: remove useless uid code

This is pulled from J6t; I'll merge it to 'next' if Dscho is Ok with it.

* jc/fix-tree-walk (2009-10-22) 11 commits.
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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
 + unpack_callback(): use unpack_failed() consistently
 + unpack-trees: typofix
 + diff-lib.c: fix misleading comments on oneway_diff()

This has some stupid bugs and temporarily reverted from 'next' until I can
fix it.

* jh/notes (2009-10-09) 22 commits.
 - fast-import: Proper notes tree manipulation using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Add selftests verifying concatenation of multiple notes for the same commit
 - Refactor notes code to concatenate multiple notes annotating the same object
 - Add selftests verifying that we can parse notes trees with various fanouts
 - Teach the notes lookup code to parse notes trees with various fanout schemes
 - Teach notes code to free its internal data structures on request
 - Add '%N'-format for pretty-printing commit notes
 - Add flags to get_commit_notes() to control the format of the note string
 - t3302-notes-index-expensive: Speed up create_repo()
 - fast-import: Add support for importing commit notes
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

I think Johan indicated that early parts of it is ready for 'next', so I
may do so up to "Add selftests" one.

* jn/gitweb-blame (2009-09-01) 5 commits.
 - gitweb: Minify gitweb.js if JSMIN is defined
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame.

* nd/sparse (2009-08-20) 19 commits.
 - sparse checkout: inhibit empty worktree
 - Add tests for sparse checkout
 - read-tree: add --no-sparse-checkout to disable sparse checkout support
 - unpack-trees(): ignore worktree check outside checkout area
 - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 - unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 - unpack-trees.c: generalize verify_* functions
 - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 - Introduce "sparse checkout"
 - dir.c: export excluded_1() and add_excludes_from_file_1()
 - excluded_1(): support exclude files in index
 - unpack-trees(): carry skip-worktree bit over in merged_entry()
 - Read .gitignore from index if it is skip-worktree
 - Avoid writing to buffer in add_excludes_from_file_1()
 - Teach Git to respect skip-worktree bit (writing part)
 - Teach Git to respect skip-worktree bit (reading part)
 - Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 - Add test-index-version
 - update-index: refactor mark_valid() in preparation for new options

--------------------------------------------------
[For 1.7.0]

* jc/1.7.0-no-commit-no-ff-2 (2009-10-22) 1 commit.
 - git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  I haven't described this at the beginning of this message
yet, as it is not clear if this change is even necessary.  Opinions?

* jk/1.7.0-status (2009-09-05) 5 commits.
 - docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

The tip one is not in 'next' as I have been hoping that somebody may want
to change the code to make it unnecessary, but it does not seem to be
happening, so probably it should also go to 'next'.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[I have been too busy to purge these]

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Maybe some people care about this.  I dunno.

* jg/log-format-body-indent (2009-09-19) 1 commit.
 . git-log --format: Add %B tag with %B(x) option

* mh/maint-diff-color-words (2009-10-28) 3 commits
 . diff: fix the location of hunk headers for "git diff --color-words -U0"
 . diff: move the handling of the hunk header after the changed lines
 . t4034-diff-words: add a test for word diff without context

Ejected; js/maint-diff-color-words replaces this.

* db/vcs-helper-rest (2009-10-27) 7 commits.
 . Fix memory leak in helper method for disconnect
 . Allow helpers to report in "list" command that the ref is unchanged
 . Add support for "import" helper command
 . Add a config option for remotes to specify a foreign vcs
 . Allow programs to not depend on remotes having urls
 . Allow fetch to modify refs
 . Use a function to determine whether a remote is valid
 (this branch is used by jh/cvs-helper.)

* jh/cvs-helper (2009-08-18) 8 commits.
 . More fixes to the git-remote-cvs installation procedure
 . Fix the Makefile-generated path to the git_remote_cvs package in git-remote-cvs
 . Add simple selftests of git-remote-cvs functionality
 . git-remote-cvs: Remote helper program for CVS repositories
 . 2/2: Add Python support library for CVS remote helper
 . 1/2: Add Python support library for CVS remote helper
 . Basic build infrastructure for Python scripts
 . Allow helpers to request marks for fast-import
 (this branch uses db/vcs-helper-rest.)

Ejected; sr/vcs-helper is supposed to replace these two.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Nov 2009, #01; Wed, 04)
@ 2009-11-05  5:41  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-11-05  5:41 UTC (permalink / raw)
  To: git

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planeed changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * git-send-email won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * git-status won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git-diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

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

* bw/autoconf-more (2009-11-04) 2 commits
 - configure: add settings for gitconfig, editor and pager
 - configure: add macro to set arbitrary make variables

* em/commit-claim (2009-11-04) 1 commit
 - commit -c/-C/--amend: reset timestamp and authorship to committer with --reset-author

I just picked better bits from both versions.

* jk/maint-format-patch-p-suppress-stat (2009-11-04) 2 commits.
 - format-patch: make "-p" suppress diffstat
 - Revert "format-patch -p is now a no-op" series
 (this branch uses bg/format-patch-p-noop.)

This corrects a mistake made soon after 1.6.0.

* rj/maint-simplify-cygwin-makefile (2009-10-27) 1 commit.
 - Makefile: merge two Cygwin configuration sections into one

This is one of the most obviously correct bit from "Compiling on Cygwin
using MSVC fails" topic I didn't really look at.  If J6t is Ok with the
series, I don't mind queueing the whole thing myself.

* vl/maint-openssl-signature-change (2009-10-31) 1 commit.
  (merged to 'next' on 2009-10-31 at 0e1ce6b)
 + imap-send.c: fix compiler warnings for OpenSSL 1.0

Prepare ourselves before newer versions of OpenSSL hits more platforms.

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

* tr/filter-branch (2009-10-28) 2 commits.
 - filter-branch: nearest-ancestor rewriting outside subdir filter
 - filter-branch: stop special-casing $filter_subdir argument

J6t had some comments on this.

* ne/rev-cache (2009-10-19) 7 commits.
 - support for commit grafts, slight change to general mechanism
 - support for path name caching in rev-cache
 - full integration of rev-cache into git, completed test suite
 - administrative functions for rev-cache, start of integration into git
 - support for non-commit object caching in rev-cache
 - basic revision cache system, no integration or features
 - man page and technical discussion for rev-cache

The author indicated that there is another round coming.  Does not seem to
pass the tests when merged to 'pu'.

* jl/submodule-add-noname (2009-09-22) 1 commit.
 - git submodule add: make the <path> parameter optional

Dscho started an interesting discussion regarding the larger workflow in
which the "submodule add" is used.  I think the patch itself makes sense
but at the same time it probably makes sense to also take the <path> and
infer the <repository> as Dscho suggested, probably in "git submodule
add", not in "git add" proper, at least initially.

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

Seems to be moving again soon.

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

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

* bg/merge-ff-only (2009-10-29) 1 commit
  (merged to 'next' on 2009-10-31 at b6b49aa)
 + Teach 'git merge' and 'git pull' the option --ff-only

* jk/maint-1.6.3-ls-files-i (2009-10-30) 1 commit.
  (merged to 'next' on 2009-10-31 at 3a31fcc)
 + ls-files: unbreak "ls-files -i"

* jn/editor-pager (2009-10-30) 8 commits
 - Provide a build time default-pager setting
 - Provide a build time default-editor setting
 - am -i, git-svn: use "git var GIT_PAGER"
 - add -i, send-email, svn, p4, etc: use "git var GIT_EDITOR"
 - Teach git var about GIT_PAGER
 - Teach git var about GIT_EDITOR
 - Do not use VISUAL editor on dumb terminals
 - Handle more shell metacharacters in editor names

* js/maint-diff-color-words (2009-10-30) 3 commits.
 - diff --color-words: bit of clean-up
 - diff --color-words -U0: fix the location of hunk headers
 - t4034-diff-words: add a test for word diff without context

Fixes a corner case of running --color-words with -U0.

* sc/difftool-p4merge (2009-10-28) 1 commit
  (merged to 'next' on 2009-10-31 at 194b5c5)
 + mergetool--lib: add p4merge as a pre-configured mergetool option

* sc/protocol-doc (2009-10-29) 1 commit
 - Update packfile transfer protocol documentation

There is the final draft posted, but I haven't picked it up yet.

* sr/vcs-helper (2009-11-04) 13 commits
 - Add Python support library for remote helpers
 - Basic build infrastructure for Python scripts
 - Allow helpers to request the path to the .git directory
 - Allow helpers to report in "list" command that the ref is unchanged
 - Honour the refspec when updating refs after import
 - Write local refs written by the "import" helper command only once
 - Add support for "import" helper command
 - Allow specifying the remote helper in the url
 - Add a config option for remotes to specify a foreign vcs
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 - Allow programs to not depend on remotes having urls
 - Fix memory leak in helper method for disconnect

Supposed to replace db/vcs-helper-rest.  Still does not pass tests in
'pu'.

* tr/describe-advice (2009-10-28) 1 commit
  (merged to 'next' on 2009-10-31 at 8084850)
 + describe: when failing, tell the user about options that work

* mr/gitweb-snapshot (2009-10-29) 3 commits.
 - gitweb: Smarter snapshot names
 - t/gitweb-lib.sh: Split gitweb output into headers and body
  (merged to 'next' on 2009-10-11 at 22ba047)
 + gitweb: check given hash before trying to create snapshot

Replaced the tip with Jakub's updates.

* jp/dirty-describe (2009-10-21) 1 commit.
  (merged to 'next' on 2009-10-30 at 19c7fc7)
 + Teach "git describe" --dirty option

* jp/fetch-cull-many-refs (2009-10-25) 2 commits
  (merged to 'next' on 2009-11-01 at 1f09ce9)
 + fetch: Speed up fetch of large numbers of refs
 + remote: Make ref_remove_duplicates faster for large numbers of refs

* bg/format-patch-p-noop (2009-10-25) 3 commits.
  (merged to 'next' on 2009-10-30 at e34a3db)
 + format-patch documentation: Fix formatting
 + format-patch documentation: Remove diff options that are not useful
 + format-patch: Make implementation and documentation agree
 (this branch is used by jk/maint-format-patch-p-suppress-stat.)

Will revert from 'next' by merging Peff's fix.

* jk/gitignore-anchored (2009-10-26) 1 commit
  (merged to 'next' on 2009-10-30 at 9391a93)
 + gitignore: root most patterns at the top-level directory

* jk/maint-add-p-empty (2009-10-27) 1 commit.
  (merged to 'next' on 2009-10-30 at 2bd302f)
 + add-interactive: handle deletion of empty files

* jk/maint-push-config (2009-10-25) 1 commit.
  (merged to 'next' on 2009-10-30 at 934e3c5)
 + push: always load default config

* lt/revision-bisect (2009-10-27) 1 commit.
  (merged to 'next' on 2009-10-30 at 81ee52b)
 + Add '--bisect' revision machinery argument

* jc/pretty-lf (2009-10-04) 1 commit.
 - Pretty-format: %[+-]x to tweak inter-item newlines

* rs/pretty-wrap (2009-10-17) 1 commit
  (merged to 'next' on 2009-10-30 at 403bbfe)
 + Implement wrap format %w() as if it is a mode switch
 (this branch uses js/log-rewrap.)

* js/log-rewrap (2009-10-18) 3 commits
  (merged to 'next' on 2009-10-30 at 403bbfe)
 + Teach --wrap to only indent without wrapping
 + Add strbuf_add_wrapped_text() to utf8.[ch]
 + print_wrapped_text(): allow hard newlines
 (this branch is used by rs/pretty-wrap.)

* sr/blame-incomplete (2009-10-19) 1 commit.
  (merged to 'next' on 2009-10-22 at 133e0ce)
 + blame: make sure that the last line ends in an LF

I think this is _good enough_ as-is; although it would be better if we
added some hint to the output for Porcelain implementations, that can be
done as a follow-up fix.

* fc/doc-fast-forward (2009-10-24) 1 commit.
  (merged to 'next' on 2009-11-01 at faaad90)
 + Use 'fast-forward' all over the place

* ks/precompute-completion (2009-10-26) 3 commits.
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

* sp/smart-http (2009-11-04) 30 commits
 - http-backend: Test configuration options
 - http-backend: Use http.getanyfile to disable dumb HTTP serving
 - test smart http fetch and push
 - http tests: use /dumb/ URL prefix
 - set httpd port before sourcing lib-httpd
 - t5540-http-push: remove redundant fetches
 - Smart HTTP fetch: gzip requests
 - Smart fetch over HTTP: client side
 - Smart push over HTTP: client side
 - Discover refs via smart HTTP server when available
 - http-backend: more explict LocationMatch
 - http-backend: add example for gitweb on same URL
 - http-backend: use mod_alias instead of mod_rewrite
 - http-backend: reword some documentation
 - http-backend: add GIT_PROJECT_ROOT environment var
 - Smart fetch and push over HTTP: server side
 - Add stateless RPC options to upload-pack, receive-pack
 - Git-aware CGI to provide dumb HTTP transport
 - remote-helpers: return successfully if everything up-to-date
 - Move WebDAV HTTP push under remote-curl
 - remote-helpers: Support custom transport options
 - remote-helpers: Fetch more than one ref in a batch
 - fetch: Allow transport -v -v -v to set verbosity to 3
 - remote-curl: Refactor walker initialization
 - Add multi_ack_detailed capability to fetch-pack/upload-pack
 - Move "get_ack()" back to fetch-pack
 - fetch-pack: Use a strbuf to compose the want list
 - pkt-line: Make packet_read_line easier to debug
 - pkt-line: Add strbuf based functions
 - http-push: fix check condition on http.c::finish_http_pack_request()

v5 plus 3 more fix-up patches from today.

* ef/msys-imap (2009-10-22) 9 commits.
  (merged to 'next' on 2009-10-31 at 8630603)
 + Windows: use BLK_SHA1 again
 + MSVC: Enable OpenSSL, and translate -lcrypto
 + mingw: enable OpenSSL
 + mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle
 + imap-send: build imap-send on Windows
 + imap-send: fix compilation-error on Windows
 + imap-send: use run-command API for tunneling
 + imap-send: use separate read and write fds
 + imap-send: remove useless uid code

* jc/fix-tree-walk (2009-10-22) 11 commits.
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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
 + unpack_callback(): use unpack_failed() consistently
 + unpack-trees: typofix
 + diff-lib.c: fix misleading comments on oneway_diff()

This has some stupid bugs and temporarily reverted from 'next' until I can
fix it, but the "temporarily" turned out to be very loooong.  Sigh...

* jh/notes (2009-10-09) 22 commits.
 - fast-import: Proper notes tree manipulation using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
  (merged to 'next' on 2009-11-01 at 948327a)
 + Add selftests verifying concatenation of multiple notes for the same commit
 + Refactor notes code to concatenate multiple notes annotating the same object
 + Add selftests verifying that we can parse notes trees with various fanouts
 + Teach the notes lookup code to parse notes trees with various fanout schemes
 + Teach notes code to free its internal data structures on request
 + Add '%N'-format for pretty-printing commit notes
 + Add flags to get_commit_notes() to control the format of the note string
 + t3302-notes-index-expensive: Speed up create_repo()
 + fast-import: Add support for importing commit notes
 + Teach "-m <msg>" and "-F <file>" to "git notes edit"
 + Add an expensive test for git-notes
 + Speed up git notes lookup
 + Add a script to edit/inspect notes
 + Introduce commit notes

* jn/gitweb-blame (2009-09-01) 5 commits.
 - gitweb: Minify gitweb.js if JSMIN is defined
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame.

* nd/sparse (2009-08-20) 19 commits.
 - sparse checkout: inhibit empty worktree
 - Add tests for sparse checkout
 - read-tree: add --no-sparse-checkout to disable sparse checkout support
 - unpack-trees(): ignore worktree check outside checkout area
 - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 - unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 - unpack-trees.c: generalize verify_* functions
 - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 - Introduce "sparse checkout"
 - dir.c: export excluded_1() and add_excludes_from_file_1()
 - excluded_1(): support exclude files in index
 - unpack-trees(): carry skip-worktree bit over in merged_entry()
 - Read .gitignore from index if it is skip-worktree
 - Avoid writing to buffer in add_excludes_from_file_1()
 - Teach Git to respect skip-worktree bit (writing part)
 - Teach Git to respect skip-worktree bit (reading part)
 - Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 - Add test-index-version
 - update-index: refactor mark_valid() in preparation for new options

--------------------------------------------------
[For 1.7.0]

* jc/1.7.0-no-commit-no-ff-2 (2009-10-22) 1 commit.
 - git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  I haven't described this at the beginning of this message
yet, as it is not clear if this change is even necessary.  Opinions?

* jk/1.7.0-status (2009-09-05) 5 commits.
 - docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

The tip one is not in 'next' as I have been hoping that somebody may want
to change the code to make it unnecessary, but it does not seem to be
happening, so probably it should also go to 'next'.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[I have been too busy to purge these]

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Maybe some people care about this.  I dunno.

* jg/log-format-body-indent (2009-09-19) 1 commit.
 . git-log --format: Add %B tag with %B(x) option

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Nov 2009, #02; Sun, 08)
@ 2009-11-09  5:18  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-11-09  5:18 UTC (permalink / raw)
  To: git

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planeed changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * git-send-email won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * git-status won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git-diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

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

* bw/autoconf-more (2009-11-04) 2 commits
 - configure: add settings for gitconfig, editor and pager
 - configure: add macro to set arbitrary make variables

* em/commit-claim (2009-11-04) 1 commit
 - commit -c/-C/--amend: reset timestamp and authorship to committer with --reset-author

I just picked better bits from both versions.

* jk/maint-format-patch-p-suppress-stat (2009-11-04) 1 commit.
  (merged to 'next' on 2009-11-08 at 0943296)
 + format-patch: make "-p" suppress diffstat
 (this branch is used by bg/format-patch-doc-update.)

* bg/format-patch-doc-update (2009-11-07) 3 commits.
 - format-patch documentation: Fix formatting
 - format-patch documentation: Remove diff options that are not useful
 - format-patch: Always generate a patch
 (this branch uses jk/maint-format-patch-p-suppress-stat.)

* rj/maint-simplify-cygwin-makefile (2009-10-27) 1 commit.
 - Makefile: merge two Cygwin configuration sections into one
 (this branch is used by rj/cygwin-msvc.)

This is one of the most obviously correct bit from "Compiling on Cygwin
using MSVC fails" topic.

* rj/cygwin-msvc (2009-11-07) 3 commits.
 - Add explicit Cygwin check to guard WIN32 header inclusion
 - MSVC: Add support for building with NO_MMAP
 - Makefile: keep MSVC and Cygwin configuration separate
 (this branch uses rj/maint-simplify-cygwin-makefile.)

* vl/maint-openssl-signature-change (2009-10-31) 1 commit.
  (merged to 'next' on 2009-10-31 at 0e1ce6b)
 + imap-send.c: fix compiler warnings for OpenSSL 1.0

Prepare ourselves before newer versions of OpenSSL hits more platforms.

* bg/fetch-multi (2009-11-08) 4 commits.
 - Re-implement 'git remote update' using 'git fetch'
 - Add the configure variable skipFetchAll
 - Teach the --multiple option to 'git fetch'
 - Teach the --all option to 'git fetch'

* bs/maint-pre-commit-hook-sample (2009-11-05) 1 commit.
  (merged to 'next' on 2009-11-06 at d70f646)
 + pre-commit.sample: Diff against the empty tree when HEAD is invalid

* cc/bisect-doc (2009-11-08) 1 commit
 - Documentation: add "Fighting regressions with git bisect" article

* jn/add-h-to-all-commands (2009-11-08) 1 commit.
 - Show usage string for 'git grep -h'

* pb/maint-gitweb-blob-lineno (2009-11-06) 1 commit.
  (merged to 'next' on 2009-11-06 at 27b86ec)
 + gitweb: Fix blob linenr links in pathinfo mode

* sb/tutorial-test (2009-11-06) 4 commits
 - t1200: prepare for merging with Fast-forward bikeshedding
 - t1200: further modernize test script style
 - t1200: Make documentation and test agree
 - t1200: cleanup and modernize test style

* pb/gitweb-no-project-list (2009-11-06) 3 commits.
 . gitweb: Polish the content tags support
 . gitweb: Support for no project list on gitweb front page
 . gitweb: Refactor project list routines

I picked these up but didn't queue as Warthog9's comments made certain
amount of sense to me.

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

* tr/filter-branch (2009-10-28) 2 commits.
 - filter-branch: nearest-ancestor rewriting outside subdir filter
 - filter-branch: stop special-casing $filter_subdir argument

J6t had some comments on this.

* jl/submodule-add-noname (2009-09-22) 1 commit.
 - git submodule add: make the <path> parameter optional

Dscho started an interesting discussion regarding the larger workflow in
which the "submodule add" is used.  I think the patch itself makes sense
but at the same time it probably makes sense to also take the <path> and
infer the <repository> as Dscho suggested, probably in "git submodule
add", not in "git add" proper, at least initially.

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

Seems to be moving again soon.

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

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

* bg/merge-ff-only (2009-10-29) 1 commit
  (merged to 'next' on 2009-10-31 at b6b49aa)
 + Teach 'git merge' and 'git pull' the option --ff-only

* jk/maint-1.6.3-ls-files-i (2009-10-30) 1 commit.
  (merged to 'next' on 2009-10-31 at 3a31fcc)
 + ls-files: unbreak "ls-files -i"

* jn/editor-pager (2009-10-30) 8 commits
 - Provide a build time default-pager setting
 - Provide a build time default-editor setting
 - am -i, git-svn: use "git var GIT_PAGER"
 - add -i, send-email, svn, p4, etc: use "git var GIT_EDITOR"
 - Teach git var about GIT_PAGER
 - Teach git var about GIT_EDITOR
 - Do not use VISUAL editor on dumb terminals
 - Handle more shell metacharacters in editor names

* js/maint-diff-color-words (2009-10-30) 3 commits.
 - diff --color-words: bit of clean-up
 - diff --color-words -U0: fix the location of hunk headers
 - t4034-diff-words: add a test for word diff without context

Fixes a corner case of running --color-words with -U0.

* sc/difftool-p4merge (2009-10-28) 1 commit
  (merged to 'next' on 2009-10-31 at 194b5c5)
 + mergetool--lib: add p4merge as a pre-configured mergetool option

* sc/protocol-doc (2009-10-29) 1 commit
 - Update packfile transfer protocol documentation

There is the final draft posted, but I haven't picked it up yet.

* sr/vcs-helper (2009-11-06) 12 commits
 - Add Python support library for remote helpers
 - Basic build infrastructure for Python scripts
 - Allow helpers to request the path to the .git directory
 - Allow helpers to report in "list" command that the ref is unchanged
 - Allow helper to map private ref names into normal names
 - Add support for "import" helper command
 - Allow specifying the remote helper in the url
 - Add a config option for remotes to specify a foreign vcs
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 - Allow programs to not depend on remotes having urls
 - Fix memory leak in helper method for disconnect

Re-rolled series that contains Daniel's and Johan's.

* tr/describe-advice (2009-10-28) 1 commit
  (merged to 'next' on 2009-10-31 at 8084850)
 + describe: when failing, tell the user about options that work

* mr/gitweb-snapshot (2009-11-07) 4 commits.
 - gitweb: Smarter snapshot names
 - gitweb: Document current snapshot rules via new tests
 - t/gitweb-lib.sh: Split gitweb output into headers and body
  (merged to 'next' on 2009-10-11 at 22ba047)
 + gitweb: check given hash before trying to create snapshot

Replaced commits near the tip with recent updates.

* jp/dirty-describe (2009-10-21) 1 commit.
  (merged to 'next' on 2009-10-30 at 19c7fc7)
 + Teach "git describe" --dirty option

* jp/fetch-cull-many-refs (2009-10-25) 2 commits
  (merged to 'next' on 2009-11-01 at 1f09ce9)
 + fetch: Speed up fetch of large numbers of refs
 + remote: Make ref_remove_duplicates faster for large numbers of refs

* bg/format-patch-p-noop (2009-11-04) 4 commits.
  (merged to 'next' on 2009-11-08 at 6220d55)
 + Revert "format-patch -p is now a no-op" series
  (merged to 'next' on 2009-10-30 at e34a3db)
 + format-patch documentation: Fix formatting
 + format-patch documentation: Remove diff options that are not useful
 + format-patch: Make implementation and documentation agree

This is now a no-op; jk/maint-format-patch-p-suppress-stat and
bg/format-patch-doc-update topics will replace this.

* jk/gitignore-anchored (2009-10-26) 1 commit
  (merged to 'next' on 2009-10-30 at 9391a93)
 + gitignore: root most patterns at the top-level directory

* jk/maint-add-p-empty (2009-10-27) 1 commit.
  (merged to 'next' on 2009-10-30 at 2bd302f)
 + add-interactive: handle deletion of empty files

* jk/maint-push-config (2009-10-25) 1 commit.
  (merged to 'next' on 2009-10-30 at 934e3c5)
 + push: always load default config

* lt/revision-bisect (2009-10-27) 1 commit.
  (merged to 'next' on 2009-10-30 at 81ee52b)
 + Add '--bisect' revision machinery argument

* jc/pretty-lf (2009-10-04) 1 commit.
 - Pretty-format: %[+-]x to tweak inter-item newlines

* rs/pretty-wrap (2009-11-08) 2 commits
  (merged to 'next' on 2009-11-08 at 8973fd8)
 + log --format: don't ignore %w() at the start of format string
  (merged to 'next' on 2009-10-30 at 403bbfe)
 + Implement wrap format %w() as if it is a mode switch
 (this branch uses js/log-rewrap.)

* js/log-rewrap (2009-10-18) 3 commits
  (merged to 'next' on 2009-10-30 at 403bbfe)
 + Teach --wrap to only indent without wrapping
 + Add strbuf_add_wrapped_text() to utf8.[ch]
 + print_wrapped_text(): allow hard newlines
 (this branch is used by rs/pretty-wrap.)

* sr/blame-incomplete (2009-10-19) 1 commit.
  (merged to 'next' on 2009-10-22 at 133e0ce)
 + blame: make sure that the last line ends in an LF

I think this is _good enough_ as-is; although it would be better if we
added some hint to the output for Porcelain implementations, that can be
done as a follow-up fix.

* fc/doc-fast-forward (2009-10-24) 1 commit.
  (merged to 'next' on 2009-11-01 at faaad90)
 + Use 'fast-forward' all over the place

* ks/precompute-completion (2009-10-26) 3 commits.
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

* sp/smart-http (2009-11-04) 30 commits
  (merged to 'next' on 2009-11-06 at 666837c)
 + http-backend: Test configuration options
 + http-backend: Use http.getanyfile to disable dumb HTTP serving
 + test smart http fetch and push
 + http tests: use /dumb/ URL prefix
 + set httpd port before sourcing lib-httpd
 + t5540-http-push: remove redundant fetches
 + Smart HTTP fetch: gzip requests
 + Smart fetch over HTTP: client side
 + Smart push over HTTP: client side
 + Discover refs via smart HTTP server when available
 + http-backend: more explict LocationMatch
 + http-backend: add example for gitweb on same URL
 + http-backend: use mod_alias instead of mod_rewrite
 + http-backend: reword some documentation
 + http-backend: add GIT_PROJECT_ROOT environment var
 + Smart fetch and push over HTTP: server side
 + Add stateless RPC options to upload-pack, receive-pack
 + Git-aware CGI to provide dumb HTTP transport
 + remote-helpers: return successfully if everything up-to-date
 + Move WebDAV HTTP push under remote-curl
 + remote-helpers: Support custom transport options
 + remote-helpers: Fetch more than one ref in a batch
 + fetch: Allow transport -v -v -v to set verbosity to 3
 + remote-curl: Refactor walker initialization
 + Add multi_ack_detailed capability to fetch-pack/upload-pack
 + Move "get_ack()" back to fetch-pack
 + fetch-pack: Use a strbuf to compose the want list
 + pkt-line: Make packet_read_line easier to debug
 + pkt-line: Add strbuf based functions
 + http-push: fix check condition on http.c::finish_http_pack_request()

v5 plus 3 more fix-up patches, started cooking in 'next'.

* ef/msys-imap (2009-10-22) 9 commits.
  (merged to 'next' on 2009-10-31 at 8630603)
 + Windows: use BLK_SHA1 again
 + MSVC: Enable OpenSSL, and translate -lcrypto
 + mingw: enable OpenSSL
 + mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle
 + imap-send: build imap-send on Windows
 + imap-send: fix compilation-error on Windows
 + imap-send: use run-command API for tunneling
 + imap-send: use separate read and write fds
 + imap-send: remove useless uid code

* jc/fix-tree-walk (2009-10-22) 11 commits.
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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
 + unpack_callback(): use unpack_failed() consistently
 + unpack-trees: typofix
 + diff-lib.c: fix misleading comments on oneway_diff()

This has some stupid bugs and temporarily reverted from 'next' until I can
fix it, but the "temporarily" turned out to be very loooong.  Sigh...

* jh/notes (2009-10-09) 22 commits.
 - fast-import: Proper notes tree manipulation using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
  (merged to 'next' on 2009-11-01 at 948327a)
 + Add selftests verifying concatenation of multiple notes for the same commit
 + Refactor notes code to concatenate multiple notes annotating the same object
 + Add selftests verifying that we can parse notes trees with various fanouts
 + Teach the notes lookup code to parse notes trees with various fanout schemes
 + Teach notes code to free its internal data structures on request
 + Add '%N'-format for pretty-printing commit notes
 + Add flags to get_commit_notes() to control the format of the note string
 + t3302-notes-index-expensive: Speed up create_repo()
 + fast-import: Add support for importing commit notes
 + Teach "-m <msg>" and "-F <file>" to "git notes edit"
 + Add an expensive test for git-notes
 + Speed up git notes lookup
 + Add a script to edit/inspect notes
 + Introduce commit notes

* jn/gitweb-blame (2009-09-01) 5 commits.
 - gitweb: Minify gitweb.js if JSMIN is defined
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame.

* nd/sparse (2009-08-20) 19 commits.
 - sparse checkout: inhibit empty worktree
 - Add tests for sparse checkout
 - read-tree: add --no-sparse-checkout to disable sparse checkout support
 - unpack-trees(): ignore worktree check outside checkout area
 - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 - unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 - unpack-trees.c: generalize verify_* functions
 - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 - Introduce "sparse checkout"
 - dir.c: export excluded_1() and add_excludes_from_file_1()
 - excluded_1(): support exclude files in index
 - unpack-trees(): carry skip-worktree bit over in merged_entry()
 - Read .gitignore from index if it is skip-worktree
 - Avoid writing to buffer in add_excludes_from_file_1()
 - Teach Git to respect skip-worktree bit (writing part)
 - Teach Git to respect skip-worktree bit (reading part)
 - Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 - Add test-index-version
 - update-index: refactor mark_valid() in preparation for new options

--------------------------------------------------
[For 1.7.0]

* jc/1.7.0-no-commit-no-ff-2 (2009-10-22) 1 commit.
 - git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  I haven't described this at the beginning of this message
yet, as it is not clear if this change is even necessary.  Opinions?

* jk/1.7.0-status (2009-09-05) 5 commits.
 - docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

The tip one is not in 'next' as I have been hoping that somebody may want
to change the code to make it unnecessary, but it does not seem to be
happening, so probably it should also go to 'next'.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[I have been too busy to purge these]

* ne/rev-cache (2009-10-19) 7 commits.
 . support for commit grafts, slight change to general mechanism
 . support for path name caching in rev-cache
 . full integration of rev-cache into git, completed test suite
 . administrative functions for rev-cache, start of integration into git
 . support for non-commit object caching in rev-cache
 . basic revision cache system, no integration or features
 . man page and technical discussion for rev-cache

The author indicated that there is another round coming.  Does not seem to
pass the tests when merged to 'pu', so it has been ejected for now.

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Maybe some people care about this.  I dunno.

* jg/log-format-body-indent (2009-09-19) 1 commit.
 . git-log --format: Add %B tag with %B(x) option

* db/vcs-helper-rest (2009-10-27) 7 commits.
 . Fix memory leak in helper method for disconnect
 . Allow helpers to report in "list" command that the ref is unchanged
 . Add support for "import" helper command
 . Add a config option for remotes to specify a foreign vcs
 . Allow programs to not depend on remotes having urls
 . Allow fetch to modify refs
 . Use a function to determine whether a remote is valid
 (this branch is used by jh/cvs-helper.)

* jc/log-stdin (2009-11-03) 1 commit
 . Teach --stdin option to "log" family

* jh/cvs-helper (2009-08-18) 8 commits.
 . More fixes to the git-remote-cvs installation procedure
 . Fix the Makefile-generated path to the git_remote_cvs package in git-remote-cvs
 . Add simple selftests of git-remote-cvs functionality
 . git-remote-cvs: Remote helper program for CVS repositories
 . 2/2: Add Python support library for CVS remote helper
 . 1/2: Add Python support library for CVS remote helper
 . Basic build infrastructure for Python scripts
 . Allow helpers to request marks for fast-import
 (this branch uses db/vcs-helper-rest.)

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Nov 2009, #03; Sun, 15)
@ 2009-11-15 10:23  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-11-15 10:23 UTC (permalink / raw)
  To: git

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planned changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * git-send-email won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * git-status won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git-diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

I wasn't fully functioning for the past few days, so this round we have
only added new topics and new patches to existing ones, without changing
the status of individual topics very much.

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

* jk/maint-format-patch-p-suppress-stat (2009-11-04) 1 commit.
  (merged to 'next' on 2009-11-08 at 0943296)
 + format-patch: make "-p" suppress diffstat
 (this branch is used by bg/format-patch-doc-update.)

* vl/maint-openssl-signature-change (2009-10-31) 1 commit.
  (merged to 'next' on 2009-10-31 at 0e1ce6b)
 + imap-send.c: fix compiler warnings for OpenSSL 1.0

Prepare ourselves before newer versions of OpenSSL hits more platforms.

* pb/maint-gitweb-blob-lineno (2009-11-06) 1 commit.
  (merged to 'next' on 2009-11-06 at 27b86ec)
 + gitweb: Fix blob linenr links in pathinfo mode

* bg/merge-ff-only (2009-10-29) 1 commit
  (merged to 'next' on 2009-10-31 at b6b49aa)
 + Teach 'git merge' and 'git pull' the option --ff-only

* jk/maint-1.6.3-ls-files-i (2009-10-30) 1 commit.
  (merged to 'next' on 2009-10-31 at 3a31fcc)
 + ls-files: unbreak "ls-files -i"

* tr/describe-advice (2009-10-28) 1 commit
  (merged to 'next' on 2009-10-31 at 8084850)
 + describe: when failing, tell the user about options that work

* jp/dirty-describe (2009-10-21) 1 commit.
  (merged to 'next' on 2009-10-30 at 19c7fc7)
 + Teach "git describe" --dirty option

* jk/gitignore-anchored (2009-10-26) 1 commit
  (merged to 'next' on 2009-10-30 at 9391a93)
 + gitignore: root most patterns at the top-level directory

* jk/maint-push-config (2009-10-25) 1 commit.
  (merged to 'next' on 2009-10-30 at 934e3c5)
 + push: always load default config

* sr/blame-incomplete (2009-10-19) 1 commit.
  (merged to 'next' on 2009-10-22 at 133e0ce)
 + blame: make sure that the last line ends in an LF

I think this is _good enough_ as-is; although it would be better if we
added some hint to the output for Porcelain implementations, that can be
done as a follow-up fix.

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

* jn/help-everywhere (2009-11-09) 21 commits
 - diff --no-index: make the usage string less scary
 - merge-{recursive,subtree}: use usagef() to print usage
 - Introduce usagef() that takes a printf-style format
 - Let 'git <command> -h' show usage without a git dir
 - Show usage string for 'git http-push -h'
 - Let 'git http-fetch -h' show usage outside any git repository
 - Show usage string for 'git stripspace -h'
 - Show usage string for 'git unpack-file -h'
 - Show usage string for 'git show-index -h'
 - Show usage string for 'git rev-parse -h'
 - Show usage string for 'git merge-one-file -h'
 - Show usage string for 'git mailsplit -h'
 - Show usage string for 'git imap-send -h'
 - Show usage string for 'git get-tar-commit-id -h'
 - Show usage string for 'git fast-import -h'
 - Show usage string for 'git check-ref-format -h'
 - Show usage string for 'git show-ref -h'
 - Show usage string for 'git merge-ours -h'
 - Show usage string for 'git commit-tree -h'
 - Show usage string for 'git cherry -h'
 - Show usage string for 'git grep -h'
 (this branch uses jn/maint-http-fetch-mingw and jn/remove-fetch--tool.)

There were unrelated but still worthy fixes, so I reordered some of them;
also the "usage()" change is different from the one that was posted (see
my comment in $gmane/132592).

* jn/maint-http-fetch-mingw (2009-11-09) 1 commit.
 - http-fetch: add missing initialization of argv0_path
 (this branch is used by jn/help-everywhere.)

* jn/remove-fetch--tool (2009-11-09) 1 commit
 - Retire fetch--tool helper to contrib/examples
 (this branch is used by jn/help-everywhere.)

These two were originally part of the "help-everywhere" topic but
they can stand on their own.

* jc/log-stdin (2009-11-03) 1 commit
 - Teach --stdin option to "log" family

This is not signed-off (see $gmane/131971 for list of things you can do to
help advancing this topic).

* jn/gitweb-log-history (2009-11-13) 3 commits
 - gitweb: Make 'history' view (re)use git_log_generic()
 - gitweb: Refactor common parts of 'log' and 'shortlog' views
 - gitweb: Refactor 'log' action generation, adding git_log_body()

* jn/rfc-pull-rebase-error-message (2009-11-12) 1 commit
 - git-pull.sh --rebase: overhaul error handling when no candidates are found

* np/maint-sideband-favor-status (2009-11-11) 1 commit.
 - give priority to progress messages

This looked obviously correct but I wasn't fully up to speed after being
ill for a few days, so it is queued in 'pu' with everything else.

* rg/doc-workflow (2009-11-14) 2 commits.
 - Corrections to release management section in gitworkflows.txt
 - Add branch management for releases to gitworkflows

* sb/ls-tree-parseopt (2009-11-13) 2 commits.
 - ls-tree: migrate to parse-options
 - t3101: test more ls-tree options

* tz/maint-rpm (2009-11-11) 1 commit.
 - Makefile: Ensure rpm packages can be read by older rpm versions

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

* jl/submodule-add-noname (2009-09-22) 1 commit.
 - git submodule add: make the <path> parameter optional

Dscho started an interesting discussion regarding the larger workflow in
which the "submodule add" is used.  I think the patch itself makes sense
but at the same time it probably makes sense to also take the <path> and
infer the <repository> as Dscho suggested, probably in "git submodule
add", not in "git add" proper, at least initially.

Any objections against merging this to 'next'?

* jc/fix-tree-walk (2009-10-22) 11 commits.
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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
 + unpack_callback(): use unpack_failed() consistently
 + unpack-trees: typofix
 + diff-lib.c: fix misleading comments on oneway_diff()

This has some stupid bugs and temporarily reverted from 'next' until I can
fix it, but the "temporarily" turned out to be very loooong.  Sigh...

* jh/notes (2009-10-09) 22 commits.
 - fast-import: Proper notes tree manipulation using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
  (merged to 'next' on 2009-11-01 at 948327a)
 + Add selftests verifying concatenation of multiple notes for the same commit
 + Refactor notes code to concatenate multiple notes annotating the same object
 + Add selftests verifying that we can parse notes trees with various fanouts
 + Teach the notes lookup code to parse notes trees with various fanout schemes
 + Teach notes code to free its internal data structures on request
 + Add '%N'-format for pretty-printing commit notes
 + Add flags to get_commit_notes() to control the format of the note string
 + t3302-notes-index-expensive: Speed up create_repo()
 + fast-import: Add support for importing commit notes
 + Teach "-m <msg>" and "-F <file>" to "git notes edit"
 + Add an expensive test for git-notes
 + Speed up git notes lookup
 + Add a script to edit/inspect notes
 + Introduce commit notes

I somehow thought that the later API part was waiting for updates but
nothing seems to be happening.

* jn/gitweb-blame (2009-09-01) 5 commits.
 - gitweb: Minify gitweb.js if JSMIN is defined
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame.  Any progress or RFH?

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

It seemed to be moving again soon, but nothing has happened yet...

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

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

* sc/protocol-doc (2009-11-03) 1 commit.
 - Update packfile transfer protocol documentation

* tr/filter-branch (2009-11-10) 2 commits.
 - filter-branch: nearest-ancestor rewriting outside subdir filter
 - filter-branch: stop special-casing $filter_subdir argument

Updated again.  Looked sane, except that the option might not be
necessary.  But that can be fixed while in 'next', so unless anybody
sees further issues, I'll move this to 'next' soon.

* em/commit-claim (2009-11-04) 1 commit
 - commit -c/-C/--amend: reset timestamp and authorship to committer with --reset-author

I just picked better bits from both versions, but this needs to be
rethought.

* bg/format-patch-doc-update (2009-11-07) 4 commits
 - format-patch: Add "--no-stat" as a synonym for "-p"
 - format-patch documentation: Fix formatting
 - format-patch documentation: Remove diff options that are not useful
 - format-patch: Always generate a patch

Looked sensible, even though this may want to wait for 1.7.0.  We'll see
when we merge this to 'next'.  I tweaked the --no-stat patch with noneg
bit; please check for sanity.

* rj/maint-simplify-cygwin-makefile (2009-10-27) 1 commit.
 - Makefile: merge two Cygwin configuration sections into one
 (this branch is used by rj/cygwin-msvc.)

This is one of the most obviously correct bit from "Compiling on Cygwin
using MSVC fails" topic.

* rj/cygwin-msvc (2009-11-09) 3 commits.
 - Add explicit Cygwin check to guard WIN32 header inclusion
 - MSVC: Add support for building with NO_MMAP
 - Makefile: keep MSVC and Cygwin configuration separate
 (this branch uses rj/maint-simplify-cygwin-makefile.)

I think J6t was not happy with the tip one.

* bg/fetch-multi (2009-11-10) 9 commits
 - Re-implement 'git remote update' using 'git fetch'
 - builtin-fetch: add --dry-run option
 - builtin-fetch: add --prune option
 - teach warn_dangling_symref to take a FILE argument
 - remote: refactor some logic into get_stale_heads()
 - Add missing test for 'git remote update --prune'
 - Add the configuration option skipFetchAll
 - Teach the --multiple option to 'git fetch'
 - Teach the --all option to 'git fetch'

This series from Björn Gustavsson contains 4 patches from Jay Soffian as
well.  I haven't looked at the code very closely yet.

* bs/maint-pre-commit-hook-sample (2009-11-05) 1 commit.
  (merged to 'next' on 2009-11-06 at d70f646)
 + pre-commit.sample: Diff against the empty tree when HEAD is invalid

Looked Ok.

* cc/bisect-doc (2009-11-08) 1 commit
 - Documentation: add "Fighting regressions with git bisect" article

Any comments?  Should it go to Documentation/technical instead?

* sb/tutorial-test (2009-11-06) 4 commits
 - t1200: prepare for merging with Fast-forward bikeshedding
 - t1200: further modernize test script style
 - t1200: Make documentation and test agree
 - t1200: cleanup and modernize test style

Ready for 'next', I think.

* jn/editor-pager (2009-10-30) 9 commits
 - Provide a build time default-pager setting
 - Provide a build time default-editor setting
 - am -i, git-svn: use "git var GIT_PAGER"
 - add -i, send-email, svn, p4, etc: use "git var GIT_EDITOR"
 - Teach git var about GIT_PAGER
 - Teach git var about GIT_EDITOR
 - Suppress warnings from "git var -l"
 - Do not use VISUAL editor on dumb terminals
 - Handle more shell metacharacters in editor names

* bw/autoconf-more (2009-11-04) 2 commits
 - configure: add settings for gitconfig, editor and pager
 - configure: add macro to set arbitrary make variables

This will follow jn/editor-pager series.

* js/maint-diff-color-words (2009-10-30) 3 commits.
  (merged to 'next' on 2009-11-10 at 5619714)
 + diff --color-words: bit of clean-up
 + diff --color-words -U0: fix the location of hunk headers
 + t4034-diff-words: add a test for word diff without context

Fixes a corner case of running --color-words with -U0.

* sc/difftool-p4merge (2009-10-28) 1 commit
  (merged to 'next' on 2009-10-31 at 194b5c5)
 + mergetool--lib: add p4merge as a pre-configured mergetool option

I do not do p4 nor use difftool, so it's much easier for me to merge this
to 'master' and wait for anybody to scream if there is breakage.  I'll do
so, unless I hear objections in a few days.

* sr/vcs-helper (2009-11-06) 12 commits
 - Add Python support library for remote helpers
 - Basic build infrastructure for Python scripts
 - Allow helpers to request the path to the .git directory
 - Allow helpers to report in "list" command that the ref is unchanged
 - Allow helper to map private ref names into normal names
 - Add support for "import" helper command
 - Allow specifying the remote helper in the url
 - Add a config option for remotes to specify a foreign vcs
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 - Allow programs to not depend on remotes having urls
 - Fix memory leak in helper method for disconnect

Re-rolled series that contains Daniel's and Johan's.
Any comments?  Is everybody happy?

* mr/gitweb-snapshot (2009-11-07) 4 commits.
 - gitweb: Smarter snapshot names
 - gitweb: Document current snapshot rules via new tests
 - t/gitweb-lib.sh: Split gitweb output into headers and body
  (merged to 'next' on 2009-10-11 at 22ba047)
 + gitweb: check given hash before trying to create snapshot

Replaced commits near the tip with recent updates.

* jp/fetch-cull-many-refs (2009-11-13) 3 commits
  (merged to 'next' on 2009-11-15 at db0f967)
 + remote: fix use-after-free error detected by glibc in ref_remove_duplicates
  (merged to 'next' on 2009-11-01 at 1f09ce9)
 + fetch: Speed up fetch of large numbers of refs
 + remote: Make ref_remove_duplicates faster for large numbers of refs

Soon in 'master'.

* jk/maint-add-p-empty (2009-10-27) 1 commit.
  (merged to 'next' on 2009-10-30 at 2bd302f)
 + add-interactive: handle deletion of empty files

Soon in 'master'.

* lt/revision-bisect (2009-10-27) 1 commit.
  (merged to 'next' on 2009-10-30 at 81ee52b)
 + Add '--bisect' revision machinery argument

Soon in 'master'.

* jc/pretty-lf (2009-10-04) 1 commit.
 - Pretty-format: %[+-]x to tweak inter-item newlines

* rs/pretty-wrap (2009-11-08) 2 commits
  (merged to 'next' on 2009-11-08 at 8973fd8)
 + log --format: don't ignore %w() at the start of format string
  (merged to 'next' on 2009-10-30 at 403bbfe)
 + Implement wrap format %w() as if it is a mode switch
 (this branch uses js/log-rewrap.)

Soon in 'master'.

* js/log-rewrap (2009-10-18) 3 commits
  (merged to 'next' on 2009-10-30 at 403bbfe)
 + Teach --wrap to only indent without wrapping
 + Add strbuf_add_wrapped_text() to utf8.[ch]
 + print_wrapped_text(): allow hard newlines
 (this branch is used by rs/pretty-wrap.)

Soon in 'master'.

* fc/doc-fast-forward (2009-10-24) 1 commit.
  (merged to 'next' on 2009-11-01 at faaad90)
 + Use 'fast-forward' all over the place

Soon in 'master'; carrying this in 'next' for too long is turning out to
be quite painful.

* ks/precompute-completion (2009-10-26) 3 commits.
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

I didn't follow the discussion from the past few days closely, but I am
getting an impression that the consensus is we shouldn't precompute, so I
may have to revert this and replace with what's cooking on the list when
it stabilizes.

* sp/smart-http (2009-11-11) 35 commits
  (merged to 'next' on 2009-11-15 at 2a326b2)
 + http-backend: Fix bad treatment of uintmax_t in Content-Length
 + t5551-http-fetch: Work around broken Accept header in libcurl
 + t5551-http-fetch: Work around some libcurl versions
 + http-backend: Protect GIT_PROJECT_ROOT from /../ requests
 + Git-aware CGI to provide dumb HTTP transport
  (merged to 'next' on 2009-11-06 at 666837c)
 + http-backend: Test configuration options
 + http-backend: Use http.getanyfile to disable dumb HTTP serving
 + test smart http fetch and push
 + http tests: use /dumb/ URL prefix
 + set httpd port before sourcing lib-httpd
 + t5540-http-push: remove redundant fetches
 + Smart HTTP fetch: gzip requests
 + Smart fetch over HTTP: client side
 + Smart push over HTTP: client side
 + Discover refs via smart HTTP server when available
 + http-backend: more explict LocationMatch
 + http-backend: add example for gitweb on same URL
 + http-backend: use mod_alias instead of mod_rewrite
 + http-backend: reword some documentation
 + http-backend: add GIT_PROJECT_ROOT environment var
 + Smart fetch and push over HTTP: server side
 + Add stateless RPC options to upload-pack, receive-pack
 + Git-aware CGI to provide dumb HTTP transport
 + remote-helpers: return successfully if everything up-to-date
 + Move WebDAV HTTP push under remote-curl
 + remote-helpers: Support custom transport options
 + remote-helpers: Fetch more than one ref in a batch
 + fetch: Allow transport -v -v -v to set verbosity to 3
 + remote-curl: Refactor walker initialization
 + Add multi_ack_detailed capability to fetch-pack/upload-pack
 + Move "get_ack()" back to fetch-pack
 + fetch-pack: Use a strbuf to compose the want list
 + pkt-line: Make packet_read_line easier to debug
 + pkt-line: Add strbuf based functions
 + http-push: fix check condition on http.c::finish_http_pack_request()

* ef/msys-imap (2009-10-22) 9 commits.
  (merged to 'next' on 2009-10-31 at 8630603)
 + Windows: use BLK_SHA1 again
 + MSVC: Enable OpenSSL, and translate -lcrypto
 + mingw: enable OpenSSL
 + mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle
 + imap-send: build imap-send on Windows
 + imap-send: fix compilation-error on Windows
 + imap-send: use run-command API for tunneling
 + imap-send: use separate read and write fds
 + imap-send: remove useless uid code

Soon in 'master', unless I hear objections from msys folks or imap-send
users.

* nd/sparse (2009-08-20) 19 commits.
 - sparse checkout: inhibit empty worktree
 - Add tests for sparse checkout
 - read-tree: add --no-sparse-checkout to disable sparse checkout support
 - unpack-trees(): ignore worktree check outside checkout area
 - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 - unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 - unpack-trees.c: generalize verify_* functions
 - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 - Introduce "sparse checkout"
 - dir.c: export excluded_1() and add_excludes_from_file_1()
 - excluded_1(): support exclude files in index
 - unpack-trees(): carry skip-worktree bit over in merged_entry()
 - Read .gitignore from index if it is skip-worktree
 - Avoid writing to buffer in add_excludes_from_file_1()
 - Teach Git to respect skip-worktree bit (writing part)
 - Teach Git to respect skip-worktree bit (reading part)
 - Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 - Add test-index-version
 - update-index: refactor mark_valid() in preparation for new options

The latest update I didn't look at very closely but I had an impression
that it was touching very generic codepath that would affect non sparse
cases, iow the patch looked very scary (the entire series already is).

--------------------------------------------------
[For 1.7.0]

* jc/1.7.0-no-commit-no-ff-2 (2009-10-22) 1 commit.
 - git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  I haven't described this at the beginning of this message
yet, as it is not clear if this change is even necessary.  Opinions?

* jk/1.7.0-status (2009-09-05) 5 commits.
 - docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

The tip one is not in 'next' as I have been hoping that somebody may want
to change the code to make it unnecessary, but it does not seem to be
happening, so probably it should also go to 'next'.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[I have been too busy to purge these]

* ne/rev-cache (2009-10-19) 7 commits.
 . support for commit grafts, slight change to general mechanism
 . support for path name caching in rev-cache
 . full integration of rev-cache into git, completed test suite
 . administrative functions for rev-cache, start of integration into git
 . support for non-commit object caching in rev-cache
 . basic revision cache system, no integration or features
 . man page and technical discussion for rev-cache

The author indicated that there is another round coming.  Does not seem to
pass the tests when merged to 'pu', so it has been ejected for now.

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Maybe some people care about this.  I dunno.

* pb/gitweb-no-project-list (2009-11-06) 3 commits.
 . gitweb: Polish the content tags support
 . gitweb: Support for no project list on gitweb front page
 . gitweb: Refactor project list routines

I picked these up but didn't queue as Warthog9's comments made certain
amount of sense to me.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Nov 2009, #04; Tue, 17)
@ 2009-11-18  7:53  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-11-18  7:53 UTC (permalink / raw)
  To: git

I'd like to tag 1.6.6-rc0 this coming weekend with most topics on 'next'
(and some from 'pu'), so that we can do the final 1.6.6 before the end of
the year.

It is likely that I'll be offline for most of the day tomorrow, even
though it will be my git Wednesday.

-- >8 --

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planned changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * git-send-email won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * git-status won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git-diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

I wasn't fully functioning for the past few days, so this round we have
only added new topics and new patches to existing ones, without changing
the status of individual topics very much.

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

* bs/maint-pre-commit-hook-sample (2009-11-05) 1 commit.
  (merged to 'next' on 2009-11-06 at d70f646)
 + pre-commit.sample: Diff against the empty tree when HEAD is invalid

* js/maint-diff-color-words (2009-10-30) 3 commits.
  (merged to 'next' on 2009-11-10 at 5619714)
 + diff --color-words: bit of clean-up
 + diff --color-words -U0: fix the location of hunk headers
 + t4034-diff-words: add a test for word diff without context

Fixes a corner case of running --color-words with -U0.

* sc/difftool-p4merge (2009-10-28) 1 commit
  (merged to 'next' on 2009-10-31 at 194b5c5)
 + mergetool--lib: add p4merge as a pre-configured mergetool option

I do not do p4 nor use difftool, so it's much easier for me to merge this
to 'master' and wait for anybody to scream if there is breakage.

* jk/maint-add-p-empty (2009-10-27) 1 commit.
  (merged to 'next' on 2009-10-30 at 2bd302f)
 + add-interactive: handle deletion of empty files

* lt/revision-bisect (2009-10-27) 1 commit.
  (merged to 'next' on 2009-10-30 at 81ee52b)
 + Add '--bisect' revision machinery argument

* rs/pretty-wrap (2009-11-08) 2 commits
  (merged to 'next' on 2009-11-08 at 8973fd8)
 + log --format: don't ignore %w() at the start of format string
  (merged to 'next' on 2009-10-30 at 403bbfe)
 + Implement wrap format %w() as if it is a mode switch
 (this branch uses js/log-rewrap.)

* js/log-rewrap (2009-10-18) 3 commits
  (merged to 'next' on 2009-10-30 at 403bbfe)
 + Teach --wrap to only indent without wrapping
 + Add strbuf_add_wrapped_text() to utf8.[ch]
 + print_wrapped_text(): allow hard newlines
 (this branch is used by rs/pretty-wrap.)

* fc/doc-fast-forward (2009-10-24) 1 commit.
  (merged to 'next' on 2009-11-01 at faaad90)
 + Use 'fast-forward' all over the place

* tz/maint-rpm (2009-11-11) 1 commit.
 + Makefile: Ensure rpm packages can be read by older rpm versions

* np/maint-sideband-favor-status (2009-11-11) 1 commit.
  (merged to 'next' on 2009-11-15 at 3ecd874)
 + give priority to progress messages

* sb/tutorial-test (2009-11-06) 4 commits
  (merged to 'next' on 2009-11-15 at 5c82651)
 + t1200: prepare for merging with Fast-forward bikeshedding
 + t1200: further modernize test script style
 + t1200: Make documentation and test agree
 + t1200: cleanup and modernize test style

* ef/msys-imap (2009-10-22) 9 commits.
  (merged to 'next' on 2009-10-31 at 8630603)
 + Windows: use BLK_SHA1 again
 + MSVC: Enable OpenSSL, and translate -lcrypto
 + mingw: enable OpenSSL
 + mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle
 + imap-send: build imap-send on Windows
 + imap-send: fix compilation-error on Windows
 + imap-send: use run-command API for tunneling
 + imap-send: use separate read and write fds
 + imap-send: remove useless uid code

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

* jn/faster-completion-startup (2009-11-17) 1 commit.
 - Speed up bash completion loading

* th/maint-remote-update-help-string (2009-11-15) 1 commit.
 - Update 'git remote update' usage string to match man page.

* tr/maint-merge-ours-clarification (2009-11-15) 3 commits.
 - rebase: refuse to rebase with -s ours
  (merged to 'next' on 2009-11-17 at 3291125)
 + rebase docs: clarify --merge and --strategy
 + Documentation: clarify 'ours' merge strategy

* tc/format-attribute (2009-11-14) 1 commit
 - Check the format of more printf-type functions

* jk/maint-break-rename-reduce-memory (2009-11-16) 2 commits.
  (merged to 'next' on 2009-11-16 at 5b5a93f)
 + diffcore-break: save cnt_data for other phases
 + diffcore-break: free filespec data as we go

* bc/grep-i-F (2009-11-06) 1 commit.
  (merged to 'next' on 2009-11-17 at a9b138c)
 + grep: Allow case insensitive search of fixed-strings

* mm/config-pathname-tilde-expand (2009-11-17) 1 commit.
  (merged to 'next' on 2009-11-17 at 7ba213d)
 + Expand ~ and ~user in core.excludesfile, commit.template

* pb/maint-use-custom-perl (2009-11-17) 1 commit.
  (merged to 'next' on 2009-11-17 at 1ee8d46)
 + Make sure $PERL_PATH is defined when the test suite is run.

* th/remote-usage (2009-11-16) 1 commit.
 - git remote: Separate usage strings for subcommands

* mo/maint-crlf-doc (2009-11-14) 1 commit.
  (merged to 'next' on 2009-11-17 at abd9133)
 + core.autocrlf documentation: mention the crlf attribute

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

* rj/cygwin-msvc (2009-11-09) 3 commits.
 - Add explicit Cygwin check to guard WIN32 header inclusion
 - MSVC: Add support for building with NO_MMAP
 - Makefile: keep MSVC and Cygwin configuration separate
 (this branch uses rj/maint-simplify-cygwin-makefile.)

I think J6t was not happy with the tip one.

* jc/fix-tree-walk (2009-10-22) 11 commits.
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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
 + unpack_callback(): use unpack_failed() consistently
 + unpack-trees: typofix
 + diff-lib.c: fix misleading comments on oneway_diff()

This has some stupid bugs and temporarily reverted from 'next' until I can
fix it, but the "temporarily" turned out to be very loooong.  Sigh...

* jh/notes (2009-10-09) 22 commits.
 - fast-import: Proper notes tree manipulation using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
  (merged to 'next' on 2009-11-01 at 948327a)
 + Add selftests verifying concatenation of multiple notes for the same commit
 + Refactor notes code to concatenate multiple notes annotating the same object
 + Add selftests verifying that we can parse notes trees with various fanouts
 + Teach the notes lookup code to parse notes trees with various fanout schemes
 + Teach notes code to free its internal data structures on request
 + Add '%N'-format for pretty-printing commit notes
 + Add flags to get_commit_notes() to control the format of the note string
 + t3302-notes-index-expensive: Speed up create_repo()
 + fast-import: Add support for importing commit notes
 + Teach "-m <msg>" and "-F <file>" to "git notes edit"
 + Add an expensive test for git-notes
 + Speed up git notes lookup
 + Add a script to edit/inspect notes
 + Introduce commit notes

I somehow thought that the later API part was waiting for updates but
nothing seems to be happening.

* jn/gitweb-blame (2009-09-01) 5 commits.
 - gitweb: Minify gitweb.js if JSMIN is defined
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame.  Any progress or RFH?

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

It seemed to be moving again soon, but nothing has happened yet...

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

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

* jp/fetch-cull-many-refs (2009-11-13) 3 commits
  (merged to 'next' on 2009-11-15 at db0f967)
 + remote: fix use-after-free error detected by glibc in ref_remove_duplicates
  (merged to 'next' on 2009-11-01 at 1f09ce9)
 + fetch: Speed up fetch of large numbers of refs
 + remote: Make ref_remove_duplicates faster for large numbers of refs

Soon in 'master'.

* jn/help-everywhere (2009-11-09) 21 commits
  (merged to 'next' on 2009-11-17 at 3a2dffe)
 + diff --no-index: make the usage string less scary
 + merge-{recursive,subtree}: use usagef() to print usage
 + Introduce usagef() that takes a printf-style format
 + Let 'git <command> -h' show usage without a git dir
 + Show usage string for 'git http-push -h'
 + Let 'git http-fetch -h' show usage outside any git repository
 + Show usage string for 'git stripspace -h'
 + Show usage string for 'git unpack-file -h'
 + Show usage string for 'git show-index -h'
 + Show usage string for 'git rev-parse -h'
 + Show usage string for 'git merge-one-file -h'
 + Show usage string for 'git mailsplit -h'
 + Show usage string for 'git imap-send -h'
 + Show usage string for 'git get-tar-commit-id -h'
 + Show usage string for 'git fast-import -h'
 + Show usage string for 'git check-ref-format -h'
 + Show usage string for 'git show-ref -h'
 + Show usage string for 'git merge-ours -h'
 + Show usage string for 'git commit-tree -h'
 + Show usage string for 'git cherry -h'
 + Show usage string for 'git grep -h'
 (this branch uses jn/maint-http-fetch-mingw and jn/remove-fetch--tool.)

There were unrelated but still worthy fixes, so I reordered some of them;
also the "usage()" change is different from the one that was posted (see
my comment in $gmane/132592).

* jn/maint-http-fetch-mingw (2009-11-09) 1 commit.
  (merged to 'next' on 2009-11-17 at cd35125)
 + http-fetch: add missing initialization of argv0_path
 (this branch is used by jn/help-everywhere.)

* jn/remove-fetch--tool (2009-11-09) 1 commit
  (merged to 'next' on 2009-11-17 at 72f6c3b)
 + Retire fetch--tool helper to contrib/examples
 (this branch is used by jn/help-everywhere.)

These two were originally part of the "help-everywhere" topic but
they can stand on their own.

* jc/log-stdin (2009-11-03) 1 commit
 - Teach --stdin option to "log" family

This is not signed-off (see $gmane/131971 for list of things you can do to
help advancing this topic).

* jn/gitweb-log-history (2009-11-13) 3 commits
  (merged to 'next' on 2009-11-17 at d225f7d)
 + gitweb: Make 'history' view (re)use git_log_generic()
 + gitweb: Refactor common parts of 'log' and 'shortlog' views
 + gitweb: Refactor 'log' action generation, adding git_log_body()

* jn/rfc-pull-rebase-error-message (2009-11-12) 1 commit
 - git-pull.sh --rebase: overhaul error handling when no candidates are found

I heard this needs at least retitling among other changes?

* rg/doc-workflow (2009-11-17) 4 commits.
 - [Further RFC updates from Raman]
 - [An RFC fix-up to further reword release section]
 - Corrections to release management section in gitworkflows.txt
 - Add branch management for releases to gitworkflows

The top three patches are meant to be squashed into the first one.

* sb/ls-tree-parseopt (2009-11-13) 2 commits.
  (merged to 'next' on 2009-11-17 at c383204)
 + ls-tree: migrate to parse-options
 + t3101: test more ls-tree options

* jl/submodule-add-noname (2009-09-22) 1 commit.
  (merged to 'next' on 2009-11-15 at 3a77d01)
 + git submodule add: make the <path> parameter optional

Dscho started an interesting discussion regarding the larger workflow in
which the "submodule add" is used.  I think the patch itself makes sense
but at the same time it probably makes sense to also take the <path> and
infer the <repository> as Dscho suggested, probably in "git submodule
add", not in "git add" proper, at least initially.

* sc/protocol-doc (2009-11-03) 1 commit.
  (merged to 'next' on 2009-11-15 at 32d6de8)
 + Update packfile transfer protocol documentation

* tr/filter-branch (2009-11-10) 2 commits.
  (merged to 'next' on 2009-11-15 at 79c6a1d)
 + filter-branch: nearest-ancestor rewriting outside subdir filter
 + filter-branch: stop special-casing $filter_subdir argument

Updated again.  Looked sane, except that the option might not be
necessary, but that can be fixed while in 'next'.

* em/commit-claim (2009-11-04) 1 commit
 - commit -c/-C/--amend: reset timestamp and authorship to committer with --reset-author

I just picked better bits from both versions, but this needs to be
rethought.

* bg/format-patch-doc-update (2009-11-07) 4 commits.
  (merged to 'next' on 2009-11-17 at 68b9056)
 + format-patch: Add "--no-stat" as a synonym for "-p"
 + format-patch documentation: Fix formatting
 + format-patch documentation: Remove diff options that are not useful
 + format-patch: Always generate a patch

Looked sensible, even though this may want to wait for 1.7.0.  We'll see.

* rj/maint-simplify-cygwin-makefile (2009-10-27) 1 commit.
 - Makefile: merge two Cygwin configuration sections into one
 (this branch is used by rj/cygwin-msvc.)

This is one of the most obviously correct bit from "Compiling on Cygwin
using MSVC fails" topic.

* bg/fetch-multi (2009-11-10) 9 commits.
 - Re-implement 'git remote update' using 'git fetch'
 - builtin-fetch: add --dry-run option
 - builtin-fetch: add --prune option
 - teach warn_dangling_symref to take a FILE argument
 - remote: refactor some logic into get_stale_heads()
 - Add missing test for 'git remote update --prune'
 - Add the configuration option skipFetchAll
 - Teach the --multiple option to 'git fetch'
 - Teach the --all option to 'git fetch'

* cc/bisect-doc (2009-11-08) 1 commit
 - Documentation: add "Fighting regressions with git bisect" article

Any comments?  Should it go to Documentation/technical instead?

* jn/editor-pager (2009-10-30) 9 commits
  (merged to 'next' on 2009-11-15 at 7f3e3ae)
 + Provide a build time default-pager setting
 + Provide a build time default-editor setting
 + am -i, git-svn: use "git var GIT_PAGER"
 + add -i, send-email, svn, p4, etc: use "git var GIT_EDITOR"
 + Teach git var about GIT_PAGER
 + Teach git var about GIT_EDITOR
 + Suppress warnings from "git var -l"
 + Do not use VISUAL editor on dumb terminals
 + Handle more shell metacharacters in editor names

* bw/autoconf-more (2009-11-04) 2 commits
  (merged to 'next' on 2009-11-15 at e86a8c9)
 + configure: add settings for gitconfig, editor and pager
 + configure: add macro to set arbitrary make variables

This will follow jn/editor-pager series.

* sr/vcs-helper (2009-11-18) 12 commits
 - Add Python support library for remote helpers
 - Basic build infrastructure for Python scripts
 - Allow helpers to report in "list" command that the ref is unchanged
 - Fix various memory leaks in transport-helper.c
 - Allow helper to map private ref names into normal names
 - Add support for "import" helper command
 - Allow specifying the remote helper in the url
 - Add a config option for remotes to specify a foreign vcs
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 - Allow programs to not depend on remotes having urls
 - Fix memory leak in helper method for disconnect

Replaced again.

* mr/gitweb-snapshot (2009-11-07) 4 commits.
 - gitweb: Smarter snapshot names
 - gitweb: Document current snapshot rules via new tests
 - t/gitweb-lib.sh: Split gitweb output into headers and body
  (merged to 'next' on 2009-10-11 at 22ba047)
 + gitweb: check given hash before trying to create snapshot

Replaced commits near the tip with recent updates.

* jc/pretty-lf (2009-10-04) 1 commit.
 - Pretty-format: %[+-]x to tweak inter-item newlines

* ks/precompute-completion (2009-11-15) 4 commits.
  (merged to 'next' on 2009-11-15 at 23cdb96)
 + Revert ks/precompute-completion series
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

Reverted out of 'next', to be replaced with jn/faster-completion-startup
topic.

* sp/smart-http (2009-11-14) 37 commits
  (merged to 'next' on 2009-11-17 at 11067eb)
 + http-backend: Let gcc check the format of more printf-type functions.
 + http-backend: Fix access beyond end of string.
  (merged to 'next' on 2009-11-15 at 2a326b2)
 + http-backend: Fix bad treatment of uintmax_t in Content-Length
 + t5551-http-fetch: Work around broken Accept header in libcurl
 + t5551-http-fetch: Work around some libcurl versions
 + http-backend: Protect GIT_PROJECT_ROOT from /../ requests
 + Git-aware CGI to provide dumb HTTP transport
  (merged to 'next' on 2009-11-06 at 666837c)
 + http-backend: Test configuration options
 + http-backend: Use http.getanyfile to disable dumb HTTP serving
 + test smart http fetch and push
 + http tests: use /dumb/ URL prefix
 + set httpd port before sourcing lib-httpd
 + t5540-http-push: remove redundant fetches
 + Smart HTTP fetch: gzip requests
 + Smart fetch over HTTP: client side
 + Smart push over HTTP: client side
 + Discover refs via smart HTTP server when available
 + http-backend: more explict LocationMatch
 + http-backend: add example for gitweb on same URL
 + http-backend: use mod_alias instead of mod_rewrite
 + http-backend: reword some documentation
 + http-backend: add GIT_PROJECT_ROOT environment var
 + Smart fetch and push over HTTP: server side
 + Add stateless RPC options to upload-pack, receive-pack
 + Git-aware CGI to provide dumb HTTP transport
 + remote-helpers: return successfully if everything up-to-date
 + Move WebDAV HTTP push under remote-curl
 + remote-helpers: Support custom transport options
 + remote-helpers: Fetch more than one ref in a batch
 + fetch: Allow transport -v -v -v to set verbosity to 3
 + remote-curl: Refactor walker initialization
 + Add multi_ack_detailed capability to fetch-pack/upload-pack
 + Move "get_ack()" back to fetch-pack
 + fetch-pack: Use a strbuf to compose the want list
 + pkt-line: Make packet_read_line easier to debug
 + pkt-line: Add strbuf based functions
 + http-push: fix check condition on http.c::finish_http_pack_request()

* nd/sparse (2009-08-20) 19 commits.
 - sparse checkout: inhibit empty worktree
 - Add tests for sparse checkout
 - read-tree: add --no-sparse-checkout to disable sparse checkout support
 - unpack-trees(): ignore worktree check outside checkout area
 - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 - unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 - unpack-trees.c: generalize verify_* functions
 - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 - Introduce "sparse checkout"
 - dir.c: export excluded_1() and add_excludes_from_file_1()
 - excluded_1(): support exclude files in index
 - unpack-trees(): carry skip-worktree bit over in merged_entry()
 - Read .gitignore from index if it is skip-worktree
 - Avoid writing to buffer in add_excludes_from_file_1()
 - Teach Git to respect skip-worktree bit (writing part)
 - Teach Git to respect skip-worktree bit (reading part)
 - Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 - Add test-index-version
 - update-index: refactor mark_valid() in preparation for new options

The latest update I didn't look at very closely but I had an impression
that it was touching very generic codepath that would affect non sparse
cases, iow the patch looked very scary (the entire series already is).

--------------------------------------------------
[For 1.7.0]

* jc/1.7.0-no-commit-no-ff-2 (2009-10-22) 1 commit.
 - git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  I haven't described this at the beginning of this message
yet, as it is not clear if this change is even necessary.  Opinions?

* jk/1.7.0-status (2009-09-05) 5 commits.
 - docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

The tip one is not in 'next' as I have been hoping that somebody may want
to change the code to make it unnecessary, but it does not seem to be
happening, so probably it should also go to 'next'.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[I have been too busy to purge these]

* ne/rev-cache (2009-10-19) 7 commits.
 . support for commit grafts, slight change to general mechanism
 . support for path name caching in rev-cache
 . full integration of rev-cache into git, completed test suite
 . administrative functions for rev-cache, start of integration into git
 . support for non-commit object caching in rev-cache
 . basic revision cache system, no integration or features
 . man page and technical discussion for rev-cache

The author indicated that there is another round coming.  Does not seem to
pass the tests when merged to 'pu', so it has been ejected for now.

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Maybe some people care about this.  I dunno.

* pb/gitweb-no-project-list (2009-11-06) 3 commits.
 . gitweb: Polish the content tags support
 . gitweb: Support for no project list on gitweb front page
 . gitweb: Refactor project list routines

I picked these up but didn't queue as Warthog9's comments made certain
amount of sense to me.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Nov 2009, #05; Sun, 22)
@ 2009-11-23  6:16  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-11-23  6:16 UTC (permalink / raw)
  To: git

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planned changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * "git send-email" won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * git-status won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

 * "git diff -w/-b" won't even produce "diff --git" header when all changes
   are about whitespaces.

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

Tonight's tip of 'master' is at v1.6.6-rc0.  I am aware of a handful of
patches sent today but they didn't arraive before I started today's
integration cycle and are left out from today's tree.

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

* ls/maint-mailinfo-no-inbody (2009-11-20) 1 commit.
  (merged to 'next' on 2009-11-21 at dba8141)
 + git am/mailinfo: Don't look at in-body headers when rebasing

* rj/maint-t9700 (2009-11-19) 1 commit.
  (merged to 'next' on 2009-11-21 at 29e149b)
 + t9700-perl-git.sh: Fix a test failure on Cygwin

* jn/faster-completion-startup (2009-11-17) 1 commit.
 + Speed up bash completion loading

* th/maint-remote-update-help-string (2009-11-15) 1 commit.
 + Update 'git remote update' usage string to match man page.

* tc/format-attribute (2009-11-14) 1 commit
 + Check the format of more printf-type functions

* jk/maint-break-rename-reduce-memory (2009-11-16) 2 commits.
  (merged to 'next' on 2009-11-16 at 5b5a93f)
 + diffcore-break: save cnt_data for other phases
 + diffcore-break: free filespec data as we go

* bc/grep-i-F (2009-11-06) 1 commit.
  (merged to 'next' on 2009-11-17 at a9b138c)
 + grep: Allow case insensitive search of fixed-strings

* mm/config-pathname-tilde-expand (2009-11-17) 1 commit.
  (merged to 'next' on 2009-11-17 at 7ba213d)
 + Expand ~ and ~user in core.excludesfile, commit.template

* pb/maint-use-custom-perl (2009-11-17) 1 commit.
  (merged to 'next' on 2009-11-17 at 1ee8d46)
 + Make sure $PERL_PATH is defined when the test suite is run.

* th/remote-usage (2009-11-16) 1 commit.
 + git remote: Separate usage strings for subcommands

* mo/maint-crlf-doc (2009-11-14) 1 commit.
  (merged to 'next' on 2009-11-17 at abd9133)
 + core.autocrlf documentation: mention the crlf attribute

* rj/cygwin-msvc (2009-11-09) 2 commits.
 + MSVC: Add support for building with NO_MMAP
 + Makefile: keep MSVC and Cygwin configuration separate
 (this branch uses rj/maint-simplify-cygwin-makefile.)

* jp/fetch-cull-many-refs (2009-11-13) 3 commits
  (merged to 'next' on 2009-11-15 at db0f967)
 + remote: fix use-after-free error detected by glibc in ref_remove_duplicates
  (merged to 'next' on 2009-11-01 at 1f09ce9)
 + fetch: Speed up fetch of large numbers of refs
 + remote: Make ref_remove_duplicates faster for large numbers of refs

* jn/help-everywhere (2009-11-09) 21 commits
  (merged to 'next' on 2009-11-17 at 3a2dffe)
 + diff --no-index: make the usage string less scary
 + merge-{recursive,subtree}: use usagef() to print usage
 + Introduce usagef() that takes a printf-style format
 + Let 'git <command> -h' show usage without a git dir
 + Show usage string for 'git http-push -h'
 + Let 'git http-fetch -h' show usage outside any git repository
 + Show usage string for 'git stripspace -h'
 + Show usage string for 'git unpack-file -h'
 + Show usage string for 'git show-index -h'
 + Show usage string for 'git rev-parse -h'
 + Show usage string for 'git merge-one-file -h'
 + Show usage string for 'git mailsplit -h'
 + Show usage string for 'git imap-send -h'
 + Show usage string for 'git get-tar-commit-id -h'
 + Show usage string for 'git fast-import -h'
 + Show usage string for 'git check-ref-format -h'
 + Show usage string for 'git show-ref -h'
 + Show usage string for 'git merge-ours -h'
 + Show usage string for 'git commit-tree -h'
 + Show usage string for 'git cherry -h'
 + Show usage string for 'git grep -h'
 (this branch uses jn/maint-http-fetch-mingw and jn/remove-fetch--tool.)

* jn/maint-http-fetch-mingw (2009-11-09) 1 commit.
  (merged to 'next' on 2009-11-17 at cd35125)
 + http-fetch: add missing initialization of argv0_path
 (this branch is used by jn/help-everywhere.)

* jn/remove-fetch--tool (2009-11-09) 1 commit
  (merged to 'next' on 2009-11-17 at 72f6c3b)
 + Retire fetch--tool helper to contrib/examples
 (this branch is used by jn/help-everywhere.)

* jn/gitweb-log-history (2009-11-13) 3 commits
  (merged to 'next' on 2009-11-17 at d225f7d)
 + gitweb: Make 'history' view (re)use git_log_generic()
 + gitweb: Refactor common parts of 'log' and 'shortlog' views
 + gitweb: Refactor 'log' action generation, adding git_log_body()

* rg/doc-workflow (2009-11-17) 1 commit.
 + Add branch management for releases to gitworkflows

* sb/ls-tree-parseopt (2009-11-13) 2 commits.
  (merged to 'next' on 2009-11-17 at c383204)
 + ls-tree: migrate to parse-options
 + t3101: test more ls-tree options

* jl/submodule-add-noname (2009-09-22) 1 commit.
  (merged to 'next' on 2009-11-15 at 3a77d01)
 + git submodule add: make the <path> parameter optional

Dscho started an interesting discussion regarding the larger workflow in
which the "submodule add" is used.  I think the patch itself makes sense
but at the same time it probably makes sense to also take the <path> and
infer the <repository> as Dscho suggested, probably in "git submodule
add", not in "git add" proper, at least initially.

* sc/protocol-doc (2009-11-03) 1 commit.
  (merged to 'next' on 2009-11-15 at 32d6de8)
 + Update packfile transfer protocol documentation

* tr/filter-branch (2009-11-10) 2 commits.
  (merged to 'next' on 2009-11-15 at 79c6a1d)
 + filter-branch: nearest-ancestor rewriting outside subdir filter
 + filter-branch: stop special-casing $filter_subdir argument

* bg/format-patch-doc-update (2009-11-07) 4 commits.
  (merged to 'next' on 2009-11-17 at 68b9056)
 + format-patch: Add "--no-stat" as a synonym for "-p"
 + format-patch documentation: Fix formatting
 + format-patch documentation: Remove diff options that are not useful
 + format-patch: Always generate a patch

* rj/maint-simplify-cygwin-makefile (2009-10-27) 1 commit.
 + Makefile: merge two Cygwin configuration sections into one
 (this branch is used by rj/cygwin-msvc.)

* jn/editor-pager (2009-10-30) 9 commits
  (merged to 'next' on 2009-11-15 at 7f3e3ae)
 + Provide a build time default-pager setting
 + Provide a build time default-editor setting
 + am -i, git-svn: use "git var GIT_PAGER"
 + add -i, send-email, svn, p4, etc: use "git var GIT_EDITOR"
 + Teach git var about GIT_PAGER
 + Teach git var about GIT_EDITOR
 + Suppress warnings from "git var -l"
 + Do not use VISUAL editor on dumb terminals
 + Handle more shell metacharacters in editor names

* bw/autoconf-more (2009-11-04) 2 commits
  (merged to 'next' on 2009-11-15 at e86a8c9)
 + configure: add settings for gitconfig, editor and pager
 + configure: add macro to set arbitrary make variables

* sp/smart-http (2009-11-14) 37 commits
  (merged to 'next' on 2009-11-17 at 11067eb)
 + http-backend: Let gcc check the format of more printf-type functions.
 + http-backend: Fix access beyond end of string.
  (merged to 'next' on 2009-11-15 at 2a326b2)
 + http-backend: Fix bad treatment of uintmax_t in Content-Length
 + t5551-http-fetch: Work around broken Accept header in libcurl
 + t5551-http-fetch: Work around some libcurl versions
 + http-backend: Protect GIT_PROJECT_ROOT from /../ requests
 + Git-aware CGI to provide dumb HTTP transport
  (merged to 'next' on 2009-11-06 at 666837c)
 + http-backend: Test configuration options
 + http-backend: Use http.getanyfile to disable dumb HTTP serving
 + test smart http fetch and push
 + http tests: use /dumb/ URL prefix
 + set httpd port before sourcing lib-httpd
 + t5540-http-push: remove redundant fetches
 + Smart HTTP fetch: gzip requests
 + Smart fetch over HTTP: client side
 + Smart push over HTTP: client side
 + Discover refs via smart HTTP server when available
 + http-backend: more explict LocationMatch
 + http-backend: add example for gitweb on same URL
 + http-backend: use mod_alias instead of mod_rewrite
 + http-backend: reword some documentation
 + http-backend: add GIT_PROJECT_ROOT environment var
 + Smart fetch and push over HTTP: server side
 + Add stateless RPC options to upload-pack, receive-pack
 + Git-aware CGI to provide dumb HTTP transport
 + remote-helpers: return successfully if everything up-to-date
 + Move WebDAV HTTP push under remote-curl
 + remote-helpers: Support custom transport options
 + remote-helpers: Fetch more than one ref in a batch
 + fetch: Allow transport -v -v -v to set verbosity to 3
 + remote-curl: Refactor walker initialization
 + Add multi_ack_detailed capability to fetch-pack/upload-pack
 + Move "get_ack()" back to fetch-pack
 + fetch-pack: Use a strbuf to compose the want list
 + pkt-line: Make packet_read_line easier to debug
 + pkt-line: Add strbuf based functions
 + http-push: fix check condition on http.c::finish_http_pack_request()

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

* bg/apply-doc (2009-11-22) 4 commits
  (merged to 'next' on 2009-11-22 at b42fece)
 + apply: Use the term "working tree" consistently
 + apply: Format all options using back-quotes
 + apply: apply works outside a repository
 + Clarify and correct -z

* cc/replace (2009-11-19) 3 commits
  (merged to 'next' on 2009-11-21 at 2aaf84b)
 + Documentation: talk a little bit about GIT_NO_REPLACE_OBJECTS
 + Documentation: fix typos and spelling in replace documentation
 + replace: use a GIT_NO_REPLACE_OBJECTS env variable

* fc/send-email-envelope (2009-11-22) 1 commit.
 - t9001: test --envelope-sender option of send-email

The new feature itself looked promising; this is just an unrelated test
patch.

* gb/1.7.0-diff-whitespace-only-outout (2009-11-19) 1 commit
  (merged to 'next' on 2009-11-21 at 3375bf4)
 + No diff -b/-w output for all-whitespace changes

* jc/checkout-merge-base (2009-11-20) 2 commits
 - "rebase --onto A...B" replays history on the merge base between A and B
 - "checkout A...B" switches to the merge base between A and B

* mm/maint-hint-failed-merge (2009-11-22) 2 commits.
  (merged to 'next' on 2009-11-22 at c0f64c2)
 + user-manual: Document that "git merge" doesn't like uncommited changes.
 + merge-recursive: point the user to commit when file would be overwritten.

* rj/maint-cygwin-count-objects (2009-11-19) 2 commits.
  (merged to 'next' on 2009-11-22 at 4ba5880)
 + ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)
 + git-count-objects: Fix a disk-space under-estimate on Cygwin

* rs/color-escape-has-zero-width (2009-11-23) 1 commit
 - Teach %w() that color escape codes have zero width

* tr/reset-checkout-patch (2009-11-19) 1 commit.
  (merged to 'next' on 2009-11-22 at b224950)
 + {checkout,reset} -p: make patch direction configurable

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

* jc/fix-tree-walk (2009-10-22) 8 commits
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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

This has some stupid bugs and reverted from 'next' until I can fix it, but
the "temporarily" turned out to be very loooong.  Sigh...

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

It seemed to be moving again soon, but nothing has happened yet...

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

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

* jh/notes (2009-11-20) 10 commits
 - 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 using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction

Early part has been lived in 'next' for a while and has graduated.  This
is a reroll of the remainder.  Is everybody happy with merging this to
'next'?  I saw some checkpatch style violations, but didn't find anything
objectionable in the logic.

* jn/gitweb-blame (2009-11-19) 6 commits.
 - gitweb.js: fix null object exception in initials calculation
 - gitweb: Minify gitweb.js if JSMIN is defined
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame, with a few recent fixes.

* tr/maint-merge-ours-clarification (2009-11-15) 1 commit
  (merged to 'next' on 2009-11-21 at fadaf7b)
 + rebase: refuse to rebase with -s ours

* jc/log-stdin (2009-11-20) 4 commits
  (merged to 'next' on 2009-11-21 at c3e2e52)
 + Make --stdin option to "log" family read also pathspecs
 + setup_revisions(): do not call get_pathspec() too early
 + Teach --stdin option to "log" family
 + read_revision_from_stdin(): use strbuf

Still no tests yet but with docs from Peff.

* jn/rfc-pull-rebase-error-message (2009-11-12) 1 commit
 - git-pull.sh --rebase: overhaul error handling when no candidates are found

I heard this needs at least retitling among other changes?

* em/commit-claim (2009-11-04) 1 commit
 - commit -c/-C/--amend: reset timestamp and authorship to committer with --reset-author

I just picked better bits from both versions, but this needs to be
rethought.

* bg/fetch-multi (2009-11-10) 9 commits.
  (merged to 'next' on 2009-11-21 at 282f464)
 + Re-implement 'git remote update' using 'git fetch'
 + builtin-fetch: add --dry-run option
 + builtin-fetch: add --prune option
 + teach warn_dangling_symref to take a FILE argument
 + remote: refactor some logic into get_stale_heads()
 + Add missing test for 'git remote update --prune'
 + Add the configuration option skipFetchAll
 + Teach the --multiple option to 'git fetch'
 + Teach the --all option to 'git fetch'

* cc/bisect-doc (2009-11-08) 1 commit
 - Documentation: add "Fighting regressions with git bisect" article

Any comments?  Should it go to Documentation/technical instead?

* sr/vcs-helper (2009-11-18) 12 commits
 - Add Python support library for remote helpers
 - Basic build infrastructure for Python scripts
 - Allow helpers to report in "list" command that the ref is unchanged
 - Fix various memory leaks in transport-helper.c
 - Allow helper to map private ref names into normal names
 - Add support for "import" helper command
 - Allow specifying the remote helper in the url
 - Add a config option for remotes to specify a foreign vcs
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 - Allow programs to not depend on remotes having urls
 - Fix memory leak in helper method for disconnect

Replaced again.  Is everybody happy with merging this to 'next'?

* mr/gitweb-snapshot (2009-11-07) 4 commits.
  (merged to 'next' on 2009-11-21 at e825ad9)
 + gitweb: Smarter snapshot names
 + gitweb: Document current snapshot rules via new tests
 + t/gitweb-lib.sh: Split gitweb output into headers and body
  (merged to 'next' on 2009-10-11 at 22ba047)
 + gitweb: check given hash before trying to create snapshot

Soon in 'master'.

* jc/pretty-lf (2009-10-04) 1 commit.
 - Pretty-format: %[+-]x to tweak inter-item newlines

* ks/precompute-completion (2009-11-15) 4 commits.
  (merged to 'next' on 2009-11-15 at 23cdb96)
 + Revert ks/precompute-completion series
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

Reverted out of 'next', to be replaced with jn/faster-completion-startup
topic.

* nd/sparse (2009-08-20) 19 commits.
 - sparse checkout: inhibit empty worktree
 - Add tests for sparse checkout
 - read-tree: add --no-sparse-checkout to disable sparse checkout support
 - unpack-trees(): ignore worktree check outside checkout area
 - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 - unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 - unpack-trees.c: generalize verify_* functions
 - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 - Introduce "sparse checkout"
 - dir.c: export excluded_1() and add_excludes_from_file_1()
 - excluded_1(): support exclude files in index
 - unpack-trees(): carry skip-worktree bit over in merged_entry()
 - Read .gitignore from index if it is skip-worktree
 - Avoid writing to buffer in add_excludes_from_file_1()
 - Teach Git to respect skip-worktree bit (writing part)
 - Teach Git to respect skip-worktree bit (reading part)
 - Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 - Add test-index-version
 - update-index: refactor mark_valid() in preparation for new options

The latest update I didn't look at very closely but I had an impression
that it was touching very generic codepath that would affect non sparse
cases, iow the patch looked very scary (the entire series already is).

--------------------------------------------------
[For 1.7.0]

* jc/1.7.0-no-commit-no-ff-2 (2009-10-22) 1 commit.
 - git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  I haven't described this at the beginning of this message
yet, as it is not clear if this change is even necessary.  Opinions?

* jk/1.7.0-status (2009-09-05) 5 commits.
  (merged to 'next' on 2009-11-21 at 884bb56)
 + docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[I have been too busy to purge these]

* ne/rev-cache (2009-10-19) 7 commits.
 . support for commit grafts, slight change to general mechanism
 . support for path name caching in rev-cache
 . full integration of rev-cache into git, completed test suite
 . administrative functions for rev-cache, start of integration into git
 . support for non-commit object caching in rev-cache
 . basic revision cache system, no integration or features
 . man page and technical discussion for rev-cache

The author indicated that there is another round coming.  Does not seem to
pass the tests when merged to 'pu', so it has been ejected for now.

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Maybe some people care about this.  I dunno.

* pb/gitweb-no-project-list (2009-11-06) 3 commits.
 . gitweb: Polish the content tags support
 . gitweb: Support for no project list on gitweb front page
 . gitweb: Refactor project list routines

I picked these up but didn't queue as Warthog9's comments made certain
amount of sense to me.

^ permalink raw reply	[relevance 2%]

* Re: Commiting changes onto more than one branch
  @ 2009-11-25 16:50  3% ` Jakub Narebski
  0 siblings, 0 replies; 200+ results
From: Jakub Narebski @ 2009-11-25 16:50 UTC (permalink / raw)
  To: Mike Jarmy; +Cc: git

Mike Jarmy <mjarmy@gmail.com> writes:

> My question is this:  How do I manage a checkin for a bugfix that
> affects, say, only branches v3, v4, and v5?

Take a look at "Resolving conflicts/dependencies between topic
branches early" blog post by Junio C Hamano (git maintainer) at 
http://gitster.livejournal.com/27297.html

In short the solution is to create separate topic branch for a bugfix,
branching off earliest place where it would be relevant, then merge
this bugfix branch into all development branches you need
(e.g. maint-v3, maint-v4, maint-v5, master).

This means:

  $ git checkout -b fix-frobulator--issue-1235 maint-v3
  <create commit or series of commits>
  
  $ git checkout maint-v3
  $ git merge fix-frobulator--issue-1235
  <resolve conflicts if any>

  $ git checkout maint-v4
  $ git merge fix-frobulator--issue-1235
  <resolve conflicts if any>

  [...]

-- 
Jakub Narebski
Poland
ShadeHawk on #git

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Nov 2009, #06; Wed, 25)
@ 2009-11-26  1:03  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-11-26  1:03 UTC (permalink / raw)
  To: git

I wanted to do a 1.6.6-rc1 but somehow ended up spending too much time in
mail compose buffer instead of in C-mode today.  There are a few topics
that are in "stalled" state that may be worthy of being in 1.6.6.

We should start updating the Release Notes to make the 1.7.0 warning a bit
more visible.

-- >8 --

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planned changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * "git send-email" won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * "git status" won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

 * "git diff -w/-b" won't even produce "diff --git" header when all changes
   are about whitespaces.

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

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

* bg/fetch-multi (2009-11-10) 9 commits.
  (merged to 'next' on 2009-11-21 at 282f464)
 + Re-implement 'git remote update' using 'git fetch'
 + builtin-fetch: add --dry-run option
 + builtin-fetch: add --prune option
 + teach warn_dangling_symref to take a FILE argument
 + remote: refactor some logic into get_stale_heads()
 + Add missing test for 'git remote update --prune'
 + Add the configuration option skipFetchAll
 + Teach the --multiple option to 'git fetch'
 + Teach the --all option to 'git fetch'

* bg/apply-doc (2009-11-22) 4 commits
  (merged to 'next' on 2009-11-22 at b42fece)
 + apply: Use the term "working tree" consistently
 + apply: Format all options using back-quotes
 + apply: apply works outside a repository
 + Clarify and correct -z

* cc/replace (2009-11-19) 3 commits
  (merged to 'next' on 2009-11-21 at 2aaf84b)
 + Documentation: talk a little bit about GIT_NO_REPLACE_OBJECTS
 + Documentation: fix typos and spelling in replace documentation
 + replace: use a GIT_NO_REPLACE_OBJECTS env variable

* mm/maint-hint-failed-merge (2009-11-22) 2 commits.
  (merged to 'next' on 2009-11-22 at c0f64c2)
 + user-manual: Document that "git merge" doesn't like uncommited changes.
 + merge-recursive: point the user to commit when file would be overwritten.

* rj/maint-cygwin-count-objects (2009-11-19) 2 commits.
  (merged to 'next' on 2009-11-22 at 4ba5880)
 + ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)
 + git-count-objects: Fix a disk-space under-estimate on Cygwin

* rs/color-escape-has-zero-width (2009-11-23) 1 commit
 + Teach %w() that color escape codes have zero width

* jc/log-stdin (2009-11-23) 5 commits
  (merged to 'next' on 2009-11-23 at ea71363)
 + Add trivial tests for --stdin option to log family
  (merged to 'next' on 2009-11-21 at c3e2e52)
 + Make --stdin option to "log" family read also pathspecs
 + setup_revisions(): do not call get_pathspec() too early
 + Teach --stdin option to "log" family
 + read_revision_from_stdin(): use strbuf

* mr/gitweb-snapshot (2009-11-07) 4 commits.
  (merged to 'next' on 2009-11-21 at e825ad9)
 + gitweb: Smarter snapshot names
 + gitweb: Document current snapshot rules via new tests
 + t/gitweb-lib.sh: Split gitweb output into headers and body
  (merged to 'next' on 2009-10-11 at 22ba047)
 + gitweb: check given hash before trying to create snapshot

* rs/work-around-grep-opt-insanity (2009-11-23) 2 commits.
  (merged to 'next' on 2009-11-25 at bf972d8)
 + Protect scripted Porcelains from GREP_OPTIONS insanity
 + mergetool--lib: simplify guess_merge_tool()

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

* jc/botched-maint-cygwin-count-objects (2009-11-24) 2 commits
  (merged to 'next' on 2009-11-25 at 8aa62a0)
 + Revert "ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)"
  (merged to 'next' on 2009-11-22 at 4ba5880)
 + ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)

This is a revert of the tip one I merged prematurely to 'next'.  The real
fix from Ramsay is already in 'master'.

* jc/grep-full-tree (2009-11-24) 1 commit.
 - grep: --full-tree

We probably would want test, doc and a configuration variable to make it
default (or non-default) before we can merge it to 'master'.

* uk/maint-shortlog-encoding (2009-11-25) 1 commit.
 - shortlog: respect commit encoding

The fix is a maint material but the patch was against next, so I
back-rebased it myself.  I tried to be careful but please double check the
result.

Perhaps merge it to 'master' before 1.6.6-rc1?

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

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

* fc/send-email-envelope (2009-11-22) 1 commit.
 - t9001: test --envelope-sender option of send-email

The new feature itself looked promising; this is just an unrelated test
patch.

* jn/rfc-pull-rebase-error-message (2009-11-12) 1 commit
 - git-pull.sh --rebase: overhaul error handling when no candidates are found

I heard this needs at least retitling among other changes?

* sr/vcs-helper (2009-11-18) 12 commits
 - Add Python support library for remote helpers
 - Basic build infrastructure for Python scripts
 - Allow helpers to report in "list" command that the ref is unchanged
 - Fix various memory leaks in transport-helper.c
 - Allow helper to map private ref names into normal names
 - Add support for "import" helper command
 - Allow specifying the remote helper in the url
 - Add a config option for remotes to specify a foreign vcs
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 - Allow programs to not depend on remotes having urls
 - Fix memory leak in helper method for disconnect

Replaced again, and looking good.  Perhaps Daniel has some comments?

* jh/notes (2009-11-20) 10 commits
 - 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 using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction

Johan waits for an Ack from Shawn on "fast-import" one.

* tr/maint-merge-ours-clarification (2009-11-15) 1 commit
  (merged to 'next' on 2009-11-21 at fadaf7b)
 + rebase: refuse to rebase with -s ours

I do not think we reached a concensus for solving conflicts between "give
them rope" and "protect users from clearly meaningless combinations".  The
author obviously is for the latter (and I am inclined to agree); Dscho
seems to think otherwise.

* jc/fix-tree-walk (2009-10-22) 8 commits
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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

This has some stupid bugs and reverted from 'next' until I can fix it, but
the "temporarily" turned out to be very loooong.  Sigh...

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

Sverre is working on a re-roll to address comments from Shawn.

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

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
  (merged to 'next' on 2009-11-25 at 09d498f)
 + mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Jim Meyering sent a patch to do a subset of what this does; to allow
keeping '[SECURITY]' when the subject says '[SECURITY][PATCH]', you need
to also teach "am" to pass the new -b option, but that is independent of
what Jim showed the need in real-world, so I think this can go in as-is.

Perhaps merge it to 'master' before 1.6.6-rc1?

* jc/checkout-merge-base (2009-11-20) 2 commits
 - "rebase --onto A...B" replays history on the merge base between A and B
 - "checkout A...B" switches to the merge base between A and B

I've been using the first one for a while myself but do not see many users
want this (yet); the new feature is not urgent anyway.

* tr/reset-checkout-patch (2009-11-19) 1 commit.
  (merged to 'next' on 2009-11-22 at b224950)
 + {checkout,reset} -p: make patch direction configurable

I do not particularly like a configuration like this that changes the
behaviour of a command in a drastic way---it will make helping others much
harder.

Perhaps merge it to 'master' before 1.6.6-rc1?

* jn/gitweb-blame (2009-11-24) 8 commits.
  (merged to 'next' on 2009-11-25 at 0a5b649)
 + gitweb.js: fix padLeftStr() and its usage
 + gitweb.js: Harden setting blamed commit info in incremental blame
 + gitweb.js: fix null object exception in initials calculation
 + gitweb: Minify gitweb.js if JSMIN is defined
 + gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame, with further fixes.  As this does not seem to break existing
features, I am inclined to say that we push this out early, as a new
feature with known breakages, to give it wider audience.

* em/commit-claim (2009-11-04) 1 commit
  (merged to 'next' on 2009-11-23 at b5df6fd)
 + commit -c/-C/--amend: reset timestamp and authorship to committer with --reset-author

I am not sure if the option name does a good job at explaining it to the
end users, but I think the code and feature is solid.

Perhaps merge it to 'master' before 1.6.6-rc1?

* cc/bisect-doc (2009-11-08) 1 commit
 - Documentation: add "Fighting regressions with git bisect" article

Nobody seems to think this should go to Documentation/technical instead,
so unless I hear otherwise, we will have it as-is in 'next' shortly.

Perhaps merge it to 'master' before 1.6.6-rc1?

* nd/sparse (2009-11-25) 20 commits.
  (merged to 'next' on 2009-11-25 at 71380f5)
 + tests: rename duplicate t1009
  (merged to 'next' on 2009-11-23 at f712a41)
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

* jc/pretty-lf (2009-10-04) 1 commit.
 - Pretty-format: %[+-]x to tweak inter-item newlines

Perhaps drop the "%-x" part and merge it to 'next' and to 'master' before
1.6.6?

--------------------------------------------------
[For 1.7.0]

* jk/1.7.0-status (2009-09-05) 5 commits.
  (merged to 'next' on 2009-11-21 at 884bb56)
 + docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change, but
we could argue that it is a bugfix.

* gb/1.7.0-diff-whitespace-only-outout (2009-11-19) 1 commit
  (merged to 'next' on 2009-11-21 at 3375bf4)
 + No diff -b/-w output for all-whitespace changes

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[I have been too busy to purge these]

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/1.7.0-no-commit-no-ff-2 (2009-10-22) 1 commit.
 . git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  It appears nobody wants to have this, so I dropped it.

* ne/rev-cache (2009-10-19) 7 commits.
 . support for commit grafts, slight change to general mechanism
 . support for path name caching in rev-cache
 . full integration of rev-cache into git, completed test suite
 . administrative functions for rev-cache, start of integration into git
 . support for non-commit object caching in rev-cache
 . basic revision cache system, no integration or features
 . man page and technical discussion for rev-cache

The author indicated that there is another round coming.  Does not seem to
pass the tests when merged to 'pu', so it has been ejected for now.

* pb/gitweb-no-project-list (2009-11-06) 3 commits.
 . gitweb: Polish the content tags support
 . gitweb: Support for no project list on gitweb front page
 . gitweb: Refactor project list routines

I picked these up but didn't queue as Warthog9's comments made certain
amount of sense to me.

* ks/precompute-completion (2009-11-15) 4 commits.
  (merged to 'next' on 2009-11-15 at 23cdb96)
 + Revert ks/precompute-completion series
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

Reverted out of 'next', to be replaced with jn/faster-completion-startup
topic.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Nov 2009, #07; Sun, 29)
@ 2009-11-29 10:05  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-11-29 10:05 UTC (permalink / raw)
  To: git

This will be the last update before deciding what should go in 1.6.6-rc1
and describes my current thinking.

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planned changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * "git send-email" won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * "git status" won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

 * "git diff -w/-b" won't even produce "diff --git" header when all changes
   are about whitespaces.

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

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

* fc/maint-format-patch-pathspec-dashes (2009-11-26) 2 commits.
 - format-patch: add test for parsing of "--"
 - format-patch: fix parsing of "--" on the command line

* bw/diff-color-hunk-header (2009-11-27) 2 commits
  (merged to 'next' on 2009-11-29 at c446977)
 + Give the hunk comment its own color
  (merged to 'next' on 2009-11-27 at 42ab131)
 + emit_line(): don't emit an empty <SET><RESET> followed by a newline

* jc/maint-am-keep (2009-11-27) 1 commit.
  (merged to 'next' on 2009-11-27 at 7663874)
 + Remove dead code from "git am"

* tr/http-updates (2009-11-27) 2 commits
 - Add an option for using any HTTP authentication scheme, not only basic
 - http: maintain curl sessions

* jc/diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: flip the default diff.bwoutputonly to true
 - diff: optionally allow traditional "-b/-w affects only output" semantics
 (this branch uses gb/1.7.0-diff-whitespace-only-output and jc/1.7.0-diff-whitespace-only-status; is used by jc/1.7.0-diff-whitespace-prepare.)

This is to redo the two -b/-w semantic changes to prepare the migration of
existing users before 1.7.0 happens.

* jc/1.7.0-diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: disable diff.bwoutputonly warning
 - diff: flip the diff.bwoutputonly default to false
 (this branch uses gb/1.7.0-diff-whitespace-only-output, jc/1.7.0-diff-whitespace-only-status and jc/diff-whitespace-prepare.)

And this is to actually flip the default and eventually remove the warning.

* ns/send-email-no-chain-reply-to (2009-11-29) 1 commit
 - prepare send-email for smoother change of --chain-reply-to default
 (this branch is used by ns/1.7.0-send-email-no-chain-reply-to.)

Similarly, this is to start warning about the change to --no-chain-reply-to
in 1.7.0 for smoother transition.

* ns/1.7.0-send-email-no-chain-reply-to (2009-08-22) 1 commit
 - send-email: make --no-chain-reply-to the default
 (this branch uses ns/send-email-no-chain-reply-to.)

And this is to actually flip the default in 1.7.0.

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

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

* jn/rfc-pull-rebase-error-message (2009-11-12) 1 commit
 - git-pull.sh --rebase: overhaul error handling when no candidates are found

I heard this needs at least retitling among other changes?

* jh/notes (2009-11-20) 10 commits
 - 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 using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction

Johan waits for an Ack from Shawn on "fast-import" one.

* tr/maint-merge-ours-clarification (2009-11-15) 1 commit
  (merged to 'next' on 2009-11-21 at fadaf7b)
 + rebase: refuse to rebase with -s ours

I do not think we reached a concensus for solving conflicts between "give
them rope" and "protect users from clearly meaningless combinations".  The
author obviously is for the latter (and I am inclined to agree); Dscho
seems to think otherwise.

* jc/fix-tree-walk (2009-10-22) 8 commits
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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

This has some stupid bugs and reverted from 'next' until I can fix it, but
the "temporarily" turned out to be very loooong.  Sigh...

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

Sverre is working on a re-roll to address comments from Shawn.

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

* sr/vcs-helper (2009-11-18) 12 commits
  (merged to 'next' on 2009-11-27 at 83268ab)
 + Add Python support library for remote helpers
 + Basic build infrastructure for Python scripts
 + Allow helpers to report in "list" command that the ref is unchanged
 + Fix various memory leaks in transport-helper.c
 + Allow helper to map private ref names into normal names
 + Add support for "import" helper command
 + Allow specifying the remote helper in the url
 + Add a config option for remotes to specify a foreign vcs
 + Allow fetch to modify refs
 + Use a function to determine whether a remote is valid
 + Allow programs to not depend on remotes having urls
 + Fix memory leak in helper method for disconnect

* jc/grep-full-tree (2009-11-24) 1 commit.
 - grep: --full-tree

The interaction with this option and pathspecs need to be worked out
better.  I _think_ "grep --full-tree -e pattern -- '*.h'" should find from
all the header files in the tree, for example.

* uk/maint-shortlog-encoding (2009-11-25) 1 commit.
 - shortlog: respect commit encoding

The fix is a maint material but the patch was against next, so I
back-rebased it myself.  I tried to be careful but please double check the
result.

Perhaps merge it to 'master' before 1.6.6-rc1?

* fc/send-email-envelope (2009-11-26) 2 commits.
  (merged to 'next' on 2009-11-27 at 2d0257d)
 + send-email: automatic envelope sender
 + t9001: test --envelope-sender option of send-email

Perhaps merge it to 'master' before 1.6.6-rc1?

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
  (merged to 'next' on 2009-11-25 at 09d498f)
 + mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Jim Meyering sent a patch to do a subset of what this does; to allow
keeping '[SECURITY]' when the subject says '[SECURITY][PATCH]', you need
to also teach "am" to pass the new -b option, but that is independent of
what Jim showed the need in real-world, so I think this can go in as-is.

Perhaps merge it to 'master' before 1.6.6-rc1?

* jc/checkout-merge-base (2009-11-20) 2 commits
 - "rebase --onto A...B" replays history on the merge base between A and B
 - "checkout A...B" switches to the merge base between A and B

I've been using the first one for a while myself but do not see many users
want this (yet); the new feature is not urgent anyway.

* tr/reset-checkout-patch (2009-11-19) 1 commit.
  (merged to 'next' on 2009-11-22 at b224950)
 + {checkout,reset} -p: make patch direction configurable

I do not particularly like a configuration like this that changes the
behaviour of a command in a drastic way---it will make helping others much
harder.

Perhaps merge it to 'master' before 1.6.6-rc1?

* jn/gitweb-blame (2009-11-24) 8 commits.
  (merged to 'next' on 2009-11-25 at 0a5b649)
 + gitweb.js: fix padLeftStr() and its usage
 + gitweb.js: Harden setting blamed commit info in incremental blame
 + gitweb.js: fix null object exception in initials calculation
 + gitweb: Minify gitweb.js if JSMIN is defined
 + gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

Ajax-y blame, with further fixes.  As this does not seem to break existing
features, I am inclined to say that we push this out early, as a new
feature with known breakages, to give it wider audience.

* em/commit-claim (2009-11-04) 1 commit
  (merged to 'next' on 2009-11-23 at b5df6fd)
 + commit -c/-C/--amend: reset timestamp and authorship to committer with --reset-author

I am not sure if the option name does a good job at explaining it to the
end users, but I think the code and feature is solid.

Perhaps merge it to 'master' before 1.6.6-rc1?

* cc/bisect-doc (2009-11-08) 1 commit
  (merged to 'next' on 2009-11-27 at c46d648)
 + Documentation: add "Fighting regressions with git bisect" article

Perhaps merge it to 'master' before 1.6.6-rc1?

* nd/sparse (2009-11-25) 20 commits.
  (merged to 'next' on 2009-11-25 at 71380f5)
 + tests: rename duplicate t1009
  (merged to 'next' on 2009-11-23 at f712a41)
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

* jc/pretty-lf (2009-10-04) 1 commit.
  (merged to 'next' on 2009-11-27 at 73651c4)
 + Pretty-format: %[+-]x to tweak inter-item newlines

Perhaps merge it to 'master' before 1.6.6-rc1?

--------------------------------------------------
[For 1.7.0]

* jk/1.7.0-status (2009-11-27) 7 commits.
  (merged to 'next' on 2009-11-27 at 91691ec)
 + t7508-status.sh: Add tests for status -s
 + status -s: respect the status.relativePaths option
  (merged to 'next' on 2009-11-21 at 884bb56)
 + docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

Immediately after 1.6.6 while rebuilding 'next', we may want to reorder a
few commits at the tip, as "docs: affects only long format" describes a
limitation that will disappear soon.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change,
and jc/diff-whitespace-prepare topic is meant to ease the transition.

* gb/1.7.0-diff-whitespace-only-output (2009-11-19) 1 commit
  (merged to 'next' on 2009-11-21 at 3375bf4)
 + No diff -b/-w output for all-whitespace changes
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

Likewise.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

--------------------------------------------------
[Reverted from 'next']

* jc/botched-maint-cygwin-count-objects (2009-11-24) 2 commits
  (merged to 'next' on 2009-11-25 at 8aa62a0)
 + Revert "ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)"
  (merged to 'next' on 2009-11-22 at 4ba5880)
 + ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)

This is a revert of the tip one I merged prematurely to 'next'.  The real
fix from Ramsay is already in 'master'.

* ks/precompute-completion (2009-11-15) 4 commits.
  (merged to 'next' on 2009-11-15 at 23cdb96)
 + Revert ks/precompute-completion series
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

Reverted out of 'next', to be replaced with jn/faster-completion-startup
topic.

--------------------------------------------------
[I have been too busy to purge these]

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/1.7.0-no-commit-no-ff-2 (2009-10-22) 1 commit.
 . git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  It appears nobody wants to have this, so I dropped it.

* ne/rev-cache (2009-10-19) 7 commits.
 . support for commit grafts, slight change to general mechanism
 . support for path name caching in rev-cache
 . full integration of rev-cache into git, completed test suite
 . administrative functions for rev-cache, start of integration into git
 . support for non-commit object caching in rev-cache
 . basic revision cache system, no integration or features
 . man page and technical discussion for rev-cache

The author indicated that there is another round coming.  Does not seem to
pass the tests when merged to 'pu', so it has been ejected for now.

* pb/gitweb-no-project-list (2009-11-06) 3 commits.
 . gitweb: Polish the content tags support
 . gitweb: Support for no project list on gitweb front page
 . gitweb: Refactor project list routines

I picked these up but didn't queue as Warthog9's comments made certain
amount of sense to me.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Dec 2009, #01; Tue, 01)
@ 2009-12-01 22:10  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-12-01 22:10 UTC (permalink / raw)
  To: git

I am this close to actually tagging 1.6.6-rc1, but I am reasonably sure
that I missed and did not pick up a few important fixes that should go
into it, so here is the current status.



What's cooking in git.git (Dec 2009, #01; Tue, 01)
--------------------------------------------------

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planned changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * "git send-email" won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * "git status" won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

 * "git diff -w/-b" won't even produce "diff --git" header when all changes
   are about whitespaces.

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

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

* fc/maint-format-patch-pathspec-dashes (2009-11-26) 2 commits.
 + format-patch: add test for parsing of "--"
 + format-patch: fix parsing of "--" on the command line

* bw/diff-color-hunk-header (2009-11-27) 2 commits
  (merged to 'next' on 2009-11-29 at c446977)
 + Give the hunk comment its own color
  (merged to 'next' on 2009-11-27 at 42ab131)
 + emit_line(): don't emit an empty <SET><RESET> followed by a newline

* jc/maint-am-keep (2009-11-27) 1 commit.
  (merged to 'next' on 2009-11-27 at 7663874)
 + Remove dead code from "git am"

* ns/send-email-no-chain-reply-to (2009-11-29) 1 commit
 + prepare send-email for smoother change of --chain-reply-to default
  (this branch is used by ns/1.7.0-send-email-no-chain-reply-to.)

This starts warning about the change to --no-chain-reply-to
in 1.7.0 for smoother transition.

* uk/maint-shortlog-encoding (2009-11-25) 1 commit.
 - shortlog: respect commit encoding

* fc/send-email-envelope (2009-11-26) 2 commits.
  (merged to 'next' on 2009-11-27 at 2d0257d)
 + send-email: automatic envelope sender
 + t9001: test --envelope-sender option of send-email

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
  (merged to 'next' on 2009-11-25 at 09d498f)
 + mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

Jim Meyering sent a patch to do a subset of what this does; to allow
keeping '[SECURITY]' when the subject says '[SECURITY][PATCH]', you need
to also teach "am" to pass the new -b option, but that is independent of
what Jim showed the need in real-world, so I think this can go in as-is.

* jn/gitweb-blame (2009-11-24) 8 commits.
  (merged to 'next' on 2009-11-25 at 0a5b649)
 + gitweb.js: fix padLeftStr() and its usage
 + gitweb.js: Harden setting blamed commit info in incremental blame
 + gitweb.js: fix null object exception in initials calculation
 + gitweb: Minify gitweb.js if JSMIN is defined
 + gitweb: Create links leading to 'blame_incremental' using JavaScript
  (merged to 'next' on 2009-10-11 at 73c4a83)
 + gitweb: Colorize 'blame_incremental' view during processing
 + gitweb: Incremental blame (using JavaScript)
 + gitweb: Add optional "time to generate page" info in footer

With two more changes to disable this by default to make it
suitable as "new feature with known breakages" for 1.6.6

* em/commit-claim (2009-11-04) 1 commit
  (merged to 'next' on 2009-11-23 at b5df6fd)
 + commit -c/-C/--amend: reset timestamp and authorship to committer with --reset-author

* cc/bisect-doc (2009-11-08) 1 commit
  (merged to 'next' on 2009-11-27 at c46d648)
 + Documentation: add "Fighting regressions with git bisect" article

* jc/pretty-lf (2009-10-04) 1 commit.
  (merged to 'next' on 2009-11-27 at 73651c4)
 + Pretty-format: %[+-]x to tweak inter-item newlines

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

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix but otherwise seemed good.

* mo/bin-wrappers (2009-11-29) 3 commits
 - INSTALL: document a simpler way to run uninstalled builds
 - run test suite without dashed git-commands in PATH
 - build dashless "bin-wrappers" directory similar to installed bindir

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

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

* jn/rfc-pull-rebase-error-message (2009-11-12) 1 commit
 - git-pull.sh --rebase: overhaul error handling when no candidates are found

I heard this needs at least retitling among other changes?

* jh/notes (2009-11-20) 10 commits
 - 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 using the notes API
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction

Johan waits for an Ack from Shawn on "fast-import" one.

* tr/maint-merge-ours-clarification (2009-11-15) 1 commit
  (merged to 'next' on 2009-11-21 at fadaf7b)
 + rebase: refuse to rebase with -s ours

I do not think we reached a concensus for solving conflicts between "give
them rope" and "protect users from clearly meaningless combinations".  The
author obviously is for the latter (and I am inclined to agree); Dscho
seems to think otherwise.

* jc/fix-tree-walk (2009-10-22) 8 commits
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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

This has some stupid bugs and reverted from 'next' until I can fix it, but
the "temporarily" turned out to be very loooong.  Sigh.  We won't have a
proper fix in 1.6.6.

* sr/gfi-options (2009-09-06) 6 commits.
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: test the new feature command
 - fast-import: add feature command
 - fast-import: put marks reading in it's own function
 - fast-import: put option parsing code in separate functions

Sverre is working on a re-roll to address comments from Shawn.

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

* tr/http-updates (2009-11-27) 2 commits
 - Add an option for using any HTTP authentication scheme, not only basic
 - http: maintain curl sessions

It seems that this is still under discussion...

* jc/diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: flip the default diff.bwoutputonly to true
 - diff: optionally allow traditional "-b/-w affects only output" semantics
 (this branch uses gb/1.7.0-diff-whitespace-only-output and jc/1.7.0-diff-whitespace-only-status; is used by jc/1.7.0-diff-whitespace-prepare.)

This is to redo the two -b/-w semantic changes to prepare the migration of
existing users before 1.7.0 happens.

* sr/vcs-helper (2009-11-18) 12 commits
  (merged to 'next' on 2009-11-27 at 83268ab)
 + Add Python support library for remote helpers
 + Basic build infrastructure for Python scripts
 + Allow helpers to report in "list" command that the ref is unchanged
 + Fix various memory leaks in transport-helper.c
 + Allow helper to map private ref names into normal names
 + Add support for "import" helper command
 + Allow specifying the remote helper in the url
 + Add a config option for remotes to specify a foreign vcs
 + Allow fetch to modify refs
 + Use a function to determine whether a remote is valid
 + Allow programs to not depend on remotes having urls
 + Fix memory leak in helper method for disconnect

Should be among the first to graduate after 1.6.6 final.

* jc/grep-full-tree (2009-11-24) 1 commit.
 - grep: --full-tree

The interaction with this option and pathspecs need to be worked out
better.  I _think_ "grep --full-tree -e pattern -- '*.h'" should find from
all the header files in the tree, for example.

* jc/checkout-merge-base (2009-11-20) 2 commits
 - "rebase --onto A...B" replays history on the merge base between A and B
 - "checkout A...B" switches to the merge base between A and B

I've been using the first one for a while myself but do not see many users
want this (yet); the new feature is not urgent anyway.

* tr/reset-checkout-patch (2009-11-19) 1 commit.
  (merged to 'next' on 2009-11-22 at b224950)
 + {checkout,reset} -p: make patch direction configurable

I do not particularly like a configuration like this that changes the
behaviour of a command in a drastic way---it will make helping others
much harder.

* nd/sparse (2009-11-25) 20 commits.
  (merged to 'next' on 2009-11-25 at 71380f5)
 + tests: rename duplicate t1009
  (merged to 'next' on 2009-11-23 at f712a41)
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

There were some test glitches reported and at least one test seems to 
be broken in the sense that it is not testing what it is trying to.
Fix-up expected.

--------------------------------------------------
[For 1.7.0]

* jk/1.7.0-status (2009-11-27) 7 commits.
  (merged to 'next' on 2009-11-27 at 91691ec)
 + t7508-status.sh: Add tests for status -s
 + status -s: respect the status.relativePaths option
  (merged to 'next' on 2009-11-21 at 884bb56)
 + docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

Immediately after 1.6.6 while rebuilding 'next', we may want to reorder a
few commits at the tip, as "docs: affects only long format" describes a
limitation that will disappear soon.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

As the title says.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change,
and jc/diff-whitespace-prepare topic is meant to ease the transition.

* gb/1.7.0-diff-whitespace-only-output (2009-11-19) 1 commit
  (merged to 'next' on 2009-11-21 at 3375bf4)
 + No diff -b/-w output for all-whitespace changes
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

Likewise but for the output of "diff --git" headers.

* jc/1.7.0-diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: disable diff.bwoutputonly warning
 - diff: flip the diff.bwoutputonly default to false
 (this branch uses gb/1.7.0-diff-whitespace-only-output, jc/1.7.0-diff-whitespace-only-status and jc/diff-whitespace-prepare.)

And this is to actually flip the default and eventually remove the warning.

* ns/1.7.0-send-email-no-chain-reply-to (2009-08-22) 1 commit
 - send-email: make --no-chain-reply-to the default

And this is to actually flip the default in 1.7.0.


--------------------------------------------------
[Reverted from 'next']

* jc/botched-maint-cygwin-count-objects (2009-11-24) 2 commits
  (merged to 'next' on 2009-11-25 at 8aa62a0)
 + Revert "ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)"
  (merged to 'next' on 2009-11-22 at 4ba5880)
 + ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)

This is a revert of the tip one I merged prematurely to 'next'.  The real
fix from Ramsay is already in 'master'.

* ks/precompute-completion (2009-11-15) 4 commits.
  (merged to 'next' on 2009-11-15 at 23cdb96)
 + Revert ks/precompute-completion series
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

Reverted out of 'next', to be replaced with jn/faster-completion-startup
topic.

--------------------------------------------------
[I have been too busy to purge these]

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/1.7.0-no-commit-no-ff-2 (2009-10-22) 1 commit.
 . git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  It appears nobody wants to have this, so I dropped it.

* ne/rev-cache (2009-10-19) 7 commits.
 . support for commit grafts, slight change to general mechanism
 . support for path name caching in rev-cache
 . full integration of rev-cache into git, completed test suite
 . administrative functions for rev-cache, start of integration into git
 . support for non-commit object caching in rev-cache
 . basic revision cache system, no integration or features
 . man page and technical discussion for rev-cache

The author indicated that there is another round coming.  Does not seem to
pass the tests when merged to 'pu', so it has been ejected for now.

* pb/gitweb-no-project-list (2009-11-06) 3 commits.
 . gitweb: Polish the content tags support
 . gitweb: Support for no project list on gitweb front page
 . gitweb: Refactor project list routines

I picked these up but didn't queue as Warthog9's comments made certain
amount of sense to me.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Dec 2009, #02; Sat, 05)
@ 2009-12-06  8:17  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-12-06  8:17 UTC (permalink / raw)
  To: git

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.

In 1.7.0, we plan to correct handful of warts in the interfaces everybody
agrees that they were mistakes.  The resulting system may not be strictly
backward compatible.  Currently planned changes are:

 * refuse push to update the checked out branch in a non-bare repo by
   default

   Make "git push" into a repository to update the branch that is checked
   out fail by default.  You can countermand this default by setting a
   configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007

 * refuse push to delete the current branch by default

   Make "git push $there :$killed" to delete the branch that is pointed at
   by its HEAD fail by default.  You can countermand this default by
   setting a configuration variable in the receiving repository.

   http://thread.gmane.org/gmane.comp.version-control.git/108862/focus=108936

 * "git send-email" won't make deep threads by default

   Many people said that by default when sending more than 2 patches the
   threading git-send-email makes by default is hard to read, and they
   prefer the default be one cover letter and each patch as a direct
   follow-up to the cover letter.  You can countermand this by setting a
   configuration variable.

   http://article.gmane.org/gmane.comp.version-control.git/109790

 * "git status" won't be "git-commit --dry-run" anymore

   http://thread.gmane.org/gmane.comp.version-control.git/125989/focus=125993

 * "git diff -w --exit-code" will exit success if only differences it
   found are whitespace changes that are stripped away from the output.

   http://thread.gmane.org/gmane.comp.version-control.git/119731/focus=119751

 * "git diff -w/-b" won't even produce "diff --git" header when all changes
   are about whitespaces.

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

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

Note: Ilari's vcs-helper series hasn't been queued yet, as its first round
generated a healthy amount of discussion and he made it clear that the
second round is being prepared, addressing the comments given on the list.
Hopefully trivial coding style issues in the first round will also be
fixed (e.g. keyword "if" lacked a SP after it before opening parenthesis
of the condition) in the second round.

* jn/maint-pull-rebase-error-message (2009-11-27) 1 commit.
  (merged to 'next' on 2009-12-03 at 2ced03c)
 + pull: clarify advice for the unconfigured error case

Replaces old 'jn/rfc-pull-rebase-error-message' topic.

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
 - General --quiet improvements

* mv/commit-date (2009-12-03) 2 commits
 - Document date formats accepted by parse_date()
 - builtin-commit: add --date option

* mh/rebase-fixup (2009-12-05) 4 commits
 - [squash to Add a command "fix"] Avoid "\(alternatives\|choices\)" in sed script
 - Add a command "fix" to rebase --interactive.
 - t3404: set a couple more tags in the original repository
 - t3404: Better document the original repository layout

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

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

* jc/checkout-merge-base (2009-11-20) 2 commits
 - "rebase --onto A...B" replays history on the merge base between A and B
 - "checkout A...B" switches to the merge base between A and B

I've been using the first one for a while myself but do not see many users
want this (yet); the new feature is not urgent anyway.

* jh/notes (2009-12-02) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style fixes to notes.c
 - 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

Rerolled (waiting for Acks).

* tr/maint-merge-ours-clarification (2009-11-15) 1 commit
  (merged to 'next' on 2009-11-21 at fadaf7b)
 + rebase: refuse to rebase with -s ours

I do not think we reached a concensus for solving conflicts between "give
them rope" and "protect users from clearly meaningless combinations".  The
author obviously is for the latter (and I am inclined to agree); Dscho
seems to think otherwise.

* jc/fix-tree-walk (2009-10-22) 8 commits
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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

This has some stupid bugs and reverted from 'next' until I can fix it, but
the "temporarily" turned out to be very loooong.  Sigh.  We won't have a
proper fix in 1.6.6.

* jc/grep-full-tree (2009-11-24) 1 commit.
 - grep: --full-tree

The interaction with this option and pathspecs need to be worked out
better.  I _think_ "grep --full-tree -e pattern -- '*.h'" should find from
all the header files in the tree, for example.

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

* sr/gfi-options (2009-12-04) 7 commits
 - 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

Rerolled.

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

* mo/bin-wrappers (2009-12-02) 3 commits
 - INSTALL: document a simpler way to run uninstalled builds
 - run test suite without dashed git-commands in PATH
 - build dashless "bin-wrappers" directory similar to installed bindir

Rerolled.

* tr/http-updates (2009-12-01) 3 commits
 - Allow curl to rewind the RPC read buffer
 - Add an option for using any HTTP authentication scheme, not only basic
 - http: maintain curl sessions

There was a discussion on a better structure not to require rewinding in
the first place?  I didn't follow it closely...

* jc/diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: flip the default diff.bwoutputonly to true
 - diff: optionally allow traditional "-b/-w affects only output" semantics
 (this branch uses gb/1.7.0-diff-whitespace-only-output and jc/1.7.0-diff-whitespace-only-status; is used by jc/1.7.0-diff-whitespace-prepare.)

This is to redo the two -b/-w semantic changes to prepare the migration of
existing users before 1.7.0 happens.

* sr/vcs-helper (2009-12-04) 13 commits
  (merged to 'next' on 2009-12-03 at e45b562)
 + builtin-push: don't access freed transport->url
  (merged to 'next' on 2009-11-27 at 83268ab)
 + Add Python support library for remote helpers
 + Basic build infrastructure for Python scripts
 + Allow helpers to report in "list" command that the ref is unchanged
 + Fix various memory leaks in transport-helper.c
 + Allow helper to map private ref names into normal names
 + Add support for "import" helper command
 + Allow specifying the remote helper in the url
 + Add a config option for remotes to specify a foreign vcs
 + Allow fetch to modify refs
 + Use a function to determine whether a remote is valid
 + Allow programs to not depend on remotes having urls
 + Fix memory leak in helper method for disconnect

Should be among the first to graduate after 1.6.6 final.

* tr/reset-checkout-patch (2009-11-19) 1 commit.
  (merged to 'next' on 2009-11-22 at b224950)
 + {checkout,reset} -p: make patch direction configurable

I do not particularly like a configuration like this that changes the
behaviour of a command in a drastic way---it will make helping others
much harder.

* nd/sparse (2009-11-25) 20 commits.
  (merged to 'next' on 2009-11-25 at 71380f5)
 + tests: rename duplicate t1009
  (merged to 'next' on 2009-11-23 at f712a41)
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

There were some test glitches reported and at least one test seems to 
be broken in the sense that it is not testing what it is trying to.
Fix-up expected.

--------------------------------------------------
[For 1.7.0]

* jk/1.7.0-status (2009-12-05) 9 commits.
  (merged to 'next' on 2009-12-05 at 44dcefd)
 + status -s: obey color.status
 + builtin-commit: refactor short-status code into wt-status.c
  (merged to 'next' on 2009-11-27 at 91691ec)
 + t7508-status.sh: Add tests for status -s
 + status -s: respect the status.relativePaths option
  (merged to 'next' on 2009-11-21 at 884bb56)
 + docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

Immediately after 1.6.6 while rebuilding 'next', we may want to reorder a
few commits at the tip, as "docs: affects only long format" describes a
limitation that will disappear soon.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

As the title says.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change,
and jc/diff-whitespace-prepare topic is meant to ease the transition.

* gb/1.7.0-diff-whitespace-only-output (2009-11-19) 1 commit
  (merged to 'next' on 2009-11-21 at 3375bf4)
 + No diff -b/-w output for all-whitespace changes
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

Likewise but for the output of "diff --git" headers.

* jc/1.7.0-diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: disable diff.bwoutputonly warning
 - diff: flip the diff.bwoutputonly default to false
 (this branch uses gb/1.7.0-diff-whitespace-only-output, jc/1.7.0-diff-whitespace-only-status and jc/diff-whitespace-prepare.)

And this is to actually flip the default and eventually remove the warning.

* ns/1.7.0-send-email-no-chain-reply-to (2009-08-22) 1 commit
 - send-email: make --no-chain-reply-to the default

And this is to actually flip the default in 1.7.0.

--------------------------------------------------
[Reverted from 'next']

* jc/botched-maint-cygwin-count-objects (2009-11-24) 2 commits.
  (merged to 'next' on 2009-11-25 at 8aa62a0)
 + Revert "ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)"
  (merged to 'next' on 2009-11-22 at 4ba5880)
 + ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)

This is a revert of the tip one I merged prematurely to 'next'.  The real
fix from Ramsay is already in 'master'.

* ks/precompute-completion (2009-11-15) 4 commits.
  (merged to 'next' on 2009-11-15 at 23cdb96)
 + Revert ks/precompute-completion series
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

Reverted out of 'next', to be replaced with jn/faster-completion-startup
topic.

--------------------------------------------------
[I have been too busy to purge these]

* jn/rfc-pull-rebase-error-message (2009-11-12) 1 commit
 . git-pull.sh --rebase: overhaul error handling when no candidates are found

Replaced.

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

Maybe some people care about this.  I dunno.

* jc/1.7.0-no-commit-no-ff-2 (2009-10-22) 1 commit.
 . git-merge: forbid fast-forward and up-to-date when --no-commit is given

This makes "git merge --no-commit" fail when it results in fast-forward or
up-to-date.  It appears nobody wants to have this, so I dropped it.

* ne/rev-cache (2009-10-19) 7 commits.
 . support for commit grafts, slight change to general mechanism
 . support for path name caching in rev-cache
 . full integration of rev-cache into git, completed test suite
 . administrative functions for rev-cache, start of integration into git
 . support for non-commit object caching in rev-cache
 . basic revision cache system, no integration or features
 . man page and technical discussion for rev-cache

The author indicated that there is another round coming.  Does not seem to
pass the tests when merged to 'pu', so it has been ejected for now.

* pb/gitweb-no-project-list (2009-11-06) 3 commits.
 . gitweb: Polish the content tags support
 . gitweb: Support for no project list on gitweb front page
 . gitweb: Refactor project list routines

I picked these up but didn't queue as Warthog9's comments made certain
amount of sense to me.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Dec 2009, #03; Tue, 08)
@ 2009-12-08  9:25  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-12-08  9:25 UTC (permalink / raw)
  To: git

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.

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

* bg/maint-add-all-doc (2009-12-07) 4 commits.
 - squash! rm documentation--also mention add-u where we mention commit-a
 - git-rm doc: Describe how to sync index & work tree
 - git-add/rm doc: Consistently back-quote
 - Documentation: 'git add -A' can remove files

I didn't like the existing documentation for "add -u" myself (especially
because I wrote the initial version) and this neatly fix it as well.

* il/vcs-helper (2009-12-06) 8 commits
 - Remove special casing of http, https and ftp
 - Support remote archive from external protocol helpers
 - Support remote helpers implementing smart transports
 - Support taking over transports
 - Refactor git transport options parsing
 - Pass unknown protocols to external protocol handlers
 - Support mandatory capabilities
 - Add remote helper debug mode
 (this branch is related to sr/vcs-helper.)

Under active discussion and review; another round expected.

* jh/commit-status (2009-12-07) 1 commit
 - [test?] Add commit.status, --status, and --no-status

* jk/maint-add-p-delete-fix (2009-12-08) 1 commit.
  (merged to 'next' on 2009-12-08 at 3c2c08a)
 + add-interactive: fix deletion of non-empty files

Fixes a regression in 1.6.5.3.

* mm/diag-path-in-treeish (2009-12-07) 1 commit
 - Detailed diagnosis when parsing an object name fails.

* ns/rebase-auto-squash (2009-12-08) 1 commit
 - rebase -i --autosquash: auto-squash commits
 (this branch uses mh/rebase-fixup.)

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

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

* jc/checkout-merge-base (2009-11-20) 2 commits
 - "rebase --onto A...B" replays history on the merge base between A and B
 - "checkout A...B" switches to the merge base between A and B

I've been using the first one for a while myself but do not see many users
want this (yet); the new feature is not urgent anyway.

* tr/maint-merge-ours-clarification (2009-11-15) 1 commit
  (merged to 'next' on 2009-11-21 at fadaf7b)
 + rebase: refuse to rebase with -s ours

I do not think we reached a concensus for solving conflicts between "give
them rope" and "protect users from clearly meaningless combinations".  The
author obviously is for the latter (and I am inclined to agree); Dscho
seems to think otherwise.

* jc/fix-tree-walk (2009-10-22) 8 commits
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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

This has some stupid bugs and reverted from 'next' until I can fix it, but
the "temporarily" turned out to be very loooong.  Sigh.  We won't have a
proper fix in 1.6.6.

* jc/grep-full-tree (2009-11-24) 1 commit.
 - grep: --full-tree

The interaction with this option and pathspecs need to be worked out
better.  I _think_ "grep --full-tree -e pattern -- '*.h'" should find from
all the header files in the tree, for example.

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

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style fixes to notes.c
 - 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

Rerolled and under discussion.

* jn/maint-pull-rebase-error-message (2009-11-27) 1 commit.
  (merged to 'next' on 2009-12-03 at 2ced03c)
 + pull: clarify advice for the unconfigured error case

Replaces old 'jn/rfc-pull-rebase-error-message' topic.

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
 - General --quiet improvements

* mv/commit-date (2009-12-03) 2 commits
 - Document date formats accepted by parse_date()
 - builtin-commit: add --date option

* mh/rebase-fixup (2009-12-07) 2 commits
 - 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.)

Initial round of "fixup" action that is similar to "squash" action in
"rebase -i" that excludes the commit log message from follow-up commits
when composing the log message for the updated one.  Expected is a further
improvement to skip opening the editor if a pick is followed only by
"fixup" and no "squash".

* sr/gfi-options (2009-12-04) 7 commits
 - 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

Rerolled.

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

* mo/bin-wrappers (2009-12-02) 3 commits
 - INSTALL: document a simpler way to run uninstalled builds
 - run test suite without dashed git-commands in PATH
 - build dashless "bin-wrappers" directory similar to installed bindir

Rerolled.

* tr/http-updates (2009-12-01) 3 commits
  (merged to 'next' on 2009-12-07 at f08d447)
 + Allow curl to rewind the RPC read buffer
 + Add an option for using any HTTP authentication scheme, not only basic
 + http: maintain curl sessions

* jc/diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: flip the default diff.bwoutputonly to true
 - diff: optionally allow traditional "-b/-w affects only output" semantics
 (this branch uses gb/1.7.0-diff-whitespace-only-output and jc/1.7.0-diff-whitespace-only-status; is used by jc/1.7.0-diff-whitespace-prepare.)

This was to redo the two -b/-w semantic changes to prepare the migration of
existing users before 1.7.0 happens, but I think we should drop it.

Comments?

* sr/vcs-helper (2009-12-07) 14 commits
  (merged to 'next' on 2009-12-07 at 8f041bc)
 + tests: handle NO_PYTHON setting
  (merged to 'next' on 2009-12-03 at e45b562)
 + builtin-push: don't access freed transport->url
  (merged to 'next' on 2009-11-27 at 83268ab)
 + Add Python support library for remote helpers
 + Basic build infrastructure for Python scripts
 + Allow helpers to report in "list" command that the ref is unchanged
 + Fix various memory leaks in transport-helper.c
 + Allow helper to map private ref names into normal names
 + Add support for "import" helper command
 + Allow specifying the remote helper in the url
 + Add a config option for remotes to specify a foreign vcs
 + Allow fetch to modify refs
 + Use a function to determine whether a remote is valid
 + Allow programs to not depend on remotes having urls
 + Fix memory leak in helper method for disconnect
 (this branch is related to il/vcs-helper.)

Should be among the first to graduate after 1.6.6 final.

* tr/reset-checkout-patch (2009-11-19) 1 commit.
  (merged to 'next' on 2009-11-22 at b224950)
 + {checkout,reset} -p: make patch direction configurable

I do not particularly like a configuration like this that changes the
behaviour of a command in a drastic way---it will make helping others
much harder.

Comments?

* nd/sparse (2009-11-25) 20 commits.
  (merged to 'next' on 2009-11-25 at 71380f5)
 + tests: rename duplicate t1009
  (merged to 'next' on 2009-11-23 at f712a41)
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

There were some test glitches reported and at least one test seems to 
be broken in the sense that it is not testing what it is trying to.
Fix-up expected.

--------------------------------------------------
[For 1.7.0]

* jk/1.7.0-status (2009-12-07) 11 commits.
  (merged to 'next' on 2009-12-07 at 7723acf)
 + status: reduce duplicated setup code
 + status: disable color for porcelain format
  (merged to 'next' on 2009-12-05 at 44dcefd)
 + status -s: obey color.status
 + builtin-commit: refactor short-status code into wt-status.c
  (merged to 'next' on 2009-11-27 at 91691ec)
 + t7508-status.sh: Add tests for status -s
 + status -s: respect the status.relativePaths option
  (merged to 'next' on 2009-11-21 at 884bb56)
 + docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

Immediately after 1.6.6 while rebuilding 'next', we may want to reorder a
few commits at the tip, as "docs: affects only long format" describes a
limitation that will disappear soon.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

As the title says.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change,
and jc/diff-whitespace-prepare topic is meant to ease the transition.

* gb/1.7.0-diff-whitespace-only-output (2009-11-19) 1 commit
  (merged to 'next' on 2009-11-21 at 3375bf4)
 + No diff -b/-w output for all-whitespace changes
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

Likewise but for the output of "diff --git" headers.

* jc/1.7.0-diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: disable diff.bwoutputonly warning
 - diff: flip the diff.bwoutputonly default to false
 (this branch uses gb/1.7.0-diff-whitespace-only-output, jc/1.7.0-diff-whitespace-only-status and jc/diff-whitespace-prepare.)

And this is to actually flip the default and eventually remove the warning.
As I am contemplating of dropping jc/diff-whitespace-prepare, this should
also be dropped as well.

* ns/1.7.0-send-email-no-chain-reply-to (2009-08-22) 1 commit
 - send-email: make --no-chain-reply-to the default

And this is to actually flip the default in 1.7.0.

--------------------------------------------------
[Reverted from 'next']

* jc/botched-maint-cygwin-count-objects (2009-11-24) 2 commits.
  (merged to 'next' on 2009-11-25 at 8aa62a0)
 + Revert "ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)"
  (merged to 'next' on 2009-11-22 at 4ba5880)
 + ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)

This is a revert of the tip one I merged prematurely to 'next'.  The real
fix from Ramsay is already in 'master'.

* ks/precompute-completion (2009-11-15) 4 commits.
  (merged to 'next' on 2009-11-15 at 23cdb96)
 + Revert ks/precompute-completion series
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

Reverted out of 'next', to be replaced with jn/faster-completion-startup
topic.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Dec 2009, #04; Wed, 09)
@ 2009-12-10  7:11  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-12-10  7:11 UTC (permalink / raw)
  To: git

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.

As we are supposed to be in pre-release feature freeze, there is nothing
to see here ;-)

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

* jk/maint-add-p-delete-fix (2009-12-08) 1 commit.
  (merged to 'next' on 2009-12-08 at 3c2c08a)
 + add-interactive: fix deletion of non-empty files

Fixes a regression in 1.6.5.3.

* jn/maint-pull-rebase-error-message (2009-11-27) 1 commit.
  (merged to 'next' on 2009-12-03 at 2ced03c)
 + pull: clarify advice for the unconfigured error case

Replaces old 'jn/rfc-pull-rebase-error-message' topic.

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

* cc/reset-more (2009-12-08) 6 commits
 - Documentation: reset: add some tables to describe the different options
 - Documentation: reset: describe new "--keep-local-changes" option
 - reset: add test cases for "--keep-local-changes" option
 - reset: add option "--keep-local-changes" to "git reset"
 - reset: use "unpack_trees()" directly instead of "git read-tree"
 - reset: add a few tests for "git reset --merge"

The documentation is much clearer than the previous round in describing
what it does, but I find it a bit unclear in describing what it is _good_
for (iow, scenarios and use cases).

Breaks 'pu' and does not pass test on its own yet.

* tr/http-push-ref-status (2009-12-08) 3 commits
 - transport-helper.c::push_refs(): emit "no refs" error message
 - transport.c::transport_push(): make ref status affect return value
 - refactor ref status logic for pushing

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

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

* jc/checkout-merge-base (2009-11-20) 2 commits
 - "rebase --onto A...B" replays history on the merge base between A and B
 - "checkout A...B" switches to the merge base between A and B

I've been using the first one for a while myself but do not see many users
want this (yet); the new feature is not urgent anyway.

* tr/maint-merge-ours-clarification (2009-11-15) 1 commit
  (merged to 'next' on 2009-11-21 at fadaf7b)
 + rebase: refuse to rebase with -s ours

I do not think we reached a concensus for solving conflicts between "give
them rope" and "protect users from clearly meaningless combinations".  The
author obviously is for the latter (and I am inclined to agree); Dscho
seems to think otherwise.

* jc/fix-tree-walk (2009-10-22) 8 commits
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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

This has some stupid bugs and reverted from 'next' until I can fix it, but
the "temporarily" turned out to be very loooong.  Sigh.  We won't have a
proper fix in 1.6.6.

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

* bg/maint-add-all-doc (2009-12-07) 4 commits.
 - squash! rm documentation--also mention add-u where we mention commit-a
 - git-rm doc: Describe how to sync index & work tree
 - git-add/rm doc: Consistently back-quote
 - Documentation: 'git add -A' can remove files

I didn't like the existing documentation for "add -u" myself (especially
because I wrote the initial version) and this neatly fix it as well.

* il/vcs-helper (2009-12-09) 8 commits
 - Remove special casing of http, https and ftp
 - Support remote archive from all smart transports
 - Support remote helpers implementing smart transports
 - Support taking over transports
 - Refactor git transport options parsing
 - Pass unknown protocols to external protocol handlers
 - Support mandatory capabilities
 - Add remote helper debug mode
 (this branch uses early parts of sr/vcs-helper.)

Yet another round.

* jh/commit-status (2009-12-07) 1 commit
 - [test?] Add commit.status, --status, and --no-status

* mm/diag-path-in-treeish (2009-12-07) 1 commit
 - Detailed diagnosis when parsing an object name fails.

* ns/rebase-auto-squash (2009-12-08) 2 commits
 - fixup! rebase -i --autosquash
 - rebase -i --autosquash: auto-squash commits
 (this branch uses mh/rebase-fixup.)

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style fixes to notes.c
 - 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

Rerolled and under discussion.

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
 - General --quiet improvements

* mv/commit-date (2009-12-03) 2 commits
 - Document date formats accepted by parse_date()
 - builtin-commit: add --date option

* mh/rebase-fixup (2009-12-07) 2 commits
 - 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.)

Initial round of "fixup" action that is similar to "squash" action in
"rebase -i" that excludes the commit log message from follow-up commits
when composing the log message for the updated one.  Expected is a further
improvement to skip opening the editor if a pick is followed only by
"fixup" and no "squash".

* sr/gfi-options (2009-12-04) 7 commits
 - 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

Rerolled.

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

* mo/bin-wrappers (2009-12-02) 3 commits
 - INSTALL: document a simpler way to run uninstalled builds
 - run test suite without dashed git-commands in PATH
 - build dashless "bin-wrappers" directory similar to installed bindir

Rerolled.

* tr/http-updates (2009-12-01) 3 commits
  (merged to 'next' on 2009-12-07 at f08d447)
 + Allow curl to rewind the RPC read buffer
 + Add an option for using any HTTP authentication scheme, not only basic
 + http: maintain curl sessions

* jc/diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: flip the default diff.bwoutputonly to true
 - diff: optionally allow traditional "-b/-w affects only output" semantics
 (this branch uses gb/1.7.0-diff-whitespace-only-output and jc/1.7.0-diff-whitespace-only-status; is used by jc/1.7.0-diff-whitespace-prepare.)

This was to redo the two -b/-w semantic changes to prepare the migration of
existing users before 1.7.0 happens, but I think we should drop it.

Comments?

* sr/vcs-helper (2009-12-07) 14 commits
  (merged to 'next' on 2009-12-07 at 8f041bc)
 + tests: handle NO_PYTHON setting
  (merged to 'next' on 2009-12-03 at e45b562)
 + builtin-push: don't access freed transport->url
  (merged to 'next' on 2009-11-27 at 83268ab)
 + Add Python support library for remote helpers
 + Basic build infrastructure for Python scripts
 + Allow helpers to report in "list" command that the ref is unchanged
 + Fix various memory leaks in transport-helper.c
 + Allow helper to map private ref names into normal names
 + Add support for "import" helper command
 + Allow specifying the remote helper in the url
 + Add a config option for remotes to specify a foreign vcs
 + Allow fetch to modify refs
 + Use a function to determine whether a remote is valid
 + Allow programs to not depend on remotes having urls
 + Fix memory leak in helper method for disconnect
 (this branch shares commits with il/vcs-helper.)

Should be among the first to graduate after 1.6.6 final.

* tr/reset-checkout-patch (2009-11-19) 1 commit.
  (merged to 'next' on 2009-11-22 at b224950)
 + {checkout,reset} -p: make patch direction configurable

I do not particularly like a configuration like this that changes the
behaviour of a command in a drastic way---it will make helping others
much harder.

Comments?

* nd/sparse (2009-11-25) 20 commits.
  (merged to 'next' on 2009-11-25 at 71380f5)
 + tests: rename duplicate t1009
  (merged to 'next' on 2009-11-23 at f712a41)
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

There were some test glitches reported and at least one test seems to 
be broken in the sense that it is not testing what it is trying to.
Fix-up expected.

--------------------------------------------------
[For 1.7.0]

* jk/1.7.0-status (2009-12-08) 13 commits.
  (merged to 'next' on 2009-12-08 at 9b57d84)
 + t7508-status: test all modes with color
 + t7508-status: status --porcelain ignores relative paths setting
  (merged to 'next' on 2009-12-07 at 7723acf)
 + status: reduce duplicated setup code
 + status: disable color for porcelain format
  (merged to 'next' on 2009-12-05 at 44dcefd)
 + status -s: obey color.status
 + builtin-commit: refactor short-status code into wt-status.c
  (merged to 'next' on 2009-11-27 at 91691ec)
 + t7508-status.sh: Add tests for status -s
 + status -s: respect the status.relativePaths option
  (merged to 'next' on 2009-11-21 at 884bb56)
 + docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

Immediately after 1.6.6 while rebuilding 'next', we may want to reorder a
few commits at the tip, as "docs: affects only long format" describes a
limitation that has disappeared.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

As the title says.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change,
and jc/diff-whitespace-prepare topic is meant to ease the transition.

* gb/1.7.0-diff-whitespace-only-output (2009-11-19) 1 commit
  (merged to 'next' on 2009-11-21 at 3375bf4)
 + No diff -b/-w output for all-whitespace changes
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

Likewise but for the output of "diff --git" headers.

* jc/1.7.0-diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: disable diff.bwoutputonly warning
 - diff: flip the diff.bwoutputonly default to false
 (this branch uses gb/1.7.0-diff-whitespace-only-output, jc/1.7.0-diff-whitespace-only-status and jc/diff-whitespace-prepare.)

And this is to actually flip the default and eventually remove the warning.
As I am contemplating of dropping jc/diff-whitespace-prepare, this should
also be dropped as well.

* ns/1.7.0-send-email-no-chain-reply-to (2009-08-22) 1 commit
 - send-email: make --no-chain-reply-to the default

And this is to actually flip the default in 1.7.0.

--------------------------------------------------
[Reverted from 'next']

* jc/botched-maint-cygwin-count-objects (2009-11-24) 2 commits.
  (merged to 'next' on 2009-11-25 at 8aa62a0)
 + Revert "ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)"
  (merged to 'next' on 2009-11-22 at 4ba5880)
 + ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)

This is a revert of the tip one I merged prematurely to 'next'.  The real
fix from Ramsay is already in 'master'.

* ks/precompute-completion (2009-11-15) 4 commits.
  (merged to 'next' on 2009-11-15 at 23cdb96)
 + Revert ks/precompute-completion series
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

Reverted out of 'next', to be replaced with jn/faster-completion-startup
topic.

--------------------------------------------------
[Haven't been purged from 'pu' yet]

* jc/grep-full-tree (2009-11-24) 1 commit.
 - grep: --full-tree

The interaction with this option and pathspecs need to be worked out
better.  I _think_ "grep --full-tree -e pattern -- '*.h'" should find from
all the header files in the tree, for example.

^ permalink raw reply	[relevance 2%]

* [PATCH 1/3] octopus: make merge process simpler to follow
  @ 2009-12-12  0:38  2% ` Stephen Boyd
  2009-12-12  8:53  0%   ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Stephen Boyd @ 2009-12-12  0:38 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Jari Aalto

Its not very easy to understand what heads are being merged given
the current output of an octopus merge. Fix this by replacing the
sha1 with the (usually) better description in GITHEAD_<SHA1>.

Suggested-by: Jari Aalto <jari.aalto@cante.net>
Signed-off-by: Stephen Boyd <bebarino@gmail.com>
---

Maybe this will work? At least it will replace the sha1 with
whatever is given on the command line.

 git-merge-octopus.sh          |    9 +++++----
 t/t7602-merge-octopus-many.sh |   33 +++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 4 deletions(-)

diff --git a/git-merge-octopus.sh b/git-merge-octopus.sh
index 825c52c..1c8ee0a 100755
--- a/git-merge-octopus.sh
+++ b/git-merge-octopus.sh
@@ -61,12 +61,13 @@ do
 		exit 2
 	esac
 
+	pretty_name="$(eval echo \$GITHEAD_$SHA1)"
 	common=$(git merge-base --all $SHA1 $MRC) ||
-		die "Unable to find common commit with $SHA1"
+		die "Unable to find common commit with $pretty_name"
 
 	case "$LF$common$LF" in
 	*"$LF$SHA1$LF"*)
-		echo "Already up-to-date with $SHA1"
+		echo "Already up-to-date with $pretty_name"
 		continue
 		;;
 	esac
@@ -81,7 +82,7 @@ do
 		# tree as the intermediate result of the merge.
 		# We still need to count this as part of the parent set.
 
-		echo "Fast-forwarding to: $SHA1"
+		echo "Fast-forwarding to: $pretty_name"
 		git read-tree -u -m $head $SHA1 || exit
 		MRC=$SHA1 MRT=$(git write-tree)
 		continue
@@ -89,7 +90,7 @@ do
 
 	NON_FF_MERGE=1
 
-	echo "Trying simple merge with $SHA1"
+	echo "Trying simple merge with $pretty_name"
 	git read-tree -u -m --aggressive  $common $MRT $SHA1 || exit 2
 	next=$(git write-tree 2>/dev/null)
 	if test $? -ne 0
diff --git a/t/t7602-merge-octopus-many.sh b/t/t7602-merge-octopus-many.sh
index 01e5415..7377033 100755
--- a/t/t7602-merge-octopus-many.sh
+++ b/t/t7602-merge-octopus-many.sh
@@ -49,4 +49,37 @@ test_expect_success 'merge c1 with c2, c3, c4, ... c29' '
 	done
 '
 
+cat >expected <<\EOF
+Trying simple merge with c2
+Trying simple merge with c3
+Trying simple merge with c4
+Merge made by octopus.
+ c2.c |    1 +
+ c3.c |    1 +
+ c4.c |    1 +
+ 3 files changed, 3 insertions(+), 0 deletions(-)
+ create mode 100644 c2.c
+ create mode 100644 c3.c
+ create mode 100644 c4.c
+EOF
+
+test_expect_success 'merge output uses pretty names' '
+	git reset --hard c1 &&
+	git merge c2 c3 c4 >actual &&
+	test_cmp actual expected
+'
+
+cat >expected <<\EOF
+Already up-to-date with c4
+Trying simple merge with c5
+Merge made by octopus.
+ c5.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+ create mode 100644 c5.c
+EOF
+
+test_expect_success 'merge up-to-date output uses pretty names' '
+	git merge c4 c5 >actual &&
+	test_cmp actual expected
+'
 test_done
-- 
1.6.6.rc1.45.g9aadbb

^ permalink raw reply related	[relevance 2%]

* Re: [PATCH 1/3] octopus: make merge process simpler to follow
  2009-12-12  0:38  2% ` [PATCH 1/3] octopus: make merge process simpler to follow Stephen Boyd
@ 2009-12-12  8:53  0%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-12-12  8:53 UTC (permalink / raw)
  To: Stephen Boyd; +Cc: git, Jari Aalto

Stephen Boyd <bebarino@gmail.com> writes:

> Its not very easy to understand what heads are being merged given
> the current output of an octopus merge. Fix this by replacing the
> sha1 with the (usually) better description in GITHEAD_<SHA1>.
>
> Suggested-by: Jari Aalto <jari.aalto@cante.net>
> Signed-off-by: Stephen Boyd <bebarino@gmail.com>
> ---
>
> Maybe this will work? At least it will replace the sha1 with
> whatever is given on the command line.

This shows what was given from the command line instead of the
commit object name.  I think it makes sense to not even make this
dependent on any option.  Also I don't think anybody misses the
commit object name in the output---after all, that is all internal
to git and is different from what the user gave us anyway (unless
the user did give us the full 40-char object name, in which case
the value of GITHEAD_<SHA1> would be that name, and we will show it,
which is also fine).

No, I haven't applied nor run it yet.  The above is purely from my cursory
reading of the code.

Anyway, I'll keep this in my inbox or queue it on 'pu' if I had time.

^ permalink raw reply	[relevance 0%]

* [PATCH] octopus: make merge process simpler to follow
  @ 2009-12-15  6:49  2% ` Stephen Boyd
  2009-12-15  7:32  0%   ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Stephen Boyd @ 2009-12-15  6:49 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Sixt, Jari Aalto

Its not very easy to understand what heads are being merged given
the current output of an octopus merge. Fix this by replacing the
sha1 with the (usually) better description in GITHEAD_<SHA1>.

Suggested-by: Jari Aalto <jari.aalto@cante.net>
Signed-off-by: Stephen Boyd <bebarino@gmail.com>
---

Thanks both. Here's a replacement. Let me know if you want a reroll.

 git-merge-octopus.sh          |   11 +++++++----
 t/t7602-merge-octopus-many.sh |   33 +++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/git-merge-octopus.sh b/git-merge-octopus.sh
index 825c52c..417e8fb 100755
--- a/git-merge-octopus.sh
+++ b/git-merge-octopus.sh
@@ -61,12 +61,15 @@ do
 		exit 2
 	esac
 
+	eval pretty_name="\$GITHEAD_$SHA1"
+	: ${pretty_name:=$SHA1}
+
 	common=$(git merge-base --all $SHA1 $MRC) ||
-		die "Unable to find common commit with $SHA1"
+		die "Unable to find common commit with $pretty_name"
 
 	case "$LF$common$LF" in
 	*"$LF$SHA1$LF"*)
-		echo "Already up-to-date with $SHA1"
+		echo "Already up-to-date with $pretty_name"
 		continue
 		;;
 	esac
@@ -81,7 +84,7 @@ do
 		# tree as the intermediate result of the merge.
 		# We still need to count this as part of the parent set.
 
-		echo "Fast-forwarding to: $SHA1"
+		echo "Fast-forwarding to: $pretty_name"
 		git read-tree -u -m $head $SHA1 || exit
 		MRC=$SHA1 MRT=$(git write-tree)
 		continue
@@ -89,7 +92,7 @@ do
 
 	NON_FF_MERGE=1
 
-	echo "Trying simple merge with $SHA1"
+	echo "Trying simple merge with $pretty_name"
 	git read-tree -u -m --aggressive  $common $MRT $SHA1 || exit 2
 	next=$(git write-tree 2>/dev/null)
 	if test $? -ne 0
diff --git a/t/t7602-merge-octopus-many.sh b/t/t7602-merge-octopus-many.sh
index 01e5415..7377033 100755
--- a/t/t7602-merge-octopus-many.sh
+++ b/t/t7602-merge-octopus-many.sh
@@ -49,4 +49,37 @@ test_expect_success 'merge c1 with c2, c3, c4, ... c29' '
 	done
 '
 
+cat >expected <<\EOF
+Trying simple merge with c2
+Trying simple merge with c3
+Trying simple merge with c4
+Merge made by octopus.
+ c2.c |    1 +
+ c3.c |    1 +
+ c4.c |    1 +
+ 3 files changed, 3 insertions(+), 0 deletions(-)
+ create mode 100644 c2.c
+ create mode 100644 c3.c
+ create mode 100644 c4.c
+EOF
+
+test_expect_success 'merge output uses pretty names' '
+	git reset --hard c1 &&
+	git merge c2 c3 c4 >actual &&
+	test_cmp actual expected
+'
+
+cat >expected <<\EOF
+Already up-to-date with c4
+Trying simple merge with c5
+Merge made by octopus.
+ c5.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+ create mode 100644 c5.c
+EOF
+
+test_expect_success 'merge up-to-date output uses pretty names' '
+	git merge c4 c5 >actual &&
+	test_cmp actual expected
+'
 test_done
-- 
1.6.6.rc2.5.g49666

^ permalink raw reply related	[relevance 2%]

* Re: [PATCH] octopus: make merge process simpler to follow
  2009-12-15  6:49  2% ` [PATCH] " Stephen Boyd
@ 2009-12-15  7:32  0%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-12-15  7:32 UTC (permalink / raw)
  To: Stephen Boyd; +Cc: git, Junio C Hamano, Johannes Sixt, Jari Aalto

Stephen Boyd <bebarino@gmail.com> writes:

> Its not very easy to understand what heads are being merged given
> the current output of an octopus merge. Fix this by replacing the
> sha1 with the (usually) better description in GITHEAD_<SHA1>.
>
> Suggested-by: Jari Aalto <jari.aalto@cante.net>
> Signed-off-by: Stephen Boyd <bebarino@gmail.com>
> ---
>
> Thanks both. Here's a replacement. Let me know if you want a reroll.

Ah, thanks and sorry for having you do an extra work.  I amended the
assignment further like thi,s but haven't got a chance to push the result out...

	eval pretty_name=\${GITHEAD_$SHA1:-$SHA1}

^ permalink raw reply	[relevance 0%]

* What's cooking in git.git (Dec 2009, #05; Mon, 28)
@ 2009-12-28  9:57  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-12-28  9:57 UTC (permalink / raw)
  To: git

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/vcs-helper (2009-12-07) 14 commits
  (merged to 'next' on 2009-12-07 at 8f041bc)
 + tests: handle NO_PYTHON setting
  (merged to 'next' on 2009-12-03 at e45b562)
 + builtin-push: don't access freed transport->url
  (merged to 'next' on 2009-11-27 at 83268ab)
 + Add Python support library for remote helpers
 + Basic build infrastructure for Python scripts
 + Allow helpers to report in "list" command that the ref is unchanged
 + Fix various memory leaks in transport-helper.c
 + Allow helper to map private ref names into normal names
 + Add support for "import" helper command
 + Allow specifying the remote helper in the url
 + Add a config option for remotes to specify a foreign vcs
 + Allow fetch to modify refs
 + Use a function to determine whether a remote is valid
 + Allow programs to not depend on remotes having urls
 + Fix memory leak in helper method for disconnect

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

* jc/1.7.0-push-safety (2009-02-09) 2 commits
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.

* gb/1.7.0-diff-whitespace-only-output (2009-11-19) 1 commit
  (merged to 'next' on 2009-11-21 at 3375bf4)
 + No diff -b/-w output for all-whitespace changes
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

Likewise but for the output of "diff --git" headers.

* jk/1.7.0-status (2009-12-11) 16 commits
  (merged to 'next' on 2009-12-24 at e9929b3)
 + status/commit: do not suggest "reset HEAD <path>" while merging
 + commit/status: "git add <path>" is not necessarily how to resolve
 + commit/status: check $GIT_DIR/MERGE_HEAD only once
  (merged to 'next' on 2009-12-08 at 9b57d84)
 + t7508-status: test all modes with color
 + t7508-status: status --porcelain ignores relative paths setting
  (merged to 'next' on 2009-12-07 at 7723acf)
 + status: reduce duplicated setup code
 + status: disable color for porcelain format
  (merged to 'next' on 2009-12-05 at 44dcefd)
 + status -s: obey color.status
 + builtin-commit: refactor short-status code into wt-status.c
  (merged to 'next' on 2009-11-27 at 91691ec)
 + t7508-status.sh: Add tests for status -s
 + status -s: respect the status.relativePaths option
  (merged to 'next' on 2009-11-21 at 884bb56)
 + docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

* jc/1.7.0-status (2009-09-05) 4 commits
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

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

* jc/cache-unmerge (2009-12-25) 9 commits
 - 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

* js/filter-branch-prime (2009-12-15) 1 commit
 - filter-branch: remove an unnecessary use of 'git read-tree'

* mg/tag-d-show (2009-12-10) 1 commit
 - tag -d: print sha1 of deleted tag

* sb/maint-octopus (2009-12-11) 3 commits
 - octopus: remove dead code
 - octopus: reenable fast-forward merges
 - octopus: make merge process simpler to follow

* il/exec-error-report (2009-12-24) 2 commits
 - Improve transport helper exec failure reporting
 - Report exec errors from run-command

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

* jh/commit-status (2009-12-07) 1 commit
 - [test?] Add commit.status, --status, and --no-status

* jc/checkout-merge-base (2009-11-20) 2 commits
  (merged to 'next' on 2009-12-24 at ff4d1d4)
 + "rebase --onto A...B" replays history on the merge base between A and B
 + "checkout A...B" switches to the merge base between A and B

* tr/http-push-ref-status (2009-12-24) 6 commits
 - 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

* bg/maint-add-all-doc (2009-12-07) 4 commits
 - squash! rm documentation--also mention add-u where we mention commit-a
 - git-rm doc: Describe how to sync index & work tree
 - git-add/rm doc: Consistently back-quote
 - Documentation: 'git add -A' can remove files

I didn't like the existing documentation for "add -u" myself (especially
because I wrote the initial version) and this neatly fix it as well.

* il/vcs-helper (2009-12-09) 8 commits
 - Remove special casing of http, https and ftp
 - Support remote archive from all smart transports
 - Support remote helpers implementing smart transports
 - Support taking over transports
 - Refactor git transport options parsing
 - Pass unknown protocols to external protocol handlers
 - Support mandatory capabilities
 - Add remote helper debug mode

* mm/diag-path-in-treeish (2009-12-07) 1 commit
 - Detailed diagnosis when parsing an object name fails.

* mh/rebase-fixup (2009-12-07) 2 commits
 - 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.)

Initial round of "fixup" action that is similar to "squash" action in
"rebase -i" that excludes the commit log message from follow-up commits
when composing the log message for the updated one.  Expected is a further
improvement to skip opening the editor if a pick is followed only by
"fixup" and no "squash".

* ns/rebase-auto-squash (2009-12-08) 2 commits
 - fixup! rebase -i --autosquash
 - rebase -i --autosquash: auto-squash commits
 (this branch uses mh/rebase-fixup.)

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style fixes to notes.c
 - 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

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
 - General --quiet improvements

* mv/commit-date (2009-12-03) 2 commits
 - Document date formats accepted by parse_date()
 - builtin-commit: add --date option

* sr/gfi-options (2009-12-04) 7 commits
 - 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

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

* mo/bin-wrappers (2009-12-02) 3 commits
 - INSTALL: document a simpler way to run uninstalled builds
 - run test suite without dashed git-commands in PATH
 - build dashless "bin-wrappers" directory similar to installed bindir

* tr/http-updates (2009-12-01) 3 commits
  (merged to 'next' on 2009-12-07 at f08d447)
 + Allow curl to rewind the RPC read buffer
 + Add an option for using any HTTP authentication scheme, not only basic
 + http: maintain curl sessions

* nd/sparse (2009-12-14) 22 commits
  (merged to 'next' on 2009-12-24 at 1fa9ff3)
 + commit: correctly respect skip-worktree bit
 + ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
  (merged to 'next' on 2009-11-25 at 71380f5)
 + tests: rename duplicate t1009
  (merged to 'next' on 2009-11-23 at f712a41)
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

--------------------------------------------------
[Ejected]

* je/send-email-no-subject (2009-08-05) 1 commit
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

* jc/fix-tree-walk (2009-10-22) 8 commits
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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

This has some stupid bugs and reverted from 'next' until I can fix it, but
the "temporarily" turned out to be very loooong.

* jc/grep-full-tree (2009-11-24) 1 commit
 . grep: --full-tree

The interaction with this option and pathspecs need to be worked out
better.  I _think_ "grep --full-tree -e pattern -- '*.h'" should find from
all the header files in the tree, for example.

* cc/reset-more (2009-12-08) 6 commits
 . Documentation: reset: add some tables to describe the different options
 . Documentation: reset: describe new "--keep-local-changes" option
 . reset: add test cases for "--keep-local-changes" option
 . reset: add option "--keep-local-changes" to "git reset"
 . reset: use "unpack_trees()" directly instead of "git read-tree"
 . reset: add a few tests for "git reset --merge"

The documentation is much clearer than the previous round in describing
what it does, but I find it a bit unclear in describing what it is _good_
for (iow, scenarios and use cases).

Breaks 'pu' and does not pass test on its own yet.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Dec 2009, #06; Thu, 31)
@ 2010-01-01  0:10  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-01  0:10 UTC (permalink / raw)
  To: git

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.

The tip of 'next' will soon be rebuilt on top of the current 'master'.

This will be the last "What's cooking" message in year 2009 ;-)

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

* cc/reset-more (2009-12-30) 4 commits
 - reset: use "unpack_trees()" directly instead of "git read-tree"
 - reset: add a few tests for "git reset --merge"
 - Documentation: reset: add some tables to describe the different options
 - reset: improve mixed reset error message when in a bare repo

Resurrected from "Ejected" category.  Haven't looked at it yet myself,
though...

* bg/maint-remote-update-default (2009-12-31) 1 commit
 - Fix "git remote update" with remotes.defalt set

* jc/branch-d (2009-12-29) 1 commit
 - branch -d: base the "already-merged" safety on the branch it merges with

* jc/rerere (2009-12-04) 1 commit
 - Teach --[no-]rerere-autoupdate option to merge, revert and friends

* jk/maint-1.6.5-reset-hard (2009-12-30) 1 commit
  (merged to 'next' on 2009-12-30 at de97679)
 + reset: unbreak hard resets with GIT_WORK_TREE

* jk/push-to-delete (2009-12-30) 1 commit
 - builtin-push: add --delete as syntactic sugar for :foo

* jk/run-command-use-shell (2009-12-30) 6 commits
 - 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
 - run-command: add "use shell" option

* mm/config-path (2009-12-30) 1 commit
 - builtin-config: add --path option doing ~ and ~user expansion.

* pm/cvs-environ (2009-12-30) 1 commit
 - CVS Server: Support reading base and roots from environment

* rs/maint-archive-match-pathspec (2009-12-12) 1 commit
 - archive: complain about path specs that don't match anything

* so/cvsserver-update (2009-12-07) 1 commit
 - cvsserver: make the output of 'update' more compatible with cvs.

* tc/clone-v-progress (2009-12-26) 4 commits
 - 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

* tc/smart-http-restrict (2009-12-30) 3 commits
 - Smart-http tests: Test http-backend without curl or a webserver
 - Smart-http tests: Break test t5560-http-backend into pieces
 - Smart-http: check if repository is OK to export before serving it

* tr/maint-1.6.5-bash-prompt-show-submodule-changes (2009-12-31) 1 commit
 - bash completion: factor submodules into dirty state

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

* jc/cache-unmerge (2009-12-25) 9 commits
 - 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

* js/filter-branch-prime (2009-12-15) 1 commit
 - filter-branch: remove an unnecessary use of 'git read-tree'

* mg/tag-d-show (2009-12-10) 1 commit
 - tag -d: print sha1 of deleted tag

* sb/maint-octopus (2009-12-11) 3 commits
 - octopus: remove dead code
 - octopus: reenable fast-forward merges
 - octopus: make merge process simpler to follow

* jh/commit-status (2009-12-07) 1 commit
 - [test?] Add commit.status, --status, and --no-status

* jc/checkout-merge-base (2009-11-20) 2 commits
  (merged to 'next' on 2009-12-24 at ff4d1d4)
 + "rebase --onto A...B" replays history on the merge base between A and B
 + "checkout A...B" switches to the merge base between A and B

* tr/http-push-ref-status (2009-12-24) 6 commits
 - 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

* bg/maint-add-all-doc (2009-12-07) 4 commits
 - squash! rm documentation--also mention add-u where we mention commit-a
 - git-rm doc: Describe how to sync index & work tree
 - git-add/rm doc: Consistently back-quote
 - Documentation: 'git add -A' can remove files

I didn't like the existing documentation for "add -u" myself (especially
because I wrote the initial version) and this neatly fix it as well.

* il/vcs-helper (2009-12-09) 8 commits
 - Remove special casing of http, https and ftp
 - Support remote archive from all smart transports
 - Support remote helpers implementing smart transports
 - Support taking over transports
 - Refactor git transport options parsing
 - Pass unknown protocols to external protocol handlers
 - Support mandatory capabilities
 - Add remote helper debug mode

* mm/diag-path-in-treeish (2009-12-07) 1 commit
 - Detailed diagnosis when parsing an object name fails.

* mh/rebase-fixup (2009-12-07) 2 commits
 - 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.)

Initial round of "fixup" action that is similar to "squash" action in
"rebase -i" that excludes the commit log message from follow-up commits
when composing the log message for the updated one.  Expected is a further
improvement to skip opening the editor if a pick is followed only by
"fixup" and no "squash".

* ns/rebase-auto-squash (2009-12-08) 2 commits
 - fixup! rebase -i --autosquash
 - rebase -i --autosquash: auto-squash commits
 (this branch uses mh/rebase-fixup.)

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style fixes to notes.c
  (merged to 'next' on 2009-12-29 at c89a730)
 + 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

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
 - General --quiet improvements

* mv/commit-date (2009-12-03) 2 commits
 - Document date formats accepted by parse_date()
 - builtin-commit: add --date option

* sr/gfi-options (2009-12-04) 7 commits
 - 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

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

* mo/bin-wrappers (2009-12-02) 3 commits
 - INSTALL: document a simpler way to run uninstalled builds
 - run test suite without dashed git-commands in PATH
 - build dashless "bin-wrappers" directory similar to installed bindir

* tr/http-updates (2009-12-28) 4 commits
  (merged to 'next' on 2009-12-30 at e143bc9)
 + Remove http.authAny
  (merged to 'next' on 2009-12-07 at f08d447)
 + Allow curl to rewind the RPC read buffer
 + Add an option for using any HTTP authentication scheme, not only basic
 + http: maintain curl sessions

* nd/sparse (2009-12-30) 23 commits
  (merged to 'next' on 2009-12-31 at 442ff22)
 + grep: do not do external grep on skip-worktree entries
  (merged to 'next' on 2009-12-24 at 1fa9ff3)
 + commit: correctly respect skip-worktree bit
 + ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
  (merged to 'next' on 2009-11-25 at 71380f5)
 + tests: rename duplicate t1009
  (merged to 'next' on 2009-11-23 at f712a41)
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

--------------------------------------------------
[Ejected]

* il/exec-error-report (2009-12-30) 2 commits
 . Improve transport helper exec failure reporting
 . Report exec errors from run-command

Freezes "git log" or anything that uses pager; J6t made quite a many good
suggestions.  Expecting more rounds of reroll.

* je/send-email-no-subject (2009-08-05) 1 commit
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

* jc/fix-tree-walk (2009-10-22) 8 commits
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + 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

This has some stupid bugs and reverted from 'next' until I can fix it, but
the "temporarily" turned out to be very loooong.

* jc/grep-full-tree (2009-11-24) 1 commit
 . grep: --full-tree

The interaction with this option and pathspecs need to be worked out
better.  I _think_ "grep --full-tree -e pattern -- '*.h'" should find from
all the header files in the tree, for example.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jan 2010, #01; Mon, 04)
@ 2010-01-04  8:39  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-04  8:39 UTC (permalink / raw)
  To: git

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.

The tip of 'next' has been rebuilt on top of the current 'master'.

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

* da/difftool (2009-12-22) 2 commits
 - git-difftool: Add '--gui' for selecting a GUI tool
 - t7800-difftool: Set a bogus tool for use by tests

* jh/gitweb-cached (2010-01-03) 4 commits
 - gitweb: Makefile improvements
 - gitweb: Optionally add "git" links in project list page
 - gitweb: Add option to force version match
 - gitweb: Load checking

* tc/test-locate-httpd (2010-01-02) 1 commit
 - t/lib-http.sh: Restructure finding of default httpd location

* jc/fix-tree-walk (2009-09-14) 7 commits
 - 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.

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

* cc/reset-more (2010-01-04) 6 commits
  (merged to 'next' on 2010-01-04 at 8802c2c)
 + Fix bit assignment for CE_CONFLICTED
  (merged to 'next' on 2010-01-03 at f83d4c6)
 + "reset --merge": fix unmerged case
 + reset: use "unpack_trees()" directly instead of "git read-tree"
 + reset: add a few tests for "git reset --merge"
 + Documentation: reset: add some tables to describe the different options
 + reset: improve mixed reset error message when in a bare repo

* bg/maint-remote-update-default (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at 113009e)
 + Fix "git remote update" with remotes.defalt set

* jc/branch-d (2009-12-29) 1 commit
 - branch -d: base the "already-merged" safety on the branch it merges with

* jc/rerere (2009-12-04) 1 commit
 - Teach --[no-]rerere-autoupdate option to merge, revert and friends

* jk/maint-1.6.5-reset-hard (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-02 at 190d63b)
 + reset: unbreak hard resets with GIT_WORK_TREE

* jk/push-to-delete (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9ee293b)
 + builtin-push: add --delete as syntactic sugar for :foo

* jk/run-command-use-shell (2010-01-01) 8 commits
 - t4030, t4031: work around bogus MSYS bash path conversion
 - t0021: use $SHELL_PATH for the filter script
 - 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
 - run-command: add "use shell" option

* mm/config-path (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9c0e81a)
 + builtin-config: add --path option doing ~ and ~user expansion.

* pm/cvs-environ (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 4c22932)
 + CVS Server: Support reading base and roots from environment

* rs/maint-archive-match-pathspec (2009-12-12) 1 commit
  (merged to 'next' on 2010-01-03 at 92d7d15)
 + archive: complain about path specs that don't match anything

* so/cvsserver-update (2009-12-07) 1 commit
  (merged to 'next' on 2010-01-03 at 99959b6)
 + cvsserver: make the output of 'update' more compatible with cvs.

* tc/clone-v-progress (2009-12-26) 4 commits
 - 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

* tc/smart-http-restrict (2010-01-02) 4 commits
 - 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

* tr/maint-1.6.5-bash-prompt-show-submodule-changes (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at b785974)
 + bash completion: factor submodules into dirty state

* jc/cache-unmerge (2009-12-25) 9 commits
 - 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

* js/filter-branch-prime (2009-12-15) 1 commit
  (merged to 'next' on 2010-01-03 at 7c90319)
 + filter-branch: remove an unnecessary use of 'git read-tree'

* mg/tag-d-show (2009-12-10) 1 commit
  (merged to 'next' on 2010-01-03 at 87657d2)
 + tag -d: print sha1 of deleted tag

* sb/maint-octopus (2009-12-11) 3 commits
  (merged to 'next' on 2010-01-03 at ffe77d6)
 + octopus: remove dead code
 + octopus: reenable fast-forward merges
 + octopus: make merge process simpler to follow

* jh/commit-status (2009-12-07) 1 commit
 - [test?] Add commit.status, --status, and --no-status

* jc/checkout-merge-base (2009-11-20) 2 commits
  (merged to 'next' on 2010-01-02 at 6a8f6fc)
 + "rebase --onto A...B" replays history on the merge base between A and B
 + "checkout A...B" switches to the merge base between A and B

* tr/http-push-ref-status (2009-12-24) 6 commits
 - 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

* bg/maint-add-all-doc (2009-12-07) 4 commits
  (merged to 'next' on 2010-01-03 at b19a323)
 + squash! rm documentation--also mention add-u where we mention commit-a
 + git-rm doc: Describe how to sync index & work tree
 + git-add/rm doc: Consistently back-quote
 + Documentation: 'git add -A' can remove files

* il/vcs-helper (2009-12-09) 8 commits
 - Remove special casing of http, https and ftp
 - Support remote archive from all smart transports
 - Support remote helpers implementing smart transports
 - Support taking over transports
 - Refactor git transport options parsing
 - Pass unknown protocols to external protocol handlers
 - Support mandatory capabilities
 - Add remote helper debug mode

* mm/diag-path-in-treeish (2009-12-07) 1 commit
 - Detailed diagnosis when parsing an object name fails.

* mh/rebase-fixup (2009-12-07) 2 commits
 - 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.)

Initial round of "fixup" action that is similar to "squash" action in
"rebase -i" that excludes the commit log message from follow-up commits
when composing the log message for the updated one.  Expected is a further
improvement to skip opening the editor if a pick is followed only by
"fixup" and no "squash".

* ns/rebase-auto-squash (2009-12-08) 2 commits
 - fixup! rebase -i --autosquash
 - rebase -i --autosquash: auto-squash commits
 (this branch uses mh/rebase-fixup.)

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style 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

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
 - General --quiet improvements

* mv/commit-date (2009-12-03) 2 commits
  (merged to 'next' on 2010-01-03 at 1c45fdf)
 + Document date formats accepted by parse_date()
 + builtin-commit: add --date option

* sr/gfi-options (2009-12-04) 7 commits
 - 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

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

* mo/bin-wrappers (2009-12-02) 3 commits
  (merged to 'next' on 2010-01-03 at 8c5fa27)
 + INSTALL: document a simpler way to run uninstalled builds
 + run test suite without dashed git-commands in PATH
 + build dashless "bin-wrappers" directory similar to installed bindir

* tr/http-updates (2009-12-28) 4 commits
  (merged to 'next' on 2010-01-02 at cf25698)
 + Remove http.authAny
 + Allow curl to rewind the RPC read buffer
 + Add an option for using any HTTP authentication scheme, not only basic
 + http: maintain curl sessions

* nd/sparse (2009-12-30) 23 commits
  (merged to 'next' on 2010-01-02 at 5499bbe)
 + grep: do not do external grep on skip-worktree entries
 + commit: correctly respect skip-worktree bit
 + ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
 + tests: rename duplicate t1009
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jan 2010, #02 draft; Wed, 06)
@ 2010-01-06 22:22  2% Junio C Hamano
  2010-01-06 22:25  2% ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2010-01-06 22:22 UTC (permalink / raw)
  To: git

I am experimenting with ideas to better manage the periodic "What's
cooking" messages, and here is one of such attempt based on the current
draft of the upcoming "2010 Jan, issue #02".

This is an incremental update (the full version will follow shortly) that
shows the changes since the previous issue, and was generated with a
custom diff driver.  One of the things to notice is that the ones that
only moved across sections (e.g. bg/maint-remote-update-default) without
any other changes are shown without the list of commits.

----------------------------------------------------------------

-What's cooking in git.git (Jan 2010, #01; Mon, 04)
+What's cooking in git.git (Jan 2010, #02 draft; Wed, 06)

--------------------------------------------------
Born topics

[New Topics]

 * jc/maint-1.6.1-checkout-m-custom-merge (2010-01-06) 1 commit
  - checkout -m path: fix recreating conflicts

 * jn/makefile (2010-01-06) 4 commits
  - 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

--------------------------------------------------
Moved from [New Topics] to [Cooking]

 * da/difftool (2009-12-22) 2 commits
- - git-difftool: Add '--gui' for selecting a GUI tool
- - t7800-difftool: Set a bogus tool for use by tests
+  (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

 * jh/gitweb-cached (2010-01-03) 4 commits
  - gitweb: Makefile improvements
  - gitweb: Optionally add "git" links in project list page
  - gitweb: Add option to force version match
  - gitweb: Load checking
+
+Will merge to 'next', unless I hear objections within a few days.

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

 * jc/fix-tree-walk (2009-09-14) 7 commits
-Resurrected from "Ejected" category.
+Resurrected from "Ejected" category.  This is fix for a tricky codepath
+and testing and improving before it hits 'next' by brave souls is greatly
+appreciated.  I am not very happy about the solution myself.

--------------------------------------------------
Moved from [Cooking] to [Will graduate after a bit more cooking]

 * bg/maint-remote-update-default (2009-12-31) 1 commit

 * jk/maint-1.6.5-reset-hard (2009-12-30) 1 commit

 * jk/push-to-delete (2009-12-30) 1 commit

 * mm/config-path (2009-12-30) 1 commit

 * pm/cvs-environ (2009-12-30) 1 commit

 * so/cvsserver-update (2009-12-07) 1 commit

 * tr/maint-1.6.5-bash-prompt-show-submodule-changes (2009-12-31) 1 commit

 * js/filter-branch-prime (2009-12-15) 1 commit

 * mg/tag-d-show (2009-12-10) 1 commit

 * sb/maint-octopus (2009-12-11) 3 commits

 * bg/maint-add-all-doc (2009-12-07) 4 commits

 * mv/commit-date (2009-12-03) 2 commits

 * mo/bin-wrappers (2009-12-02) 3 commits

 * tr/http-updates (2009-12-28) 4 commits

 * nd/sparse (2009-12-30) 23 commits

--------------------------------------------------
Other topics

[Cooking]

-* cc/reset-more (2010-01-04) 6 commits
+* cc/reset-more (2010-01-05) 7 commits
+  (merged to 'next' on 2010-01-06 at 96639cb)
+ + Documentation: reset: add some missing tables
   (merged to 'next' on 2010-01-04 at 8802c2c)
  + Fix bit assignment for CE_CONFLICTED
   (merged to 'next' on 2010-01-03 at f83d4c6)
  + "reset --merge": fix unmerged case
  + reset: use "unpack_trees()" directly instead of "git read-tree"
  + reset: add a few tests for "git reset --merge"
  + Documentation: reset: add some tables to describe the different options
  + reset: improve mixed reset error message when in a bare repo

 * jc/branch-d (2009-12-29) 1 commit
  - branch -d: base the "already-merged" safety on the branch it merges with
+
+http://thread.gmane.org/gmane.comp.version-control.git/135837/focus=135863
+I am tempted to merge this to 'next', but please stop me if people see issues
+in it.

 * jk/run-command-use-shell (2010-01-01) 8 commits
  - t4030, t4031: work around bogus MSYS bash path conversion
- - t0021: use $SHELL_PATH for the filter script
  - 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
 
-   Xref: news.gmane.org gmane.comp.version-control.git:136128
-   * check t0021: drop one to t4030;
-   * reorder and move t0021 up, immediately after run-command: optimize
+Shuffled the commits in the topic, following J6t's suggestion in
+http://thread.gmane.org/gmane.comp.version-control.git/136128

 * tc/clone-v-progress (2009-12-26) 4 commits
  - 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.

 * tc/smart-http-restrict (2010-01-02) 4 commits
- - 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
+  (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

 * jc/cache-unmerge (2009-12-25) 9 commits
  - 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
+
+Will wait a bit more before moving it to 'next'.

 * jh/commit-status (2009-12-07) 1 commit
  - [test?] Add commit.status, --status, and --no-status
+
+Needs tests.

 * jc/checkout-merge-base (2009-11-20) 2 commits
   (merged to 'next' on 2010-01-02 at 6a8f6fc)
  + "rebase --onto A...B" replays history on the merge base between A and B
  + "checkout A...B" switches to the merge base between A and B
+
+Users of "rebase -i" might want to teach this to the command.  Volunteers?

 * tr/http-push-ref-status (2009-12-24) 6 commits
  - 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
+
+Peff: $gmane/136169, 136167, 136168
+RC: $gmane/136172

 * il/vcs-helper (2009-12-09) 8 commits
- - Remove special casing of http, https and ftp
- - Support remote archive from all smart transports
- - Support remote helpers implementing smart transports
- - Support taking over transports
- - Refactor git transport options parsing
- - Pass unknown protocols to external protocol handlers
- - Support mandatory capabilities
- - Add remote helper debug mode
+  (merged to 'next' on 2010-01-06 at 7c79f42)
+ + Remove special casing of http, https and ftp
+ + Support remote archive from all smart transports
+ + Support remote helpers implementing smart transports
+ + Support taking over transports
+ + Refactor git transport options parsing
+ + Pass unknown protocols to external protocol handlers
+ + Support mandatory capabilities
+ + Add remote helper debug mode

 * mm/diag-path-in-treeish (2009-12-07) 1 commit
- - Detailed diagnosis when parsing an object name fails.
+  (merged to 'next' on 2010-01-06 at 6b4201e)
+ + Detailed diagnosis when parsing an object name fails.

 * mh/rebase-fixup (2009-12-07) 2 commits
- - Add a command "fixup" to rebase --interactive
- - t3404: Use test_commit to set up test repository
+  (merged to 'next' on 2010-01-06 at c4779a7)
+ + 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) 2 commits
- - fixup! rebase -i --autosquash
- - rebase -i --autosquash: auto-squash commits
+  (merged to 'next' on 2010-01-06 at 91913ca)
+ + fixup! rebase -i --autosquash
+ + rebase -i --autosquash: auto-squash commits
  (this branch uses mh/rebase-fixup.)

 * jh/notes (2009-12-07) 11 commits
  - Refactor notes concatenation into a flexible interface for combining notes
  - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
  - 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: add_note(): Add note objects to the internal notes tree structure
  - Notes API: init_notes(): Initialize the notes tree from the given notes ref
  - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
  - Minor style 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
+
+http://thread.gmane.org/gmane.comp.version-control.git/134738
+
+What's the status of the fourth and later patches on this topic?  Overall
+it looked reasonable, if I recall correctly what I thought when I reviewed
+it last time, and I am tempted to merge it to 'next' soonish.  Please
+file complaints before I do so if people have objections.
+
+http://mid.gmane.org/201001051231.43048.johan@herland.net Hold!

 * fc/opt-quiet-gc-reset (2009-12-02) 1 commit
- - General --quiet improvements
+  (merged to 'next' on 2010-01-06 at 03e00cd)
+ + General --quiet improvements

 * sr/gfi-options (2009-12-04) 7 commits
  - 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
+
+http://thread.gmane.org/gmane.comp.version-control.git/134540
+
+I haven't seen comments on this round, and I am tempted to merge it to
+'next' soonish.  Please file complaints before I do so if people have
+objections.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jan 2010, #02 draft; Wed, 06)
  2010-01-06 22:22  2% What's cooking in git.git (Jan 2010, #02 draft; Wed, 06) Junio C Hamano
@ 2010-01-06 22:25  2% ` Junio C Hamano
  2010-01-08  7:42  2%   ` What's cooking in git.git (Jan 2010, #02; Thu, 07) Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2010-01-06 22:25 UTC (permalink / raw)
  To: git

This is the current draft of "2010 Jan, issue #2" that the experimental
"incremental update" I sent earlier was made out of, for comparison
purposes.

--------------------------------------------------

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.

The tip of 'next' has been rebuilt on top of the current 'master'.

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

* jc/maint-1.6.1-checkout-m-custom-merge (2010-01-06) 1 commit
 - checkout -m path: fix recreating conflicts

* jn/makefile (2010-01-06) 4 commits
 - 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

--------------------------------------------------
[Will graduate after a bit more cooking]

* mo/bin-wrappers (2009-12-02) 3 commits
  (merged to 'next' on 2010-01-03 at 8c5fa27)
 + INSTALL: document a simpler way to run uninstalled builds
 + run test suite without dashed git-commands in PATH
 + build dashless "bin-wrappers" directory similar to installed bindir

* mv/commit-date (2009-12-03) 2 commits
  (merged to 'next' on 2010-01-03 at 1c45fdf)
 + Document date formats accepted by parse_date()
 + builtin-commit: add --date option

* bg/maint-add-all-doc (2009-12-07) 4 commits
  (merged to 'next' on 2010-01-03 at b19a323)
 + squash! rm documentation--also mention add-u where we mention commit-a
 + git-rm doc: Describe how to sync index & work tree
 + git-add/rm doc: Consistently back-quote
 + Documentation: 'git add -A' can remove files

* so/cvsserver-update (2009-12-07) 1 commit
  (merged to 'next' on 2010-01-03 at 99959b6)
 + cvsserver: make the output of 'update' more compatible with cvs.

* mg/tag-d-show (2009-12-10) 1 commit
  (merged to 'next' on 2010-01-03 at 87657d2)
 + tag -d: print sha1 of deleted tag

* sb/maint-octopus (2009-12-11) 3 commits
  (merged to 'next' on 2010-01-03 at ffe77d6)
 + octopus: remove dead code
 + octopus: reenable fast-forward merges
 + octopus: make merge process simpler to follow

* js/filter-branch-prime (2009-12-15) 1 commit
  (merged to 'next' on 2010-01-03 at 7c90319)
 + filter-branch: remove an unnecessary use of 'git read-tree'

* tr/http-updates (2009-12-28) 4 commits
  (merged to 'next' on 2010-01-02 at cf25698)
 + Remove http.authAny
 + Allow curl to rewind the RPC read buffer
 + Add an option for using any HTTP authentication scheme, not only basic
 + http: maintain curl sessions

* nd/sparse (2009-12-30) 23 commits
  (merged to 'next' on 2010-01-02 at 5499bbe)
 + grep: do not do external grep on skip-worktree entries
 + commit: correctly respect skip-worktree bit
 + ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
 + tests: rename duplicate t1009
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

* jk/maint-1.6.5-reset-hard (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-02 at 190d63b)
 + reset: unbreak hard resets with GIT_WORK_TREE

* jk/push-to-delete (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9ee293b)
 + builtin-push: add --delete as syntactic sugar for :foo

* mm/config-path (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9c0e81a)
 + builtin-config: add --path option doing ~ and ~user expansion.

* pm/cvs-environ (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 4c22932)
 + CVS Server: Support reading base and roots from environment

* tr/maint-1.6.5-bash-prompt-show-submodule-changes (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at b785974)
 + bash completion: factor submodules into dirty state

* bg/maint-remote-update-default (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at 113009e)
 + Fix "git remote update" with remotes.defalt set

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

* da/difftool (2009-12-22) 2 commits
  (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

* jh/gitweb-cached (2010-01-03) 4 commits
 - gitweb: Makefile improvements
 - gitweb: Optionally add "git" links in project list page
 - gitweb: Add option to force version match
 - gitweb: Load checking

Will merge to 'next', unless I hear objections within a few days.

* 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

* jc/fix-tree-walk (2009-09-14) 7 commits
 - 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 'next' by brave souls is greatly
appreciated.  I am not very happy about the solution myself.

* cc/reset-more (2010-01-05) 7 commits
  (merged to 'next' on 2010-01-06 at 96639cb)
 + Documentation: reset: add some missing tables
  (merged to 'next' on 2010-01-04 at 8802c2c)
 + Fix bit assignment for CE_CONFLICTED
  (merged to 'next' on 2010-01-03 at f83d4c6)
 + "reset --merge": fix unmerged case
 + reset: use "unpack_trees()" directly instead of "git read-tree"
 + reset: add a few tests for "git reset --merge"
 + Documentation: reset: add some tables to describe the different options
 + reset: improve mixed reset error message when in a bare repo

* jc/branch-d (2009-12-29) 1 commit
 - branch -d: base the "already-merged" safety on the branch it merges with

http://thread.gmane.org/gmane.comp.version-control.git/135837/focus=135863
I am tempted to merge this to 'next', but please stop me if people see issues
in it.

* jc/rerere (2009-12-04) 1 commit
 - Teach --[no-]rerere-autoupdate option to merge, revert and friends

* jk/run-command-use-shell (2010-01-01) 8 commits
 - 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

* rs/maint-archive-match-pathspec (2009-12-12) 1 commit
  (merged to 'next' on 2010-01-03 at 92d7d15)
 + archive: complain about path specs that don't match anything

* tc/clone-v-progress (2009-12-26) 4 commits
 - 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.

* tc/smart-http-restrict (2010-01-02) 4 commits
  (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

* jc/cache-unmerge (2009-12-25) 9 commits
 - 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

Will wait a bit more before moving it to 'next'.

* jh/commit-status (2009-12-07) 1 commit
 - [test?] Add commit.status, --status, and --no-status

Needs tests.

* jc/checkout-merge-base (2009-11-20) 2 commits
  (merged to 'next' on 2010-01-02 at 6a8f6fc)
 + "rebase --onto A...B" replays history on the merge base between A and B
 + "checkout A...B" switches to the merge base between A and B

Users of "rebase -i" might want to teach this to the command.  Volunteers?

* tr/http-push-ref-status (2009-12-24) 6 commits
 - 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

Peff: $gmane/136169, 136167, 136168
RC: $gmane/136172

* il/vcs-helper (2009-12-09) 8 commits
  (merged to 'next' on 2010-01-06 at 7c79f42)
 + Remove special casing of http, https and ftp
 + Support remote archive from all smart transports
 + Support remote helpers implementing smart transports
 + Support taking over transports
 + Refactor git transport options parsing
 + Pass unknown protocols to external protocol handlers
 + Support mandatory capabilities
 + Add remote helper debug mode

* mm/diag-path-in-treeish (2009-12-07) 1 commit
  (merged to 'next' on 2010-01-06 at 6b4201e)
 + Detailed diagnosis when parsing an object name fails.

* mh/rebase-fixup (2009-12-07) 2 commits
  (merged to 'next' on 2010-01-06 at c4779a7)
 + 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.)

Initial round of "fixup" action that is similar to "squash" action in
"rebase -i" that excludes the commit log message from follow-up commits
when composing the log message for the updated one.  Expected is a further
improvement to skip opening the editor if a pick is followed only by
"fixup" and no "squash".

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

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style 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

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

What's the status of the fourth and later patches on this topic?  Overall
it looked reasonable, if I recall correctly what I thought when I reviewed
it last time, and I am tempted to merge it to 'next' soonish.  Please
file complaints before I do so if people have objections.

http://mid.gmane.org/201001051231.43048.johan@herland.net Hold!

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
  (merged to 'next' on 2010-01-06 at 03e00cd)
 + General --quiet improvements

* sr/gfi-options (2009-12-04) 7 commits
 - 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

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

I haven't seen comments on this round, and I am tempted to merge it to
'next' soonish.  Please file complaints before I do so if people have
objections.

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jan 2010, #02; Thu, 07)
  2010-01-06 22:25  2% ` Junio C Hamano
@ 2010-01-08  7:42  2%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-08  7:42 UTC (permalink / raw)
  To: git

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.

The tip of 'next' has been rebuilt on top of the current 'master'.

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

* mo/bin-wrappers (2009-12-02) 3 commits
  (merged to 'next' on 2010-01-03 at 8c5fa27)
 + INSTALL: document a simpler way to run uninstalled builds
 + run test suite without dashed git-commands in PATH
 + build dashless "bin-wrappers" directory similar to installed bindir

* mv/commit-date (2009-12-03) 2 commits
  (merged to 'next' on 2010-01-03 at 1c45fdf)
 + Document date formats accepted by parse_date()
 + builtin-commit: add --date option

* bg/maint-add-all-doc (2009-12-07) 4 commits
  (merged to 'next' on 2010-01-03 at b19a323)
 + squash! rm documentation--also mention add-u where we mention commit-a
 + git-rm doc: Describe how to sync index & work tree
 + git-add/rm doc: Consistently back-quote
 + Documentation: 'git add -A' can remove files

* so/cvsserver-update (2009-12-07) 1 commit
  (merged to 'next' on 2010-01-03 at 99959b6)
 + cvsserver: make the output of 'update' more compatible with cvs.

* mg/tag-d-show (2009-12-10) 1 commit
  (merged to 'next' on 2010-01-03 at 87657d2)
 + tag -d: print sha1 of deleted tag

* sb/maint-octopus (2009-12-11) 3 commits
  (merged to 'next' on 2010-01-03 at ffe77d6)
 + octopus: remove dead code
 + octopus: reenable fast-forward merges
 + octopus: make merge process simpler to follow

* js/filter-branch-prime (2009-12-15) 1 commit
  (merged to 'next' on 2010-01-03 at 7c90319)
 + filter-branch: remove an unnecessary use of 'git read-tree'

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

* jc/maint-1.6.1-checkout-m-custom-merge (2010-01-06) 1 commit
 - checkout -m path: fix recreating conflicts

* jn/makefile (2010-01-06) 4 commits
 - 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

--------------------------------------------------
[Will graduate after a bit more cooking]

* tr/http-updates (2009-12-28) 4 commits
  (merged to 'next' on 2010-01-02 at cf25698)
 + Remove http.authAny
 + Allow curl to rewind the RPC read buffer
 + Add an option for using any HTTP authentication scheme, not only basic
 + http: maintain curl sessions

* nd/sparse (2010-01-04) 25 commits
 - t7002: test for not using external grep on skip-worktree paths
 - t7002: set test prerequisite "external-grep" if supported
  (merged to 'next' on 2010-01-02 at 5499bbe)
 + grep: do not do external grep on skip-worktree entries
 + commit: correctly respect skip-worktree bit
 + ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
 + tests: rename duplicate t1009
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

* jk/maint-1.6.5-reset-hard (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-02 at 190d63b)
 + reset: unbreak hard resets with GIT_WORK_TREE

* jk/push-to-delete (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9ee293b)
 + builtin-push: add --delete as syntactic sugar for :foo

* mm/config-path (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9c0e81a)
 + builtin-config: add --path option doing ~ and ~user expansion.

* pm/cvs-environ (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 4c22932)
 + CVS Server: Support reading base and roots from environment

* tr/maint-1.6.5-bash-prompt-show-submodule-changes (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at b785974)
 + bash completion: factor submodules into dirty state

* bg/maint-remote-update-default (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at 113009e)
 + Fix "git remote update" with remotes.defalt set

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

* da/difftool (2009-12-22) 2 commits
  (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

* jh/gitweb-cached (2010-01-03) 4 commits
 - gitweb: Makefile improvements
 - gitweb: Optionally add "git" links in project list page
 - gitweb: Add option to force version match
 - gitweb: Load checking

Will merge to 'next', unless I hear objections within a few days.

* 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

* jc/fix-tree-walk (2009-09-14) 7 commits
 - 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 'next' by brave souls is greatly
appreciated.  I am not very happy about the solution myself.

* cc/reset-more (2010-01-08) 8 commits
 - t7111: check that reset options work as described in the tables
  (merged to 'next' on 2010-01-06 at 96639cb)
 + Documentation: reset: add some missing tables
  (merged to 'next' on 2010-01-04 at 8802c2c)
 + Fix bit assignment for CE_CONFLICTED
  (merged to 'next' on 2010-01-03 at f83d4c6)
 + "reset --merge": fix unmerged case
 + reset: use "unpack_trees()" directly instead of "git read-tree"
 + reset: add a few tests for "git reset --merge"
 + Documentation: reset: add some tables to describe the different options
 + reset: improve mixed reset error message when in a bare repo

* jc/branch-d (2009-12-29) 1 commit
 - branch -d: base the "already-merged" safety on the branch it merges with

http://thread.gmane.org/gmane.comp.version-control.git/135837/focus=135863
I am tempted to merge this to 'next', but please stop me if people see issues
in it.

* jc/rerere (2009-12-04) 1 commit
 - Teach --[no-]rerere-autoupdate option to merge, revert and friends

* jk/run-command-use-shell (2010-01-01) 8 commits
 - 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

* rs/maint-archive-match-pathspec (2009-12-12) 1 commit
  (merged to 'next' on 2010-01-03 at 92d7d15)
 + archive: complain about path specs that don't match anything

* tc/clone-v-progress (2009-12-26) 4 commits
 - 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.

* tc/smart-http-restrict (2010-01-02) 4 commits
  (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

* jc/cache-unmerge (2009-12-25) 9 commits
 - 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

Will wait a bit more before moving it to 'next'.

* jh/commit-status (2009-12-07) 1 commit
 - [test?] Add commit.status, --status, and --no-status

Needs tests.

* jc/checkout-merge-base (2010-01-07) 4 commits
  (merged to 'next' on 2010-01-07 at 5229608)
 + rebase -i: teach --onto A...B syntax
 + rebase: fix --onto A...B parsing and add tests
  (merged to 'next' on 2010-01-02 at 6a8f6fc)
 + "rebase --onto A...B" replays history on the merge base between A and B
 + "checkout A...B" switches to the merge base between A and B

* tr/http-push-ref-status (2009-12-24) 6 commits
 - 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

Peff: $gmane/136169, 136167, 136168
RC: $gmane/136172

* il/vcs-helper (2009-12-09) 8 commits
  (merged to 'next' on 2010-01-06 at 7c79f42)
 + Remove special casing of http, https and ftp
 + Support remote archive from all smart transports
 + Support remote helpers implementing smart transports
 + Support taking over transports
 + Refactor git transport options parsing
 + Pass unknown protocols to external protocol handlers
 + Support mandatory capabilities
 + Add remote helper debug mode

* mm/diag-path-in-treeish (2009-12-07) 1 commit
  (merged to 'next' on 2010-01-06 at 6b4201e)
 + Detailed diagnosis when parsing an object name fails.

* mh/rebase-fixup (2009-12-07) 2 commits
  (merged to 'next' on 2010-01-06 at c4779a7)
 + 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.)

Initial round of "fixup" action that is similar to "squash" action in
"rebase -i" that excludes the commit log message from follow-up commits
when composing the log message for the updated one.  Expected is a further
improvement to skip opening the editor if a pick is followed only by
"fixup" and no "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.)

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style 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

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

What's the status of the fourth and later patches on this topic?  Overall
it looked reasonable, if I recall correctly what I thought when I reviewed
it last time, and I am tempted to merge it to 'next' soonish.  Please
file complaints before I do so if people have objections.

http://mid.gmane.org/201001051231.43048.johan@herland.net Hold!

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
  (merged to 'next' on 2010-01-06 at 03e00cd)
 + General --quiet improvements

* sr/gfi-options (2009-12-04) 7 commits
 - 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

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

I haven't seen comments on this round, and I am tempted to merge it to
'next' soonish.  Please file complaints before I do so if people have
objections.

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jan 2010, #03; Sun, 10)
@ 2010-01-10 19:55  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-10 19:55 UTC (permalink / raw)
  To: git

What's cooking in git.git (Jan 2010, #03; Sun, 10)
--------------------------------------------------

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"]

* tr/http-updates (2009-12-28) 4 commits
  (merged to 'next' on 2010-01-02 at cf25698)
 + Remove http.authAny
 + Allow curl to rewind the RPC read buffer
 + Add an option for using any HTTP authentication scheme, not only basic
 + http: maintain curl sessions

* jk/maint-1.6.5-reset-hard (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-02 at 190d63b)
 + reset: unbreak hard resets with GIT_WORK_TREE

* jk/push-to-delete (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9ee293b)
 + builtin-push: add --delete as syntactic sugar for :foo

* mm/config-path (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9c0e81a)
 + builtin-config: add --path option doing ~ and ~user expansion.

* pm/cvs-environ (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 4c22932)
 + CVS Server: Support reading base and roots from environment

* tr/maint-1.6.5-bash-prompt-show-submodule-changes (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at b785974)
 + bash completion: factor submodules into dirty state

* bg/maint-remote-update-default (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at 113009e)
 + Fix "git remote update" with remotes.defalt set

* mm/diag-path-in-treeish (2009-12-07) 1 commit
  (merged to 'next' on 2010-01-06 at 6b4201e)
 + Detailed diagnosis when parsing an object name fails.

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
  (merged to 'next' on 2010-01-06 at 03e00cd)
 + General --quiet improvements

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

* bk/fix-relative-gitdir-file (2010-01-08) 2 commits
 - Handle relative paths in submodule .git files
 - Test update-index for a gitlink to a .git file

* jc/ident (2010-01-08) 3 commits
 - 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

* jc/ls-files-ignored-pathspec (2010-01-08) 4 commits
 - 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-10) 4 commits
 - 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
 (this branch uses il/vcs-helper.)

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

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

* jh/commit-status (2009-12-07) 1 commit
 - [test?] Add commit.status, --status, and --no-status

Needs tests.

* mh/rebase-fixup (2009-12-07) 2 commits
  (merged to 'next' on 2010-01-06 at c4779a7)
 + 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.)

Expecting further improvements to skip opening the editor if a pick is
followed only by "fixup" and no "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.)

Blocked by the above.

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style 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

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

What's the status of the fourth and later patches on this topic?  Overall
it looked reasonable, if I recall correctly what I thought when I reviewed
it last time, and I am tempted to merge it to 'next' soonish.  Please
file complaints before I do so if people have objections.

Hold: JH on 2010-01-05, http://article.gmane.org/gmane.comp.version-control.git/136183

--------------------------------------------------
[Will graduate after a bit more cooking]

* nd/sparse (2010-01-04) 25 commits
  (merged to 'next' on 2010-01-10 at fa73d6e)
 + t7002: test for not using external grep on skip-worktree paths
 + t7002: set test prerequisite "external-grep" if supported
  (merged to 'next' on 2010-01-02 at 5499bbe)
 + grep: do not do external grep on skip-worktree entries
 + commit: correctly respect skip-worktree bit
 + ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
 + tests: rename duplicate t1009
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

I've queued the (close to) original tests for external grep, but as a belt
and suspender measure Nguyễn may also want to add the whitebox test
in the review thread.

* cc/reset-more (2010-01-08) 8 commits
  (merged to 'next' on 2010-01-10 at 84730de)
 + t7111: check that reset options work as described in the tables
  (merged to 'next' on 2010-01-06 at 96639cb)
 + Documentation: reset: add some missing tables
  (merged to 'next' on 2010-01-04 at 8802c2c)
 + Fix bit assignment for CE_CONFLICTED
  (merged to 'next' on 2010-01-03 at f83d4c6)
 + "reset --merge": fix unmerged case
 + reset: use "unpack_trees()" directly instead of "git read-tree"
 + reset: add a few tests for "git reset --merge"
 + Documentation: reset: add some tables to describe the different options
 + reset: improve mixed reset error message when in a bare repo

* rs/maint-archive-match-pathspec (2009-12-12) 1 commit
  (merged to 'next' on 2010-01-03 at 92d7d15)
 + archive: complain about path specs that don't match anything

* il/vcs-helper (2010-01-09) 9 commits
  (merged to 'next' on 2010-01-10 at 11e448e)
 + Reset possible helper before reusing remote structure
  (merged to 'next' on 2010-01-06 at 7c79f42)
 + Remove special casing of http, https and ftp
 + Support remote archive from all smart transports
 + Support remote helpers implementing smart transports
 + Support taking over transports
 + Refactor git transport options parsing
 + Pass unknown protocols to external protocol handlers
 + Support mandatory capabilities
 + Add remote helper debug mode
 (this branch is used by js/exec-error-report.)

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

* 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

* 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

* da/difftool (2010-01-09) 6 commits
  (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

* jh/gitweb-cached (2010-01-03) 4 commits
 - gitweb: Makefile improvements
 - gitweb: Optionally add "git" links in project list page
 - gitweb: Add option to force version match
 - gitweb: Load checking

Hold: Warthog on 2010-01-06, http://article.gmane.org/gmane.comp.version-control.git/136306

* 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

* jc/fix-tree-walk (2009-09-14) 7 commits
 - 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 'next' by brave souls is greatly
appreciated (I am using this in my private build).

* 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

* 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

* 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

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

* tc/smart-http-restrict (2010-01-02) 4 commits
  (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

* jc/cache-unmerge (2009-12-25) 9 commits
 - 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

Will wait a bit more before moving it to 'next'.  J6t spotted an issue
with "rerere forget" and has a test script.

* jc/checkout-merge-base (2010-01-07) 4 commits
  (merged to 'next' on 2010-01-07 at 5229608)
 + rebase -i: teach --onto A...B syntax
 + rebase: fix --onto A...B parsing and add tests
  (merged to 'next' on 2010-01-02 at 6a8f6fc)
 + "rebase --onto A...B" replays history on the merge base between A and B
 + "checkout A...B" switches to the merge base between A and B

* tr/http-push-ref-status (2010-01-08) 6 commits
 - 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

Rerolled.

* 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

^ permalink raw reply	[relevance 2%]

* "What's cooking" incremental edition
@ 2010-01-10 19:55  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-10 19:55 UTC (permalink / raw)
  To: git

This is "git show --ext-diff" output in 'todo' branch (see README.cooking
in the same branch) for today's updates to highlight the updated parts.

-- >8 --

-What's cooking in git.git (Jan 2010, #02; Thu, 07)
+What's cooking in git.git (Jan 2010, #03; Sun, 10)
 
 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.
-
-The tip of 'next' has been rebuilt on top of the current 'master'.

--------------------------------------------------
Born topics

[New Topics]

 * bk/fix-relative-gitdir-file (2010-01-08) 2 commits
  - Handle relative paths in submodule .git files
  - Test update-index for a gitlink to a .git file

 * jc/ident (2010-01-08) 3 commits
  - 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

 * jc/ls-files-ignored-pathspec (2010-01-08) 4 commits
  - 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-10) 4 commits
  - 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
  (this branch uses il/vcs-helper.)

--------------------------------------------------
Moved from [New Topics] to [Cooking]

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

 * jn/makefile (2010-01-06) 4 commits
- - 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
+  (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

--------------------------------------------------
Moved from [Will graduate after a bit more cooking] to [Graduated to "master"]

 * tr/http-updates (2009-12-28) 4 commits

 * jk/maint-1.6.5-reset-hard (2009-12-30) 1 commit

 * jk/push-to-delete (2009-12-30) 1 commit

 * mm/config-path (2009-12-30) 1 commit

 * pm/cvs-environ (2009-12-30) 1 commit

 * tr/maint-1.6.5-bash-prompt-show-submodule-changes (2009-12-31) 1 commit

 * bg/maint-remote-update-default (2009-12-31) 1 commit

--------------------------------------------------
Moved from [Cooking] to [Will graduate after a bit more cooking]

 * cc/reset-more (2010-01-08) 8 commits
- - t7111: check that reset options work as described in the tables
+  (merged to 'next' on 2010-01-10 at 84730de)
+ + t7111: check that reset options work as described in the tables
   (merged to 'next' on 2010-01-06 at 96639cb)
  + Documentation: reset: add some missing tables
   (merged to 'next' on 2010-01-04 at 8802c2c)
  + Fix bit assignment for CE_CONFLICTED
   (merged to 'next' on 2010-01-03 at f83d4c6)
  + "reset --merge": fix unmerged case
  + reset: use "unpack_trees()" directly instead of "git read-tree"
  + reset: add a few tests for "git reset --merge"
  + Documentation: reset: add some tables to describe the different options
  + reset: improve mixed reset error message when in a bare repo

 * rs/maint-archive-match-pathspec (2009-12-12) 1 commit

-* il/vcs-helper (2009-12-09) 8 commits
+* il/vcs-helper (2010-01-09) 9 commits
+  (merged to 'next' on 2010-01-10 at 11e448e)
+ + Reset possible helper before reusing remote structure
   (merged to 'next' on 2010-01-06 at 7c79f42)
  + Remove special casing of http, https and ftp
  + Support remote archive from all smart transports
  + Support remote helpers implementing smart transports
  + Support taking over transports
  + Refactor git transport options parsing
  + Pass unknown protocols to external protocol handlers
  + Support mandatory capabilities
  + Add remote helper debug mode
+ (this branch is used by js/exec-error-report.)

--------------------------------------------------
Moved from [Cooking] to [Stalled]

 * jh/commit-status (2009-12-07) 1 commit

 * mh/rebase-fixup (2009-12-07) 2 commits
-Initial round of "fixup" action that is similar to "squash" action in
-"rebase -i" that excludes the commit log message from follow-up commits
-when composing the log message for the updated one.  Expected is a further
-improvement to skip opening the editor if a pick is followed only by
-"fixup" and no "squash".
+Expecting further improvements to skip opening the editor if a pick is
+followed only by "fixup" and no "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.)
+
+Blocked by the above.

 * jh/notes (2009-12-07) 11 commits
-http://mid.gmane.org/201001051231.43048.johan@herland.net Hold!
+Hold: JH on 2010-01-05, http://article.gmane.org/gmane.comp.version-control.git/136183

 * ap/merge-backend-opts (2008-07-18) 6 commits

--------------------------------------------------
Moved from [Cooking] to [Graduated to "master"]

 * mm/diag-path-in-treeish (2009-12-07) 1 commit

 * fc/opt-quiet-gc-reset (2009-12-02) 1 commit

--------------------------------------------------
Other topics

[Will graduate after a bit more cooking]

 * nd/sparse (2010-01-04) 25 commits
- - t7002: test for not using external grep on skip-worktree paths
- - t7002: set test prerequisite "external-grep" if supported
+  (merged to 'next' on 2010-01-10 at fa73d6e)
+ + t7002: test for not using external grep on skip-worktree paths
+ + t7002: set test prerequisite "external-grep" if supported
   (merged to 'next' on 2010-01-02 at 5499bbe)
  + grep: do not do external grep on skip-worktree entries
  + commit: correctly respect skip-worktree bit
  + ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
  + tests: rename duplicate t1009
  + sparse checkout: inhibit empty worktree
  + Add tests for sparse checkout
  + read-tree: add --no-sparse-checkout to disable sparse checkout support
  + unpack-trees(): ignore worktree check outside checkout area
  + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
  + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
  + unpack-trees.c: generalize verify_* functions
  + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
  + Introduce "sparse checkout"
  + dir.c: export excluded_1() and add_excludes_from_file_1()
  + excluded_1(): support exclude files in index
  + unpack-trees(): carry skip-worktree bit over in merged_entry()
  + Read .gitignore from index if it is skip-worktree
  + Avoid writing to buffer in add_excludes_from_file_1()
  + Teach Git to respect skip-worktree bit (writing part)
  + Teach Git to respect skip-worktree bit (reading part)
  + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
  + Add test-index-version
  + update-index: refactor mark_valid() in preparation for new options
+
+I've queued the (close to) original tests for external grep, but as a belt
+and suspender measure Nguyễn may also want to add the whitebox test
+in the review thread.

[Cooking]

-* da/difftool (2009-12-22) 2 commits
+* da/difftool (2010-01-09) 6 commits
+  (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

 * jh/gitweb-cached (2010-01-03) 4 commits
-Will merge to 'next', unless I hear objections within a few days.
+Hold: Warthog on 2010-01-06, http://article.gmane.org/gmane.comp.version-control.git/136306

 * jc/fix-tree-walk (2009-09-14) 7 commits
 Resurrected from "Ejected" category.  This is fix for a tricky codepath
 and testing and improving before it hits 'next' by brave souls is greatly
-appreciated.  I am not very happy about the solution myself.
+appreciated (I am using this in my private build).

 * jc/branch-d (2009-12-29) 1 commit
- - branch -d: base the "already-merged" safety on the branch it merges with
-
+  (merged to 'next' on 2010-01-10 at 61a14b7)
+ + branch -d: base the "already-merged" safety on the branch it merges with
-http://thread.gmane.org/gmane.comp.version-control.git/135837/focus=135863
-I am tempted to merge this to 'next', but please stop me if people see issues
-in it.

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

 * jk/run-command-use-shell (2010-01-01) 8 commits
- - 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
+  (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
 

 * tc/clone-v-progress (2009-12-26) 4 commits
- - 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
+  (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
 

 * jc/cache-unmerge (2009-12-25) 9 commits
-Will wait a bit more before moving it to 'next'.
+Will wait a bit more before moving it to 'next'.  J6t spotted an issue
+with "rerere forget" and has a test script.

-* tr/http-push-ref-status (2009-12-24) 6 commits
+* tr/http-push-ref-status (2010-01-08) 6 commits
-Peff: $gmane/136169, 136167, 136168
-RC: $gmane/136172
+Rerolled.

 * sr/gfi-options (2009-12-04) 7 commits
- - 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
-
-http://thread.gmane.org/gmane.comp.version-control.git/134540
-
+  (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
-I haven't seen comments on this round, and I am tempted to merge it to
-'next' soonish.  Please file complaints before I do so if people have
-objections.

--------------------------------------------------
Gone topics

Was in [Graduated to "master"]

 * mo/bin-wrappers (2009-12-02) 3 commits
   (merged to 'next' on 2010-01-03 at 8c5fa27)
  + INSTALL: document a simpler way to run uninstalled builds
  + run test suite without dashed git-commands in PATH
  + build dashless "bin-wrappers" directory similar to installed bindir

 * mv/commit-date (2009-12-03) 2 commits
   (merged to 'next' on 2010-01-03 at 1c45fdf)
  + Document date formats accepted by parse_date()
  + builtin-commit: add --date option

 * bg/maint-add-all-doc (2009-12-07) 4 commits
   (merged to 'next' on 2010-01-03 at b19a323)
  + squash! rm documentation--also mention add-u where we mention commit-a
  + git-rm doc: Describe how to sync index & work tree
  + git-add/rm doc: Consistently back-quote
  + Documentation: 'git add -A' can remove files

 * so/cvsserver-update (2009-12-07) 1 commit
   (merged to 'next' on 2010-01-03 at 99959b6)
  + cvsserver: make the output of 'update' more compatible with cvs.

 * mg/tag-d-show (2009-12-10) 1 commit
   (merged to 'next' on 2010-01-03 at 87657d2)
  + tag -d: print sha1 of deleted tag

 * sb/maint-octopus (2009-12-11) 3 commits
   (merged to 'next' on 2010-01-03 at ffe77d6)
  + octopus: remove dead code
  + octopus: reenable fast-forward merges
  + octopus: make merge process simpler to follow

 * js/filter-branch-prime (2009-12-15) 1 commit
   (merged to 'next' on 2010-01-03 at 7c90319)
  + filter-branch: remove an unnecessary use of 'git read-tree'

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jan 2010, #04; Wed, 13)
@ 2010-01-13 23:11  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-13 23:11 UTC (permalink / raw)
  To: git

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"]

* nd/sparse (2010-01-04) 25 commits
  (merged to 'next' on 2010-01-10 at fa73d6e)
 + t7002: test for not using external grep on skip-worktree paths
 + t7002: set test prerequisite "external-grep" if supported
  (merged to 'next' on 2010-01-02 at 5499bbe)
 + grep: do not do external grep on skip-worktree entries
 + commit: correctly respect skip-worktree bit
 + ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
 + tests: rename duplicate t1009
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

With the removal of external grep near future, some codepaths will be
slightly simplified.

* cc/reset-more (2010-01-08) 8 commits
  (merged to 'next' on 2010-01-10 at 84730de)
 + t7111: check that reset options work as described in the tables
  (merged to 'next' on 2010-01-06 at 96639cb)
 + Documentation: reset: add some missing tables
  (merged to 'next' on 2010-01-04 at 8802c2c)
 + Fix bit assignment for CE_CONFLICTED
  (merged to 'next' on 2010-01-03 at f83d4c6)
 + "reset --merge": fix unmerged case
 + reset: use "unpack_trees()" directly instead of "git read-tree"
 + reset: add a few tests for "git reset --merge"
 + Documentation: reset: add some tables to describe the different options
 + reset: improve mixed reset error message when in a bare repo

* rs/maint-archive-match-pathspec (2009-12-12) 1 commit
  (merged to 'next' on 2010-01-03 at 92d7d15)
 + archive: complain about path specs that don't match anything

* il/vcs-helper (2010-01-09) 9 commits
  (merged to 'next' on 2010-01-10 at 11e448e)
 + Reset possible helper before reusing remote structure
  (merged to 'next' on 2010-01-06 at 7c79f42)
 + Remove special casing of http, https and ftp
 + Support remote archive from all smart transports
 + Support remote helpers implementing smart transports
 + Support taking over transports
 + Refactor git transport options parsing
 + Pass unknown protocols to external protocol handlers
 + Support mandatory capabilities
 + Add remote helper debug mode

* jc/checkout-merge-base (2010-01-07) 4 commits
  (merged to 'next' on 2010-01-07 at 5229608)
 + rebase -i: teach --onto A...B syntax
 + rebase: fix --onto A...B parsing and add tests
  (merged to 'next' on 2010-01-02 at 6a8f6fc)
 + "rebase --onto A...B" replays history on the merge base between A and B
 + "checkout A...B" switches to the merge base between A and B

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

* 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-12) 2 commits
  (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.)

This is for eventual inclusion for the next release.

* jc/symbol-static (2010-01-11) 17 commits
 - symlinks.c: remove unused functions
 - object.c: remove unused functions
 - blob.c: remove unused function
 - strbuf.c: remove unused function
 - sha1_file.c: remove unused function
 - mailmap.c: remove unused function
 - 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.  Daniel
suggests to leave some comment for blob.c and I agree in principle, but
I don't think of a good description myself.

* nd/include-termios-for-osol (2010-01-11) 1 commit
 - Add missing #include to support TIOCGWINSZ on Solaris

* pc/uninteresting-submodule-disappear-upon-switch-branches (2010-01-11) 1 commit
 - 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.

* sd/cd-p-show-toplevel (2010-01-12) 2 commits
 - 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.

* jk/warn-author-committer-after-commit (2010-01-13) 4 commits
 - commit: allow suppression of implicit identity advice
 - commit: show interesting ident information in summary
 - strbuf: add strbuf_addbuf_percentquote
 - strbuf_expand: convert "%%" to "%"

* js/refer-upstream (2009-09-10) 1 commit
 - Introduce <branch>@{upstream} notation

This does not teach the public interface about the new syntax; callers
that care about distinction between name vs SHA-1 might not work as well
as they should.

* mm/conflict-advice (2010-01-12) 1 commit
 - Be more user-friendly when refusing to do something because of conflict.

* jc/maint-strbuf-add-fix-doubling (2010-01-12) 1 commit
 - strbuf_addbuf(): allow passing the same buf to dst and src

* jl/submodule-diff (2010-01-13) 2 commits
 - Teach diff that modified submodule directory is dirty
 - Show submodules as modified when they contain a dirty work tree

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

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

* mh/rebase-fixup (2010-01-12) 5 commits
  (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
  (merged to 'next' on 2010-01-06 at c4779a7)
 + 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.)

Expecting further improvements to skip opening the editor if a pick is
followed only by "fixup" and no "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.)

Blocked by the above.

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style 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

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

What's the status of the fourth and later patches on this topic?  Overall
it looked reasonable, if I recall correctly what I thought when I reviewed
it last time, and I am tempted to merge it to 'next' soonish.  Please
file complaints before I do so if people have objections.

Hold: JH on 2010-01-05, http://article.gmane.org/gmane.comp.version-control.git/136183

* jh/gitweb-cached (2010-01-13) 7 commits
 - (sign-off?) gitweb: File based caching layer (from git.kernel.org)
 - (sign-off?) gitweb: add a get function to compliment print_local_time
 - (sign-off?) gitweb: Convert output to using indirect file handle
 - gitweb: Optionally add "git" links in project list page
 - gitweb: Makefile improvements
 - gitweb: Add option to force version match
 - gitweb: Load checking

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

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

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

* bk/fix-relative-gitdir-file (2010-01-08) 2 commits
 - Handle relative paths in submodule .git files
 - Test update-index for a gitlink to a .git file

* jc/ident (2010-01-08) 3 commits
 - 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

Opinions on the topmost one?

* jc/ls-files-ignored-pathspec (2010-01-08) 4 commits
 - 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
 - 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/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

* 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

* da/difftool (2010-01-09) 6 commits
  (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

* 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

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

* 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

* 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

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

* tc/smart-http-restrict (2010-01-02) 4 commits
  (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

* 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

* tr/http-push-ref-status (2010-01-08) 6 commits
 - 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

Rerolled.

* 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

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jan 2010, #05; Sat, 16)
@ 2010-01-17  2:46  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-17  2:46 UTC (permalink / raw)
  To: git

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.

I am expecting that the next week we will see quite a busy 'master', as I
would really like to close the merge window for 1.7.0 and tag -rc0 by the
end of it.

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

* 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

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

* 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

* nd/status-partial-refresh (2010-01-14) 1 commit
  (merged to 'next' on 2010-01-16 at f77bc8f)
 + status: only touch path we may need to check

* 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

* jc/conflict-mark-len-attr (2010-01-16) 3 commits
 . WIP : honor conflict-marker-lenght in rerere (does not work yet)
 . rerere: use ll_merge() instead of using xdl_merge()
 . conflict-marker-length: new attribute
 (this branch uses jc/cache-unmerge.)

I am attempting to introduce a new per-path attribute to specify
non-default conflict marker length to help rerere grok conflicts in
Documentation/git-merge.txt, but the series is not yet in a presentable
state yet.

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

* ap/merge-backend-opts (2008-07-18) 6 commits
 - 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.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

* js/refer-upstream (2009-09-10) 1 commit
 - Introduce <branch>@{upstream} notation

This does not teach the public interface about the new syntax; callers
that care about distinction between name vs SHA-1 might not work as well
as they should.

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - 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: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style 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

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

What's the status of the fourth and later patches on this topic?  Overall
it looked reasonable, if I recall correctly what I thought when I reviewed
it last time, and I am tempted to merge it to 'next' soonish.  Please
file complaints before I do so if people have objections.

Hold: JH on 2010-01-05, http://article.gmane.org/gmane.comp.version-control.git/136183

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

* jk/warn-author-committer-after-commit (2010-01-13) 4 commits
  (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 "%"

* 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

* 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

* 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

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

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

* 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

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

* mh/rebase-fixup (2010-01-14) 21 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
 - 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.)

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

* jl/submodule-diff (2010-01-16) 2 commits
  (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-mark-len-attr.)

* 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

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

* jc/symbol-static (2010-01-11) 17 commits
 - symlinks.c: remove unused functions
 - object.c: remove unused functions
 - blob.c: remove unused function
 - strbuf.c: remove unused function
 - sha1_file.c: remove unused function
 - mailmap.c: remove unused function
 - 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.  Daniel
suggests to leave some comment for blob.c and I agree in principle, but
I don't think of a good description myself.

* 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/ident (2010-01-08) 3 commits
 - 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

Opinions on the topmost one?

* 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	[relevance 2%]

* What's cooking in git.git (Jan 2010, #06 draft)
@ 2010-01-20 10:24  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
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	[relevance 2%]

* What's cooking in git.git (Jan 2010, #06; Wed, 20)
@ 2010-01-21  0:52  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-21  0:52 UTC (permalink / raw)
  To: git

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

* 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

* 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

* 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

* 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

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

* 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

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

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

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

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

--------------------------------------------------
[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

* 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

* 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

* il/rev-glob (2010-01-20) 2 commits
 - rev-parse --branches/--tags/--remotes=pattern
 - rev-parse --glob

This is a re-rolled "--namespace=" one.

--------------------------------------------------
[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

* jl/submodule-diff (2010-01-18) 4 commits
  (merged to 'next' on 2010-01-20 at 95cb513)
 + 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/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).

* 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
  (merged to 'next' on 2010-01-20 at 5a5547a)
 + 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.

* 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	[relevance 2%]

* What's cooking in git.git (Jan 2010, #07; Fri, 22)
@ 2010-01-23  3:28  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-23  3:28 UTC (permalink / raw)
  To: git

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"]

* 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

* 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

* 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

* 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

* 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

* 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

* jc/maint-limit-note-output (2010-01-21) 2 commits
  (merged to 'next' on 2010-01-21 at bcb80b9)
 + Fix "log --oneline" not to show notes
  (merged to 'next' on 2010-01-20 at 526bfcc)
 + Fix "log" family not to be too agressive about showing notes

* nd/ls-files-sparse-fix (2010-01-20) 1 commit
  (merged to 'next' on 2010-01-20 at 0f61dbc)
 + Fix memory corruption when .gitignore does not end by \n

* 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

* il/rev-glob (2010-01-22) 3 commits
  (merged to 'next' on 2010-01-21 at 453a21c)
 + Documentation: improve description of --glob=pattern and friends
  (merged to 'next' on 2010-01-20 at 928ba0a)
 + rev-parse --branches/--tags/--remotes=pattern
 + rev-parse --glob

This is a re-rolled "--namespace=" one.

* jl/submodule-diff (2010-01-18) 4 commits
  (merged to 'next' on 2010-01-20 at 95cb513)
 + 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

* js/refer-upstream (2010-01-19) 3 commits
  (merged to 'next' on 2010-01-20 at 5a5547a)
 + 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.

* 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

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

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

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

* jh/notes (2010-01-17) 20 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

Tentatively ejected, as its tests conflict with tests in a higher priority
fix.

* 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/grep-author-all-match-implicit (2010-01-17) 1 commit
 - "log --author=me --grep=it" should find intersection, not union

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jan 2010, #08; Sun, 24)
@ 2010-01-25  4:39  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-25  4:39 UTC (permalink / raw)
  To: git

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"]

* 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

This is fix for a tricky codepath; I've been using this personally during
the whole cycle up to point, so hopefully it finally have nailed all the
corner cases?  Knock wood...

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

* cc/reset-keep (2010-01-19) 5 commits
 - reset: disallow using --keep when there are unmerged entries
 - reset: disallow "reset --keep" outside a work tree
 - Documentation: reset: describe new "--keep" option
 - reset: add test cases for "--keep" option
 - reset: add option "--keep" to "git reset"

I do not think I'd ever use this, and I am not convinced I can sell this
to users as a great new feature without confusing them unnecessarily, but
perhaps queuing it to pu to give it wider visibility may help somebody
coming up with a better way to defend the feature and introduce it to
users without confusing them than Christan nor I managed to.

* jc/ce-uptodate (2010-01-24) 1 commit
 - Make ce_uptodate() trustworthy again

I think this and Jens Lehmann's follow-up patch to avoid calling
is_submodule_modified() are needed before 1.7.0

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

* jh/notes (2010-01-17) 20 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

The changes to test vector this series makes to t3301 breaks tests that
are in 'master', so 'pu' doesn't pass it.

* 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

I know there is a series to split the later ones into smaller chunks that
are being discussed on the list, but they don't appear here.  I'd prefer
to pick the series up after all the dust from the discussion settles.

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

^ permalink raw reply	[relevance 2%]

* [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix)
@ 2010-08-17  6:51  2% Jonathan Nieder
  2010-08-17  7:04  2% ` [PATCH 15/24] merge script: improve log message subject Jonathan Nieder
  2010-08-17  7:46  3% ` [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix) Ævar Arnfjörð Bjarmason
  0 siblings, 2 replies; 200+ results
From: Jonathan Nieder @ 2010-08-17  6:51 UTC (permalink / raw)
  To: git; +Cc: Lars Hjemli, Tay Ray Chuan, Matthieu Moy, Clemens Buchacher,
	Jeff King

While preparing to make some minor "git merge" changes, I noticed that
the old merge script does not pass all tests any more.  Since it can
be easier to prototype in shell and then port to C, I think that is
worth fixing.

Of course this is not urgent at all.

Patch 1 fixes a minor bug that the scripted implementation does not
suffer from, illustrated by the test "merge early part of c2" from
t7600-merge.sh.

The underlying problem is a subtlety in the resolve_ref() API (from
v0.99.8~13, Use resolve_ref() to implement read_ref(), 2005-09-30):
the "reading" argument to resolve_ref() should usually be true, but
that is not obvious to newcomers.

Patches 2-7 are minor test changes.  They are early in the series
to give flexibility about when to merge them.

Patches 8-10 expose functionality used by merge when handling octopus
merges.  merge-base --octopus is get_octopus_merge_bases(), used to
provide basis arguments when running the "git merge-octopus" command.
Of course the latter does not care about its basis arguments, but
that is a topic for another series.  merge-base --independent is
reduce_refs(), used to reduce the parent list when --no-ff is not
in use.

These are analagous to show-branch --merge-base and
show-branch --independent but are slower and can be used with more
than 25 refs.

Patch 11 exposes the functionality from fmt-merge-msg needed to
implement merge --log -m.

Patches 12 and later are ports of various patches to builtin/merge.c.
I did the bare minimum to make tests pass. :)

Patches are against jn/merge-renormalize~2 (rerere: migrate to
parse-options API) from pu, because without that,
"rerere --rerere-autoupdate" does not work.

Thoughts?

Jonathan Nieder (24):
  merge: do not mistake (ancestor of) tag for branch
  t7600 (merge): modernize style
  t7600 (merge): do not launch gitk for --debug
  t7600 (merge): check reflog entry
  t7600 (merge): test merge from branch yet to be born
  t6010 (merge-base): modernize style
  t6200 (fmt-merge-msg): style nitpicks
  Documentation: add a SEE ALSO section for merge-base
  merge-base --octopus to mimic show-branch --merge-base
  merge-base --independent to print reduced parent list in a merge
  fmt-merge-msg -m to replace subject line
  merge script: --squash, --ff from unborn branch are errors
  merge script: tweak unmerged files message to match builtin
  merge script: refuse to merge during merge
  merge script: improve log message subject
  merge script: merge -X<option>
  merge script: allow custom strategies
  merge script: forbid merge -s index
  merge script: handle -m --log correctly
  merge script: handle many-way octopus
  merge script: --ff-only to disallow true merge
  merge script: handle --no-ff --no-commit correctly
  merge script: notice @{-1} shorthand
  merge script: learn --[no-]rerere-autoupdate

 Documentation/git-fmt-merge-msg.txt |    9 +-
 Documentation/git-merge-base.txt    |   34 +++-
 builtin/fmt-merge-msg.c             |   18 ++-
 builtin/merge-base.c                |   44 ++++-
 builtin/merge.c                     |    2 +-
 contrib/examples/git-merge.sh       |  115 ++++++++---
 t/t6010-merge-base.sh               |  358 +++++++++++++++++++--------------
 t/t6200-fmt-merge-msg.sh            |  306 ++++++++++++++--------------
 t/t7600-merge.sh                    |  385 +++++++++++++++--------------------
 9 files changed, 705 insertions(+), 566 deletions(-)

^ permalink raw reply	[relevance 2%]

* [PATCH 15/24] merge script: improve log message subject
  2010-08-17  6:51  2% [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix) Jonathan Nieder
@ 2010-08-17  7:04  2% ` Jonathan Nieder
  2010-08-17  7:46  3% ` [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix) Ævar Arnfjörð Bjarmason
  1 sibling, 0 replies; 200+ results
From: Jonathan Nieder @ 2010-08-17  7:04 UTC (permalink / raw)
  To: git; +Cc: Lars Hjemli, Tay Ray Chuan, Matthieu Moy, Clemens Buchacher,
	Jeff King

 - point out remote-tracking branches as "remote branch
   'upstream/master'";
 - avoid misleading log messages when a tag and branch
   share a name.

This approximates the builtin merge command's behavior well
enough to pass the relevant tests.

Based roughly on v1.6.4.2~10^2 (merge: indicate remote tracking
branches in merge message, 2009-08-09) and v1.6.4.2~10^2~1 (merge: fix
incorrect merge message for ambiguous tag/branch, 2009-08-09).

Cc: Jeff King <peff@peff.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 contrib/examples/git-merge.sh |   27 +++++++++++++++++++--------
 1 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/contrib/examples/git-merge.sh b/contrib/examples/git-merge.sh
index 50042df..d491566 100755
--- a/contrib/examples/git-merge.sh
+++ b/contrib/examples/git-merge.sh
@@ -134,21 +134,32 @@ finish () {
 merge_name () {
 	remote="$1"
 	rh=$(git rev-parse --verify "$remote^0" 2>/dev/null) || return
-	bh=$(git show-ref -s --verify "refs/heads/$remote" 2>/dev/null)
-	if test "$rh" = "$bh"
-	then
-		echo "$rh		branch '$remote' of ."
-	elif truname=$(expr "$remote" : '\(.*\)~[1-9][0-9]*$') &&
+	if truname=$(expr "$remote" : '\(.*\)~[0-9]*$') &&
 		git show-ref -q --verify "refs/heads/$truname" 2>/dev/null
 	then
 		echo "$rh		branch '$truname' (early part) of ."
-	elif test "$remote" = "FETCH_HEAD" -a -r "$GIT_DIR/FETCH_HEAD"
+		return
+	fi
+	if found_ref=$(git rev-parse --symbolic-full-name --verify \
+							"$remote" 2>/dev/null)
+	then
+		if test "${found_ref#refs/heads/}" != "$found_ref"
+		then
+			echo "$rh		branch '$remote' of ."
+			return
+		elif test "${found_ref#refs/remotes/}" != "$found_ref"
+		then
+			echo "$rh		remote branch '$remote' of ."
+			return
+		fi
+	fi
+	if test "$remote" = "FETCH_HEAD" -a -r "$GIT_DIR/FETCH_HEAD"
 	then
 		sed -e 's/	not-for-merge	/		/' -e 1q \
 			"$GIT_DIR/FETCH_HEAD"
-	else
-		echo "$rh		commit '$remote'"
+		return
 	fi
+	echo "$rh		commit '$remote'"
 }
 
 parse_config () {
-- 
1.7.2.1.544.ga752d.dirty

^ permalink raw reply related	[relevance 2%]

* Re: [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix)
  2010-08-17  6:51  2% [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix) Jonathan Nieder
  2010-08-17  7:04  2% ` [PATCH 15/24] merge script: improve log message subject Jonathan Nieder
@ 2010-08-17  7:46  3% ` Ævar Arnfjörð Bjarmason
  2010-08-17  8:10  3%   ` Jonathan Nieder
  1 sibling, 1 reply; 200+ results
From: Ævar Arnfjörð Bjarmason @ 2010-08-17  7:46 UTC (permalink / raw)
  To: Jonathan Nieder
  Cc: git, Lars Hjemli, Tay Ray Chuan, Matthieu Moy, Clemens Buchacher,
	Jeff King

On Tue, Aug 17, 2010 at 06:51, Jonathan Nieder <jrnieder@gmail.com> wrote:
> While preparing to make some minor "git merge" changes, I noticed that
> the old merge script does not pass all tests any more.  Since it can
> be easier to prototype in shell and then port to C, I think that is
> worth fixing.
>
> Of course this is not urgent at all.

> Patches 2-7 are minor test changes.  They are early in the series
> to give flexibility about when to merge them.

Those all looked good, thanks for tackling that.

> Patches 8-10 expose functionality used by merge when handling octopus
> merges.

You mean 9-10, 8 looks good. I don't have the familiarity to comment
on 9-10.

> Patches 12 and later are ports of various patches to builtin/merge.c.
> I did the bare minimum to make tests pass. :)

Those also look good to my untrained eye.

How do you run the tests against git-merge.sh? Is there some make
target to use it instead of git-merge.c, or do you manually move it in
place?

If it's the latter a switch somewhere to run the test suite against
these .sh alternatives might compliment this series nicely.

^ permalink raw reply	[relevance 3%]

* Re: [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix)
  2010-08-17  7:46  3% ` [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix) Ævar Arnfjörð Bjarmason
@ 2010-08-17  8:10  3%   ` Jonathan Nieder
  0 siblings, 0 replies; 200+ results
From: Jonathan Nieder @ 2010-08-17  8:10 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason
  Cc: git, Lars Hjemli, Tay Ray Chuan, Matthieu Moy, Clemens Buchacher,
	Jeff King

Ævar Arnfjörð Bjarmason wrote:
> On Tue, Aug 17, 2010 at 06:51, Jonathan Nieder <jrnieder@gmail.com> wrote:

>> Patches 8-10 expose functionality used by merge when handling octopus
>> merges.
>
> You mean 9-10, 8 looks good. I don't have the familiarity to comment
> on 9-10.

I would be especially interested in feedback on the interface from
those two. ;-)

Is merge-base the right command to learn --independent?

Is --independent the right name for "reduced parent list"?

Is merge-base --octopus generally useful at all, or should we change
the API for custom octopus strategies (maybe at the same time as
teaching them to declare NO_TRIVIAL and NO_FAST_FORWARD preferences)
to leave the list of merge bases out?

>> Patches 12 and later are ports of various patches to builtin/merge.c.
>> I did the bare minimum to make tests pass. :)
>
> Those also look good to my untrained eye.

Thanks for looking them over.

> How do you run the tests against git-merge.sh? Is there some make
> target to use it instead of git-merge.c, or do you manually move it in
> place?

Ah, yes, I should have made that information more prominent.

To test: remove cmd_merge from the builtins list in git.c,
build git, and then run:

 cp contrib/examples/git-merge.sh .
 make SCRIPT_SH=git-merge.sh git-merge
 cd t && make

> If it's the latter a switch somewhere to run the test suite against
> these .sh alternatives might compliment this series nicely.

Yes, that sounds like an good idea.  Of course most of the retired
scripts are bitrotted by now.

^ permalink raw reply	[relevance 3%]

* Re: Git automatic stashing?
  @ 2010-11-09  7:49  2%   ` Matthieu Moy
  0 siblings, 0 replies; 200+ results
From: Matthieu Moy @ 2010-11-09  7:49 UTC (permalink / raw)
  To: Casey McGinty; +Cc: git

Casey McGinty <casey.mcginty@gmail.com> writes:

> Is there any feature in git to perform and auto stash apply/pop when
> trying to do a merge/rebase in a dirty working dir? This would save
> some keystrokes from time-to-time, and make it easier for new users
> unfamiliar with git.

I agree with the keystrokes part, but not with the fact that it would
make it easier in general. In the sequence

git stash
git merge
git stash pop

conflicts can occur in 2 distinct places. One can easily forsee this
senario occuring:

git stash
git merge
# fix conflicts
# git commit
# forget to do the action needed to get the "git stash pop"

and voila, you've just lost data.

Actually, what I'd like to see would be this feature, but limited to
the case where the merge is a fast-forward, because then, only the
last action of the sequence could possibly leave conflict, so Git
could finish with a message like "please fix conflicts and continue
working". Actually, this is not far from what "git checout -m" is
doing.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

^ permalink raw reply	[relevance 2%]

* Re: conflict resolution of pd/bash-4-completion [Re: What's cooking in git.git (Dec 2010, #05; Thu, 16)]
  @ 2010-12-17 19:24  3%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-12-17 19:24 UTC (permalink / raw)
  To: SZEDER Gábor; +Cc: git

SZEDER Gábor <szeder@ira.uka.de> writes:

> On Thu, Dec 16, 2010 at 11:38:21PM -0800, Junio C Hamano wrote:
>> * pd/bash-4-completion (2010-12-15) 3 commits
>>  - Merge branch 'master' (early part) into pd/bash-4-completion
>>  - bash: simple reimplementation of _get_comp_words_by_ref
>>  - bash: get --pretty=m<tab> completion to work with bash v4
>> 
>> Updated by Jonathan; this still has some conflicts around "notes"
>> completion I tried to resolve near the tip of 'pu'.
>
> The resolution of that conflict is not quite correct.  I'm not sure
> how I should send a proper conflict resolution...  but I'll try
> anyway.

Thanks, this helped me quite a lot to update my rerere database, so that
the fix-up can be carried forward in future merges to 'next' and
eventually 'master'.

For anybody interested, here is how a merge fix-up patch like yours can be
used:

1. First apply to the commit it is intended to be applied:

    $ git co pu
    $ git am your-patch

2. Re-attempt the merge.  CG stands for "Commit Goal".

    $ CG=$(git rev-parse HEAD)
    $ git reset --hard HEAD^^
    $ git merge pd/bash-4-completion

3. Clear the rerere database and redo the merge, letting it conflict.

    $ git rerere forget contrib/completion/git-completion.bash
    $ git reset --hard
    $ git merge pd/bash-4-completion

4. Take the fixup and conclude the merge; this updates the rerere
   database.

    $ git checkout $CG .
    $ git commit

^ permalink raw reply	[relevance 3%]

* [PATCH] merge: honor prepare-commit-msg hook
@ 2011-02-15  1:07  2% Jay Soffian
  2011-02-15 21:36  0% ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Jay Soffian @ 2011-02-15  1:07 UTC (permalink / raw)
  To: git; +Cc: Jay Soffian, Junio C Hamano

When a merge is stopped due to conflicts or --no-commit, the
subsequent commit calls the prepare-commit-msg hook. However,
it is not called after a clean merge. Fix this inconsistency
by invoking the hook after clean merges as well.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
---
I sent this out previously as an RFC:

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

But never prepared a proper patch. Here it is.

 builtin/merge.c                    |   38 ++++++++++++++++++++++++++++-------
 t/t7505-prepare-commit-msg-hook.sh |   12 +++++++++++
 2 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/builtin/merge.c b/builtin/merge.c
index 42fff38..83389ed 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -795,6 +795,33 @@ static void add_strategies(const char *string, unsigned attr)
 
 }
 
+static void write_merge_msg(void)
+{
+	int fd = open(git_path("MERGE_MSG"), O_WRONLY | O_CREAT, 0666);
+	if (fd < 0)
+		die_errno("Could not open '%s' for writing",
+			  git_path("MERGE_MSG"));
+	if (write_in_full(fd, merge_msg.buf, merge_msg.len) !=
+		merge_msg.len)
+		die_errno("Could not write to '%s'", git_path("MERGE_MSG"));
+	close(fd);
+}
+
+static void read_merge_msg(void)
+{
+	strbuf_reset(&merge_msg);
+	if (strbuf_read_file(&merge_msg, git_path("MERGE_MSG"), 0) < 0)
+		die_errno("Could not read from '%s'", git_path("MERGE_MSG"));
+}
+
+static void run_prepare_commit_msg(void)
+{
+	write_merge_msg();
+	run_hook(get_index_file(), "prepare-commit-msg",
+		 git_path("MERGE_MSG"), "merge", NULL, NULL);
+	read_merge_msg();
+}
+
 static int merge_trivial(void)
 {
 	unsigned char result_tree[20], result_commit[20];
@@ -806,6 +833,7 @@ static int merge_trivial(void)
 	parent->next = xmalloc(sizeof(*parent->next));
 	parent->next->item = remoteheads->item;
 	parent->next->next = NULL;
+	run_prepare_commit_msg();
 	commit_tree(merge_msg.buf, result_tree, parent, result_commit, NULL);
 	finish(result_commit, "In-index merge");
 	drop_save();
@@ -835,6 +863,7 @@ static int finish_automerge(struct commit_list *common,
 	}
 	free_commit_list(remoteheads);
 	strbuf_addch(&merge_msg, '\n');
+	run_prepare_commit_msg();
 	commit_tree(merge_msg.buf, result_tree, parents, result_commit, NULL);
 	strbuf_addf(&buf, "Merge made by %s.", wt_strategy);
 	finish(result_commit, buf.buf);
@@ -1316,14 +1345,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 			die_errno("Could not write to '%s'", git_path("MERGE_HEAD"));
 		close(fd);
 		strbuf_addch(&merge_msg, '\n');
-		fd = open(git_path("MERGE_MSG"), O_WRONLY | O_CREAT, 0666);
-		if (fd < 0)
-			die_errno("Could not open '%s' for writing",
-				  git_path("MERGE_MSG"));
-		if (write_in_full(fd, merge_msg.buf, merge_msg.len) !=
-			merge_msg.len)
-			die_errno("Could not write to '%s'", git_path("MERGE_MSG"));
-		close(fd);
+		write_merge_msg();
 		fd = open(git_path("MERGE_MODE"), O_WRONLY | O_CREAT | O_TRUNC, 0666);
 		if (fd < 0)
 			die_errno("Could not open '%s' for writing",
diff --git a/t/t7505-prepare-commit-msg-hook.sh b/t/t7505-prepare-commit-msg-hook.sh
index ff18962..5b4b694 100755
--- a/t/t7505-prepare-commit-msg-hook.sh
+++ b/t/t7505-prepare-commit-msg-hook.sh
@@ -132,6 +132,18 @@ test_expect_success 'with hook (-c)' '
 
 '
 
+test_expect_success 'with hook (merge)' '
+
+	head=`git rev-parse HEAD` &&
+	git checkout -b other HEAD@{1} &&
+	echo "more" >> file &&
+	git add file &&
+	git commit -m other &&
+	git checkout - &&
+	git merge other &&
+	test "`git log -1 --pretty=format:%s`" = merge
+'
+
 cat > "$HOOK" <<'EOF'
 #!/bin/sh
 exit 1
-- 
1.7.4.5.g9affb

^ permalink raw reply related	[relevance 2%]

* Re: [PATCH] merge: honor prepare-commit-msg hook
  2011-02-15  1:07  2% [PATCH] merge: honor prepare-commit-msg hook Jay Soffian
@ 2011-02-15 21:36  0% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2011-02-15 21:36 UTC (permalink / raw)
  To: Jay Soffian; +Cc: git

Jay Soffian <jaysoffian@gmail.com> writes:

> When a merge is stopped due to conflicts or --no-commit, the
> subsequent commit calls the prepare-commit-msg hook. However,
> it is not called after a clean merge. Fix this inconsistency
> by invoking the hook after clean merges as well.
>
> Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
> ---
> I sent this out previously as an RFC:
>
>   http://thread.gmane.org/gmane.comp.version-control.git/151297
>
> But never prepared a proper patch. Here it is.

Looks very sensible.  Thanks.

Will queue.

^ permalink raw reply	[relevance 0%]

* Re: git rebase -p doesn't understand -X
  @ 2011-04-20 23:40  2%   ` Jonathan Nieder
  0 siblings, 0 replies; 200+ results
From: Jonathan Nieder @ 2011-04-20 23:40 UTC (permalink / raw)
  To: Martin von Zweigbergk; +Cc: Marius Storm-Olsen, git, Johannes Schindelin

Hi Martin,

Martin von Zweigbergk wrote:

> Interactive rebase uses cherry-pick internally. Jonathan added support
> for -X to that command not too long ago (in commit 67ac1e1, late last
> year), so it should be pretty straight-forward to add support for what
> you want. Maybe I'll do that in a few weeks when I get back from
> vacation.

That would be excellent.

> A related topic is _when_ to use the strategy (and strategy options).

I agree with your analysis.  In particular:

>     Example:
>
>                X
>                 \
>              A---M---B
>             /
>     ---o---O---P---Q
>
>     When the current HEAD is "B", "git rebase -i -p --onto Q O" will yield
>
>                           X
>                            \
>     ---o---O---P---Q---A'---M'---B'

I have a vague feeling that honoring --strategy and --strategy-option
would be confusing here.  The merge used in cherry-picking A does not
have much to do with the merge used to reincorporate changes from X.

Well, that is my intuition, but most of the examples I can think of
lead to the opposite conclusion!  If I use -Xrenormalize, because P
changed the line-ending style, then I will want the same option when
merging X on top.  Similarly, if I use -Xsubtree=src, because Q moved
all existing files in the source tree under src/, then with luck the
same trick will work when replaying the merge of X.

Luckily there is an exception to prove the intuition ok.  If X was the
first parent of M and I am using -Xours to sloppily favor upstream's
decisions when rebasing my history on top of it, using -Xours to favor
choices from X (which is my own) would be just plain wrong.  (Phew.)
 
>                C---D
>               /     \
>              A---B---M
>             /
>     ---o---O---P---Q
>
> which would yield
>
>                           C'---D'
>                          /      \
>     ---o---O---P---Q---A'---B'---M'

Likewise in this case.

> A more advanced solution would be recreate the merge using rerere.
[...]

Here's a vague and probably wrong idea about another way to re-create
merges.

When cherry-picking a patch (A, say), we run a three-way merge, with
A^ as merge base, A as "their" change, and the new parent for A (= Q)
as "our" change.

Maybe the same trick could work for re-creating merges.  In your first
example, run a three-way merge with M^ (= A) as merge base, M as
"their" change, and the new parent for M (= A') as "our" change.  That
only works in such a straightforward way if only one of M's parents
was rewritten, though.  More generally it could be possible to run a
sequence of three-way merges:

	base=M^1, theirs=M, ours=(M^1)' => call the result "m_1"
	base=M^2, theirs=m_1, ours=(M^2)' => call the result "m_2"
	...

At this point it gets ugly enough that just redoing the merge might be
simpler.

The main problem with rerere is that it can make mistakes.  In the
long run, I wonder if rebase could learn to take into account
something more explicit like Junio's merge-fix mechanism (see
origin/todo:Reintegrate).

Thanks; that was interesting.
Jonathan

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v5] Add default merge options for all branches
  @ 2011-05-05  0:42  2%   ` Junio C Hamano
  2011-05-06 20:36  0%     ` Junio C Hamano
  2011-05-06 21:32  0%     ` Jonathan Nieder
  0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2011-05-05  0:42 UTC (permalink / raw)
  To: Michael Grubb; +Cc: git, Jonathan Nieder

Thanks.

I think we still need to work on this a bit more, but I found an unrelated
and nastier issue before this patch can sanely be applied.

> +test_expect_success 'combine branch.master.mergeoptions with merge.ff' '
> +	git reset --hard c0 &&
> +	git config branch.master.mergeoptions --ff
> +	git config merge.ff false
> +	test_tick &&
> +	git merge c1 &&
> +	git config --remove-section "branch.master" &&
> +	git config --remove-section "merge" &&
> +	verify_merge file result.1 &&
> +	verify_parents "$c0"
> +'

If you insert an "exit" after this test and inspect the resulting commit,
you will see that it created a merge.

	Side note: I think verify_parents is buggy. It only makes sure
	that the earlier parents of HEAD match the commits given, and does
	not care if there actually are more parents.

In any case, your test exposed an ancient breakage ever since the
per-branch mergeoptions was introduced back when git-merge was a shell
script (aec7b36 (git-merge: add support for branch.<name>.mergeoptions,
2007-09-24).

I am not going to fix verify_parents tonight, as I have other git things
to do.

-- >8 --
Subject: [PATCH] merge: fix branch.<name>.mergeoptions

The parsing of the additional command line parameters supplied to
the branch.<name>.mergeoptions configuration variable was implemented
at the wrong stage.  If any merge-related variable came after we read
branch.<name>.mergeoptions, the earlier value was overwritten.

We should first read all the merge.* configuration, override them by
reading from branch.<name>.mergeoptions and then finally read from
the command line.

This patch should fix it, even though I now strongly suspect that
branch.<name>.mergeoptions that gives a single command line that
needs to be parsed was likely to be an ill-conceived idea to begin
with.  Sigh...

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin-merge.c  |   39 +++++++++++++++++++++++++--------------
 t/t7600-merge.sh |   32 ++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+), 14 deletions(-)

diff --git a/builtin-merge.c b/builtin-merge.c
index 3aaec7b..01389a3 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c
@@ -54,6 +54,7 @@ static size_t use_strategies_nr, use_strategies_alloc;
 static const char **xopts;
 static size_t xopts_nr, xopts_alloc;
 static const char *branch;
+static char *branch_mergeoptions;
 static int verbosity;
 static int allow_rerere_auto;
 
@@ -474,25 +475,33 @@ cleanup:
 	strbuf_release(&bname);
 }
 
+static void parse_branch_merge_options(char *bmo)
+{
+	const char **argv;
+	int argc;
+	char *buf;
+
+	if (!bmo)
+		return;
+	argc = split_cmdline(bmo, &argv);
+	if (argc < 0)
+		die("Bad branch.%s.mergeoptions string", branch);
+	argv = xrealloc(argv, sizeof(*argv) * (argc + 2));
+	memmove(argv + 1, argv, sizeof(*argv) * (argc + 1));
+	argc++;
+	parse_options(argc, argv, NULL, builtin_merge_options,
+		      builtin_merge_usage, 0);
+	free(buf);
+}
+
 static int git_merge_config(const char *k, const char *v, void *cb)
 {
 	if (branch && !prefixcmp(k, "branch.") &&
 		!prefixcmp(k + 7, branch) &&
 		!strcmp(k + 7 + strlen(branch), ".mergeoptions")) {
-		const char **argv;
-		int argc;
-		char *buf;
-
-		buf = xstrdup(v);
-		argc = split_cmdline(buf, &argv);
-		if (argc < 0)
-			die("Bad branch.%s.mergeoptions string", branch);
-		argv = xrealloc(argv, sizeof(*argv) * (argc + 2));
-		memmove(argv + 1, argv, sizeof(*argv) * (argc + 1));
-		argc++;
-		parse_options(argc, argv, NULL, builtin_merge_options,
-			      builtin_merge_usage, 0);
-		free(buf);
+		free(branch_mergeoptions);
+		branch_mergeoptions = xstrdup(v);
+		return 0;
 	}
 
 	if (!strcmp(k, "merge.diffstat") || !strcmp(k, "merge.stat"))
@@ -918,6 +927,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 	if (diff_use_color_default == -1)
 		diff_use_color_default = git_use_color_default;
 
+	if (branch_mergeoptions)
+		parse_branch_merge_options(branch_mergeoptions);
 	argc = parse_options(argc, argv, prefix, builtin_merge_options,
 			builtin_merge_usage, 0);
 	if (verbosity < 0)
diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh
index 57f6d2b..56c653d 100755
--- a/t/t7600-merge.sh
+++ b/t/t7600-merge.sh
@@ -372,6 +372,38 @@ test_expect_success 'merge c1 with c2 (no-commit in config)' '
 
 test_debug 'gitk --all'
 
+test_expect_success 'merge c1 with c2 (log in config)' '
+	git config branch.master.mergeoptions "" &&
+	git reset --hard c1 &&
+	git merge --log c2 &&
+	git show -s --pretty=tformat:%s%n%b >expect &&
+
+	git config branch.master.mergeoptions --log &&
+	git reset --hard c1 &&
+	git merge c2 &&
+	git show -s --pretty=tformat:%s%n%b >actual &&
+
+	test_cmp expect actual
+'
+
+test_expect_success 'merge c1 with c2 (log in config gets overridden)' '
+	(
+		git config --remove-section branch.master
+		git config --remove-section merge
+	)
+	git reset --hard c1 &&
+	git merge c2 &&
+	git show -s --pretty=tformat:%s%n%b >expect &&
+
+	git config branch.master.mergeoptions "--no-log" &&
+	git config merge.log true &&
+	git reset --hard c1 &&
+	git merge c2 &&
+	git show -s --pretty=tformat:%s%n%b >actual &&
+
+	test_cmp expect actual
+'
+
 test_expect_success 'merge c1 with c2 (squash in config)' '
 	git reset --hard c1 &&
 	git config branch.master.mergeoptions "--squash" &&
-- 
1.7.5.284.g84c3a8

        

^ permalink raw reply related	[relevance 2%]

* What's cooking in git.git (May 2011, #02; Wed, 4)
@ 2011-05-05  2:37  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2011-05-05  2:37 UTC (permalink / raw)
  To: git

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

The main part of this cycle is expected to run thru May, aiming for a
feature freeze in early June.

We are in the middle of week #2 of this cycle.

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

* jc/dotdot-is-parent-directory (2011-05-02) 1 commit
 - specifying ranges: we did not mean to make ".." an empty set

Updated documentation.

* mg/diff-stat-count (2011-05-03) 2 commits
 - diff-options.txt: describe --stat-{width,name-width,count}
 - diff: introduce --stat-count to limit the stat lines

There was a miscounting spotted.  Need another round.

* mk/grep-pcre (2011-05-03) 3 commits
 - git-grep: Learn PCRE
 - Documentation: Add --line-number to git-grep synopsis
 - [Missing sign-off and justification] grep: Put calls to fixmatch() and regmatch() into patmatch()

There was a re-roll but I haven't picked it up yet.

* vh/config-interactive-singlekey-doc (2011-05-02) 1 commit
 - config.txt: 'interactive.singlekey; is used by...

Will merge to 'next' but I recall we discussed the need for more cross
references and description of the configuration variable in Patch mode
documentation.

* jc/maint-branch-mergeoptions (2011-05-04) 1 commit
 - merge: fix branch.<name>.mergeoptions

Fix branch.<name>.mergeoptions that does not override merge.<option>

* jc/require-work-tree-exists (2011-05-04) 1 commit
 - require-work-tree wants more than what its name says

Make "git pull" run from a random place work as long as GIT_DIR and
GIT_WORK_TREE are set up correctly.  I am not absolutely sure if that
is a sane use case, though.

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

* ab/i18n-fixup (2011-04-14) 24 commits
  (merged to 'next' on 2011-04-25 at 32fef07)
 + i18n: use test_i18n{cmp,grep} in t7600, t7607, t7611 and t7811
 + i18n: use test_i18n{grep,cmp} in t7508
 + i18n: use test_i18ngrep in t7506
 + i18n: use test_i18ngrep and test_i18ncmp in t7502
 + i18n: use test_i18ngrep in t7501
 + i18n: use test_i18ncmp in t7500
 + i18n: use test_i18ngrep in t7201
 + i18n: use test_i18ncmp and test_i18ngrep in t7102 and t7110
 + i18n: use test_i18ncmp and test_i18ngrep in t5541, t6040, t6120, t7004, t7012 and t7060
 + i18n: use test_i18ncmp and test_i18ngrep in t3700, t4001 and t4014
 + i18n: use test_i18ncmp and test_i18ngrep in t3203, t3501 and t3507
 + i18n: use test_i18ngrep in t2020, t2204, t3030, and t3200
 + i18n: use test_i18ngrep in lib-httpd and t2019
 + i18n: do not overuse C_LOCALE_OUTPUT (grep)
 + i18n: use test_i18ncmp in t1200 and t2200
 + i18n: .git file is not a human readable message (t5601)
 + i18n: do not overuse C_LOCALE_OUTPUT
 + i18n: mark init-db messages for translation
 + i18n: mark checkout plural warning for translation
 + i18n: mark checkout --detach messages for translation
 + i18n: mark clone nonexistent repository message for translation
 + i18n: mark merge CHERRY_PICK_HEAD messages for translation
 + i18n: mark merge "upstream" messages for translation
 + i18n: mark merge "Could not read from" message for translation

* ft/gitweb-tar-with-gzip-n (2011-04-26) 1 commit
  (merged to 'next' on 2011-04-26 at 8e59a0e)
 + gitweb: supply '-n' to gzip for identical output

* jh/notes-add-ui (2011-03-30) 1 commit
  (merged to 'next' on 2011-04-25 at 4fb1ac2)
 + Make "git notes add" more user-friendly when there are existing notes

* jk/format-patch-multiline-header (2011-04-14) 1 commit
  (merged to 'next' on 2011-04-26 at 3d5eda3)
 + format-patch: wrap email addresses after long names

* jk/notes-ui-updates (2011-04-14) 8 commits
  (merged to 'next' on 2011-04-25 at 4216d33)
 + contrib/completion: --notes, --no-notes
 + log/pretty-options: Document --[no-]notes and deprecate old notes options
 + revision.c: make --no-notes reset --notes list
 + revision.c: support --notes command-line option
 + notes: refactor display notes default handling
 + notes: refactor display notes extra refs field
 + revision.c: refactor notes ref expansion
 + notes: make expand_notes_ref globally accessible

* jm/mergetool-submodules (2011-04-13) 1 commit
  (merged to 'next' on 2011-04-26 at 40892cf)
 + mergetool: Teach about submodules

* jn/format-patch-doc (2011-04-18) 6 commits
  (merged to 'next' on 2011-04-26 at 3f64325)
 + Documentation/format-patch: suggest Toggle Word Wrap add-on for Thunderbird
 + Documentation: publicize hints for sending patches with GMail
 + Documentation: publicize KMail hints for sending patches inline
 + Documentation: hints for sending patches inline with Thunderbird
 + Documentation: explain how to check for patch corruption
 + Merge v1.7.5-rc2 into jn/format-patch-doc
 (this branch uses jn/maint-format-patch-doc.)

* jn/maint-format-patch-doc (2011-04-14) 1 commit
  (merged to 'next' on 2011-04-26 at 400cf42)
 + Documentation: describe the format of messages with inline patches
 (this branch is used by jn/format-patch-doc.)

* mg/rev-list-count-cherry (2011-04-26) 1 commit
  (merged to 'next' on 2011-04-26 at dc3e80a)
 + rev-list --count: separate count for --cherry-mark

* ml/test-readme (2011-04-26) 1 commit
  (merged to 'next' on 2011-04-26 at d1efe84)
 + t/README: unify documentation of test function args

* mz/maint-rename-unmerged (2011-03-23) 1 commit
  (merged to 'next' on 2011-04-25 at 038a8c3)
 + diffcore-rename: don't consider unmerged path as source

* nd/maint-setup (2011-03-26) 2 commits
  (merged to 'next' on 2011-04-25 at fd45c63)
 + Kill off get_relative_cwd()
 + setup: return correct prefix if worktree is '/'

* nm/submodule-update-force (2011-04-01) 1 commit
  (merged to 'next' on 2011-04-25 at 270fffc)
 + submodule: Add --force option for git submodule update

* ss/cherry-pick-x-doc (2011-04-15) 1 commit
  (merged to 'next' on 2011-04-26 at c9a6f83)
 + doc: Clarify that "cherry-pick -x" does not use "git notes"

* ss/doc-svn (2011-04-19) 1 commit
  (merged to 'next' on 2011-04-26 at a723b91)
 + remove noise and inaccuracies from git-svn docs

* vr/merge-base-doc (2011-04-15) 2 commits
  (merged to 'next' on 2011-04-26 at e906ba3)
 + Restructure documentation for git-merge-base.
 + Documentation: update to git-merge-base --octopus

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

* jn/gitweb-js (2011-04-28) 13 commits
 - gitweb: Make JavaScript ability to adjust timezones configurable
 - gitweb.js: Add UI for selecting common timezone to display dates
 - gitweb: JavaScript ability to adjust time based on timezone
 - gitweb: Unify the way long timestamp is displayed
 - gitweb: Refactor generating of long dates into format_timestamp_html
 - gitweb.js: Provide getElementsByClassName method (if it not exists)
 - gitweb.js: Introduce code to handle cookies from JavaScript
 - gitweb.js: Extract and improve datetime handling
 - gitweb.js: Provide default values for padding in padLeftStr and padLeft
 - gitweb.js: Update and improve comments in JavaScript files
 - gitweb: Split JavaScript for maintability, combining on build
 - Remove gitweb/gitweb.cgi and other legacy targets from main Makefile
 - git-instaweb: Simplify build dependency on gitweb

Rerolled.  Waiting for comments.

* jn/ctags (2011-04-29) 6 commits
 - gitweb: Optional grouping of projects by category
 - gitweb: Modularized git_get_project_description to be more generic
 - gitweb: Split git_project_list_body in two functions
 - gitweb: Mark matched 'ctag' / contents tag (?by_tag=foo)
 - gitweb: Change the way "content tags" ('ctags') are handled
 - gitweb: Restructure projects list generation

Waiting for comments.

* jk/maint-merge-rename-create (2011-03-25) 3 commits
 - merge: turn on rewrite detection
 - merge: handle renames with replacement content
 - t3030: fix accidental success in symlink rename

Peff wanted to reroll this, so this is taken out of "next".

* rr/rerere-clear-libify (2011-04-13) 1 commit
 - rerere: Expose an API corresponding to 'clear' functionality

Jonathan had good comments on moving the garbage collection interface as
well. Perhaps needs a re-roll.

* jc/index-pack (2011-02-25) 5 commits
 - index-pack --verify: read anomalous offsets from v2 idx file
 - write_idx_file: need_large_offset() helper function
 - index-pack: --verify
 - write_idx_file: introduce a struct to hold idx customization options
 - index-pack: group the delta-base array entries also by type

Still a WIP. Need to put histogram output into index-pack --verify to
really kill verify-pack.

* jk/tag-contains (2010-07-05) 4 commits
 - Why is "git tag --contains" so slow?
 - default core.clockskew variable to one day
 - limit "contains" traversals based on commit timestamp
 - tag: speed up --contains calculation

The idea of the bottom one is probably Ok, except that the use of object
flags needs to be rethought, or at least the helper needs to be moved to
builtin/tag.c to make it clear that it should not be used outside the
current usage context.

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

* dm/http-cleanup (2011-05-05) 4 commits
 - t5541-http-push: add test for chunked
 - http-push: refactor curl_easy_setup madness
 - http-push: use const for strings in signatures
 - http: make curl callbacks match contracts from curl header

* im/hashcmp-optim (2011-04-28) 1 commit
  (merged to 'next' on 2011-05-02 at f131195)
 + hashcmp(): inline memcmp() by hand to optimize

* jc/add-delete-default (2011-04-19) 1 commit
 - git add: notice removal of tracked paths by default
 (this branch uses jc/fix-add-u-unmerged, jc/fix-add-u-unmerged and jc/fix-diff-files-unmerged.)

* kk/maint-prefix-in-config-mak (2011-05-04) 3 commits
 - config.mak.in: allow "configure --sysconfdir=/else/where"
 - Makefile: allow sysconfdir to be used from configure
  (merged to 'next' on 2011-05-02 at c747ba3)
 + Honor $(prefix) set in config.mak* when defining ETC_GIT* and sysconfdir

Fixed up after hitting 'next'.

* sg/completion-updates (2011-04-28) 3 commits
  (merged to 'next' on 2011-05-02 at 0fd443a)
 + completion: don't declare 'local words' to make zsh happy
 + completion: remove unnecessary _get_comp_words_by_ref() invocations
 + completion: don't modify the $cur variable in completion functions

Has this one settled?

* jk/merge-one-file-working-tree (2011-04-29) 2 commits
  (merged to 'next' on 2011-05-02 at 308fe21)
 + merge-one-file: fix broken merges with alternate work trees
 + add tests for merge-index / merge-one-file

* js/blame-parsename (2011-04-21) 1 commit
  (merged to 'next' on 2011-04-29 at 5fde945)
 + blame: tolerate bogus e-mail addresses a bit better

Will merge to "master" by the end of week #2.

* js/info-man-path (2011-05-02) 2 commits
  (merged to 'next' on 2011-05-02 at 20a15dd)
 + Documentation: clarify meaning of --html-path, --man-path, and --info-path
 + git: add --info-path and --man-path options

* cj/p4merge (2011-05-01) 1 commit
  (merged to 'next' on 2011-05-02 at 7197ef3)
 + Pass empty file to p4merge where no base is suitable.

* gr/cvsimport-alternative-cvspass-location (2011-05-01) 1 commit
  (merged to 'next' on 2011-05-02 at 5a89e3e)
 + Look for password in both CVS and CVSNT password files.

* jc/maint-add-p-overlapping-hunks (2011-04-06) 4 commits
  (merged to 'next' on 2011-05-02 at e57b66f)
 + "add -p": work-around an old laziness that does not coalesce hunks
 + add--interactive.perl: factor out repeated --recount option
 + t3701: Editing a split hunk in an "add -p" session
 + add -p: 'q' should really quit

* ld/p4-preserve-user-names (2011-04-21) 1 commit
  (merged to 'next' on 2011-04-29 at 25116c8)
 + git-p4: add option to preserve user names

Will merge to "master" by the end of week #2.

* jh/dirstat-lines (2011-04-29) 8 commits
  (merged to 'next' on 2011-04-29 at a302674)
 + Mark dirstat error messages for translation
 + Improve error handling when parsing dirstat parameters
 + New --dirstat=lines mode, doing dirstat analysis based on diffstat
 + Allow specifying --dirstat cut-off percentage as a floating point number
 + Add config variable for specifying default --dirstat behavior
 + Refactor --dirstat parsing; deprecate --cumulative and --dirstat-by-file
 + Make --dirstat=0 output directories that contribute < 0.1% of changes
 + Add several testcases for --dirstat and friends

* aw/maint-rebase-i-p-no-ff (2011-04-28) 1 commit
  (merged to 'next' on 2011-05-02 at 9a159a5)
 + git-rebase--interactive.sh: preserve-merges fails on merges created with no-ff

* mg/alias-expose-prefix (2011-04-27) 2 commits
  (merged to 'next' on 2011-05-02 at 1c01d3a)
 + handle_alias: provide GIT_PREFIX to !alias
 + t1020: test !alias in subdirectory

* mg/diff-uiconfig-doc (2011-04-27) 1 commit
  (merged to 'next' on 2011-05-02 at 579a515)
 + config.txt,diff-options.txt: porcelain vs. plumbing for color.diff

* jk/format-patch-quote-special-in-from (2011-04-08) 1 commit
  (merged to 'next' on 2011-04-28 at 587f2d4)
 + pretty: quote rfc822 specials in email addresses

Will merge to "master" by the end of week #2.

* jn/setup-revisions-glob-and-friends-passthru (2011-04-21) 2 commits
  (merged to 'next' on 2011-04-28 at 6006cc4)
 + revisions: allow --glob and friends in parse_options-enabled commands
 + revisions: split out handle_revision_pseudo_opt function

* cn/log-parse-opt (2011-04-14) 1 commit
  (merged to 'next' on 2011-04-28 at 02f2eac)
 + log: convert to parse-options

* jc/fix-add-u-unmerged (2011-04-20) 1 commit
  (merged to 'next' on 2011-04-28 at f7ed821)
 + Fix "add -u" that sometimes fails to resolve unmerged paths
 (this branch is used by jc/add-delete-default and jc/add-delete-default; uses jc/fix-diff-files-unmerged.)

* jc/fix-diff-files-unmerged (2011-04-22) 4 commits
  (merged to 'next' on 2011-04-28 at f1f837c)
 + diff-files: show unmerged entries correctly
 + diff: remove often unused parameters from diff_unmerge()
 + diff.c: return filepair from diff_unmerge()
 + test: use $_z40 from test-lib
 (this branch is used by jc/add-delete-default and jc/fix-add-u-unmerged.)

* js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix (2011-04-25) 1 commit
 + send-pack: avoid deadlock when pack-object dies early
 (this branch is used by js/maint-send-pack-stateless-rpc-deadlock-fix.)

Will merge to "master" by the end of week #2.

* js/maint-send-pack-stateless-rpc-deadlock-fix (2011-04-25) 1 commit
  (merged to 'next' on 2011-04-28 at db7e04a)
 + Merge branch 'js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix' into js/maint-send-pack-stateless-rpc-deadlock-fix
 (this branch uses js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix.)

Will merge to "master" by the end of week #2.

* jn/run-command-error-failure (2011-04-20) 2 commits
  (merged to 'next' on 2011-04-26 at a1f171e)
 + run-command: handle short writes and EINTR in die_child
 + tests: check error message from run_command

Will merge to "master" by the end of week #2.

* nd/struct-pathspec (2011-04-05) 5 commits
  (merged to 'next' on 2011-04-25 at 65dbe80)
 + pathspec: rename per-item field has_wildcard to use_wildcard
 + Improve tree_entry_interesting() handling code
 + Convert read_tree{,_recursive} to support struct pathspec
 + Reimplement read_tree_recursive() using tree_entry_interesting()
 + Merge branch 'en/object-list-with-pathspec' into 'nd/struct-pathspec'

Will merge to "master" by the end of week #2.

* jc/magic-pathspec (2011-04-06) 3 commits
  (merged to 'next' on 2011-04-25 at 788cd46)
 + magic pathspec: add ":(icase)path" to match case insensitively
 + magic pathspec: futureproof shorthand form
 + magic pathspec: add tentative ":/path/from/top/level" pathspec support

Thanks to Peff, Duy, and Michael for helping to whip the syntax and the
basic semantics into a not-so-horrible shape.

Will merge to "master" by the end of week #2.

----------------------------------------------------------------
[Discarded]

* mg/branch-wildcard-config (2011-05-02) 1 commit
 - Add default merge options for all branches

It seems a separate merge.ff configuration would be more favourable
than this approach.

^ permalink raw reply	[relevance 3%]

* Re: [PATCH v5] Add default merge options for all branches
  2011-05-05  0:42  2%   ` Junio C Hamano
@ 2011-05-06 20:36  0%     ` Junio C Hamano
  2011-05-06 21:32  0%     ` Jonathan Nieder
  1 sibling, 0 replies; 200+ results
From: Junio C Hamano @ 2011-05-06 20:36 UTC (permalink / raw)
  To: Michael Grubb; +Cc: git, Jonathan Nieder

Junio C Hamano <gitster@pobox.com> writes:

> In any case, your test exposed an ancient breakage ever since the
> per-branch mergeoptions was introduced back when git-merge was a shell
> script (aec7b36 (git-merge: add support for branch.<name>.mergeoptions,
> 2007-09-24).
>
> -- >8 --
> Subject: [PATCH] merge: fix branch.<name>.mergeoptions
> ...

And then on top of that fix, we can do this.

I have a seemingly unrelated change to the existing test but that was
because it only made sure that the --ff-only option made the command fail
when it should fail, without making sure that it does not interfere when
it should succeed.  A typical symptom of "showing off shiny new toy
because I am too excited" developer disease, I would guess.  I didn't want
to forget to fix it.

-- >8 --
Subject: [PATCH] merge: introduce merge.ff configuration variable

This variable gives the default setting for --ff, --no-ff or --ff-only
options of "git merge" command.

Helped-by: Michael Grubb <devel@dailyvoid.com>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 * If we were doing the command line option of "merge" from scratch today,
   we probably would have done --ff, --ff=no, and --ff=only, instead of a
   separate --ff-only.  We could still add the latter two as a consistency
   synonyms without deprecating anything, though.

 Documentation/merge-config.txt |   10 +++++++++
 builtin/merge.c                |    9 ++++++++
 t/t7600-merge.sh               |   43 ++++++++++++++++++++++++++++++++++++++-
 3 files changed, 60 insertions(+), 2 deletions(-)

diff --git a/Documentation/merge-config.txt b/Documentation/merge-config.txt
index 8920258..861bd6f 100644
--- a/Documentation/merge-config.txt
+++ b/Documentation/merge-config.txt
@@ -16,6 +16,16 @@ merge.defaultToUpstream::
 	to their corresponding remote tracking branches, and the tips of
 	these tracking branches are merged.
 
+merge.ff::
+	By default, git does not create an extra merge commit when merging
+	a commit that is a descendant of the current commit. Instead, the
+	tip of the current branch is fast-forwarded. When set to `false`,
+	this variable tells git to create an extra merge commit in such
+	a case (equivalent to giving the `--no-ff` option from the command
+	line). When set to `only`, only such fast-forward merges are
+	allowed (equivalent to giving the `--ff-only` option from the
+	command line).
+
 merge.log::
 	In addition to branch names, populate the log message with at
 	most the specified number of one-line descriptions from the
diff --git a/builtin/merge.c b/builtin/merge.c
index 4fa789a..1c3ff13 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -550,6 +550,15 @@ static int git_merge_config(const char *k, const char *v, void *cb)
 		if (is_bool && shortlog_len)
 			shortlog_len = DEFAULT_MERGE_LOG_LEN;
 		return 0;
+	} else if (!strcmp(k, "merge.ff")) {
+		int boolval = git_config_maybe_bool(k, v);
+		if (0 <= boolval) {
+			allow_fast_forward = boolval;
+		} else if (v && !strcmp(v, "only")) {
+			allow_fast_forward = 1;
+			fast_forward_only = 1;
+		} /* do not barf on values from future versions of git */
+		return 0;
 	} else if (!strcmp(k, "merge.defaulttoupstream")) {
 		default_to_upstream = git_config_bool(k, v);
 		return 0;
diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh
index 5463f87..4f1d4eb 100755
--- a/t/t7600-merge.sh
+++ b/t/t7600-merge.sh
@@ -225,12 +225,28 @@ test_expect_success 'merge c1 with c2 and c3' '
 
 test_debug 'git log --graph --decorate --oneline --all'
 
-test_expect_success 'failing merges with --ff-only' '
+test_expect_success 'merges with --ff-only' '
 	git reset --hard c1 &&
 	test_tick &&
 	test_must_fail git merge --ff-only c2 &&
 	test_must_fail git merge --ff-only c3 &&
-	test_must_fail git merge --ff-only c2 c3
+	test_must_fail git merge --ff-only c2 c3 &&
+	git reset --hard c0 &&
+	git merge c3 &&
+	verify_head $c3
+'
+
+test_expect_success 'merges with merge.ff=only' '
+	git reset --hard c1 &&
+	test_tick &&
+	test_when_finished "git config --unset merge.ff" &&
+	git config merge.ff only &&
+	test_must_fail git merge c2 &&
+	test_must_fail git merge c3 &&
+	test_must_fail git merge c2 c3 &&
+	git reset --hard c0 &&
+	git merge c3 &&
+	verify_head $c3
 '
 
 test_expect_success 'merge c0 with c1 (no-commit)' '
@@ -447,6 +463,29 @@ test_expect_success 'merge c0 with c1 (no-ff)' '
 
 test_debug 'git log --graph --decorate --oneline --all'
 
+test_expect_success 'merge c0 with c1 (merge.ff=false)' '
+	git reset --hard c0 &&
+	git config merge.ff false &&
+	test_tick &&
+	git merge c1 &&
+	git config --remove-section merge &&
+	verify_merge file result.1 &&
+	verify_parents $c0 $c1
+'
+test_debug 'git log --graph --decorate --oneline --all'
+
+test_expect_success 'combine branch.master.mergeoptions with merge.ff' '
+	git reset --hard c0 &&
+	git config branch.master.mergeoptions --ff
+	git config merge.ff false
+	test_tick &&
+	git merge c1 &&
+	git config --remove-section "branch.master" &&
+	git config --remove-section "merge" &&
+	verify_merge file result.1 &&
+	verify_parents "$c0"
+'
+
 test_expect_success 'combining --squash and --no-ff is refused' '
 	test_must_fail git merge --squash --no-ff c1 &&
 	test_must_fail git merge --no-ff --squash c1
-- 
1.7.5.1.268.gce5bd

^ permalink raw reply related	[relevance 0%]

* Re: [PATCH v5] Add default merge options for all branches
  2011-05-05  0:42  2%   ` Junio C Hamano
  2011-05-06 20:36  0%     ` Junio C Hamano
@ 2011-05-06 21:32  0%     ` Jonathan Nieder
  1 sibling, 0 replies; 200+ results
From: Jonathan Nieder @ 2011-05-06 21:32 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Michael Grubb, git

Junio C Hamano wrote:

> Subject: [PATCH] merge: fix branch.<name>.mergeoptions

To be more precise, if I understand correctly:

	merge: allow branch.<name>.mergeoptions to override merge.*

> This patch should fix it, even though I now strongly suspect that
> branch.<name>.mergeoptions that gives a single command line that
> needs to be parsed was likely to be an ill-conceived idea to begin
> with.  Sigh...

Yes, and introducing branch.<name>.ff and branch.<name>.log might
still be a good idea.

The patch looks mostly good.  I see only one actual problem, marked
with [*] below.

> --- a/builtin-merge.c
> +++ b/builtin-merge.c
> @@ -54,6 +54,7 @@ static size_t use_strategies_nr, use_strategies_alloc;
>  static const char **xopts;
>  static size_t xopts_nr, xopts_alloc;
>  static const char *branch;
> +static char *branch_mergeoptions;
>  static int verbosity;
>  static int allow_rerere_auto;
>  
> @@ -474,25 +475,33 @@ cleanup:
>  	strbuf_release(&bname);
>  }
>  
> +static void parse_branch_merge_options(char *bmo)
> +{
> +	const char **argv;
> +	int argc;
> +	char *buf;
> +
> +	if (!bmo)
> +		return;
> +	argc = split_cmdline(bmo, &argv);
> +	if (argc < 0)
> +		die("Bad branch.%s.mergeoptions string", branch);
> +	argv = xrealloc(argv, sizeof(*argv) * (argc + 2));
> +	memmove(argv + 1, argv, sizeof(*argv) * (argc + 1));

This is not new code, but it might make sense to do

	argv[0] = "merge.*.options";

for a saner error message when someone tries

	[branch "master"]
		mergeoptions = --nonsense

> +	argc++;
> +	parse_options(argc, argv, NULL, builtin_merge_options,
> +		      builtin_merge_usage, 0);
> +	free(buf);

[*]
This buf seems to be left over.  (I don't think the intent is to
call free on an uninitialized pointer. ;-))

[...]
> -		free(buf);
> +		free(branch_mergeoptions);
> +		branch_mergeoptions = xstrdup(v);

It is tempting to do

	size_t len;

	len = strlen(v);
	branch_mergeoptions = xrealloc(branch_mergeoptions, len + 1);
	memcpy(branch_mergeoptions, v, len + 1);

but free + xstrdup is simpler and clearer.  Makes sense.

> +test_expect_success 'merge c1 with c2 (log in config gets overridden)' '
> +	(
> +		git config --remove-section branch.master
> +		git config --remove-section merge
> +	)

Since this patch is meant to apply to a very old git, we cannot use
test_might_fail.  Makes sense: it can be fixed up later to use
&&-friendly syntax as part of a series introducing checks to make
sure we don't regress in that.

Thanks and hope that helps,
Jonathan

^ permalink raw reply	[relevance 0%]

* What's cooking in git.git (May 2011, #03; Fri, 6)
@ 2011-05-06 23:22  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2011-05-06 23:22 UTC (permalink / raw)
  To: git

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

The main part of this cycle is expected to run thru May, aiming for a
feature freeze in early June.

We are late in the week #2 of this cycle.

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

* aw/maint-rebase-i-p-no-ff (2011-04-28) 1 commit
  (merged to 'next' on 2011-05-02 at 9a159a5)
 + git-rebase--interactive.sh: preserve-merges fails on merges created with no-ff

* cj/p4merge (2011-05-01) 1 commit
  (merged to 'next' on 2011-05-02 at 7197ef3)
 + Pass empty file to p4merge where no base is suitable.

* gr/cvsimport-alternative-cvspass-location (2011-05-01) 1 commit
  (merged to 'next' on 2011-05-02 at 5a89e3e)
 + Look for password in both CVS and CVSNT password files.

* im/hashcmp-optim (2011-04-28) 1 commit
  (merged to 'next' on 2011-05-02 at f131195)
 + hashcmp(): inline memcmp() by hand to optimize

* jc/fix-diff-files-unmerged (2011-04-22) 4 commits
  (merged to 'next' on 2011-04-28 at f1f837c)
 + diff-files: show unmerged entries correctly
 + diff: remove often unused parameters from diff_unmerge()
 + diff.c: return filepair from diff_unmerge()
 + test: use $_z40 from test-lib
 (this branch is used by jc/add-delete-default and jc/fix-add-u-unmerged.)

* jk/format-patch-quote-special-in-from (2011-04-08) 1 commit
  (merged to 'next' on 2011-04-28 at 587f2d4)
 + pretty: quote rfc822 specials in email addresses

* jk/merge-one-file-working-tree (2011-04-29) 2 commits
  (merged to 'next' on 2011-05-02 at 308fe21)
 + merge-one-file: fix broken merges with alternate work trees
 + add tests for merge-index / merge-one-file

* jn/run-command-error-failure (2011-04-20) 2 commits
  (merged to 'next' on 2011-04-26 at a1f171e)
 + run-command: handle short writes and EINTR in die_child
 + tests: check error message from run_command

* js/blame-parsename (2011-05-05) 2 commits
  (merged to 'next' on 2011-05-05 at 1d5e505)
 + t/annotate-tests: Use echo & cat instead of sed
  (merged to 'next' on 2011-04-29 at 5fde945)
 + blame: tolerate bogus e-mail addresses a bit better

* js/info-man-path (2011-05-02) 2 commits
  (merged to 'next' on 2011-05-02 at 20a15dd)
 + Documentation: clarify meaning of --html-path, --man-path, and --info-path
 + git: add --info-path and --man-path options

* mg/alias-expose-prefix (2011-04-27) 2 commits
  (merged to 'next' on 2011-05-02 at 1c01d3a)
 + handle_alias: provide GIT_PREFIX to !alias
 + t1020: test !alias in subdirectory

* mg/diff-uiconfig-doc (2011-04-27) 1 commit
  (merged to 'next' on 2011-05-02 at 579a515)
 + config.txt,diff-options.txt: porcelain vs. plumbing for color.diff

* nd/struct-pathspec (2011-04-05) 5 commits
  (merged to 'next' on 2011-04-25 at 65dbe80)
 + pathspec: rename per-item field has_wildcard to use_wildcard
 + Improve tree_entry_interesting() handling code
 + Convert read_tree{,_recursive} to support struct pathspec
 + Reimplement read_tree_recursive() using tree_entry_interesting()
 + Merge branch 'en/object-list-with-pathspec' into 'nd/struct-pathspec'

* sg/completion-cleanup (2011-04-28) 2 commits
 + completion: remove unnecessary _get_comp_words_by_ref() invocations
 + completion: don't modify the $cur variable in completion functions
 (this branch is used by sg/completion-updates.)

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

* sr/maint-fast-import-tighten-option-parsing (2011-05-05) 1 commit
 - fast-import: fix option parser for no-arg options

Will merge to "next".

* jc/advice-about-to-lose-commit (2011-05-06) 1 commit
 - checkout: honor advice.detachedHead when reattaching to a branch

A weather-balloon.

* mg/merge-ff-config (2011-05-06) 2 commits
 - merge: introduce merge.ff configuration variable
 - Merge branch 'jc/maint-branch-mergeoptions' into mg/merge-ff-config
 (this branch uses jc/maint-branch-mergeoptions.)

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

* kk/maint-prefix-in-config-mak (2011-05-04) 3 commits
 - config.mak.in: allow "configure --sysconfdir=/else/where"
 - Makefile: allow sysconfdir to be used from configure
  (merged to 'next' on 2011-05-02 at c747ba3)
 + Honor $(prefix) set in config.mak* when defining ETC_GIT* and sysconfdir

J6t is unhappy that sysconfdir is ignored in relocatable case. Although I
personally do not think that is a problem, as it has never been an issue,
let's see what others think.

* jn/gitweb-js (2011-04-28) 13 commits
 - gitweb: Make JavaScript ability to adjust timezones configurable
 - gitweb.js: Add UI for selecting common timezone to display dates
 - gitweb: JavaScript ability to adjust time based on timezone
 - gitweb: Unify the way long timestamp is displayed
 - gitweb: Refactor generating of long dates into format_timestamp_html
 - gitweb.js: Provide getElementsByClassName method (if it not exists)
 - gitweb.js: Introduce code to handle cookies from JavaScript
 - gitweb.js: Extract and improve datetime handling
 - gitweb.js: Provide default values for padding in padLeftStr and padLeft
 - gitweb.js: Update and improve comments in JavaScript files
 - gitweb: Split JavaScript for maintability, combining on build
 - Remove gitweb/gitweb.cgi and other legacy targets from main Makefile
 - git-instaweb: Simplify build dependency on gitweb

Rerolled.  Waiting for comments.

* jn/ctags-more (2011-04-29) 3 commits
 - gitweb: Optional grouping of projects by category
 - gitweb: Modularized git_get_project_description to be more generic
 - gitweb: Split git_project_list_body in two functions
 (this branch uses jn/ctags.)

Waiting for comments.

* jc/dotdot-is-parent-directory (2011-05-02) 1 commit
 - specifying ranges: we did not mean to make ".." an empty set

Updated documentation.

* mg/diff-stat-count (2011-05-03) 2 commits
 - diff-options.txt: describe --stat-{width,name-width,count}
 - diff: introduce --stat-count to limit the stat lines

There was a miscounting spotted.  Need another round.

* jc/require-work-tree-exists (2011-05-04) 1 commit
 - require-work-tree wants more than what its name says

Make "git pull" run from a random place work as long as GIT_DIR and
GIT_WORK_TREE are set up correctly.  I am not absolutely sure if that
is a sane use case, though.

* jc/add-delete-default (2011-04-19) 1 commit
 - git add: notice removal of tracked paths by default
 (this branch uses jc/fix-add-u-unmerged.)

* jk/maint-merge-rename-create (2011-03-25) 3 commits
 - merge: turn on rewrite detection
 - merge: handle renames with replacement content
 - t3030: fix accidental success in symlink rename

Peff wanted to reroll this.

* rr/rerere-clear-libify (2011-04-13) 1 commit
 - rerere: Expose an API corresponding to 'clear' functionality

Jonathan had good comments on moving the garbage collection interface as
well. Perhaps needs a re-roll.

* jc/index-pack (2011-02-25) 5 commits
 - index-pack --verify: read anomalous offsets from v2 idx file
 - write_idx_file: need_large_offset() helper function
 - index-pack: --verify
 - write_idx_file: introduce a struct to hold idx customization options
 - index-pack: group the delta-base array entries also by type

Still a WIP. Need to put histogram output into index-pack --verify to
really kill verify-pack.

* jk/tag-contains (2010-07-05) 4 commits
 - Why is "git tag --contains" so slow?
 - default core.clockskew variable to one day
 - limit "contains" traversals based on commit timestamp
 - tag: speed up --contains calculation

The idea of the bottom one is probably Ok, except that the use of object
flags needs to be rethought, or at least the helper needs to be moved to
builtin/tag.c to make it clear that it should not be used outside the
current usage context.

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

* mk/grep-pcre (2011-05-05) 3 commits
 - grep: Put calls to fixmatch() and regmatch() into patmatch()
 - contrib/completion: --line-number to git grep
 - Documentation: Add --line-number to git-grep synopsis

This is without the real PCRE integration.  The above three looked
reasonable clean-ups regardless.

Will merge to "next".

* vh/config-interactive-singlekey-doc (2011-05-05) 5 commits
  (merged to 'next' on 2011-05-06 at 46b522c)
 + git-reset.txt: better docs for '--patch'
 + git-checkout.txt: better docs for '--patch'
 + git-stash.txt: better docs for '--patch'
 + git-add.txt: document 'interactive.singlekey'
 + config.txt: 'interactive.singlekey; is used by...

* jc/maint-branch-mergeoptions (2011-05-04) 1 commit
 - merge: fix branch.<name>.mergeoptions
 (this branch is used by mg/merge-ff-config.)

Fix branch.<name>.mergeoptions that does not override merge.<option>; this
is needed for the "merge.ff" configuration topic to correctly work.

* jn/ctags (2011-04-29) 3 commits
  (merged to 'next' on 2011-05-06 at 5c574ff)
 + gitweb: Mark matched 'ctag' / contents tag (?by_tag=foo)
 + gitweb: Change the way "content tags" ('ctags') are handled
 + gitweb: Restructure projects list generation
 (this branch is used by jn/ctags-more.)

* dm/http-cleanup (2011-05-05) 4 commits
  (merged to 'next' on 2011-05-06 at 711ff78)
 + t5541-http-push: add test for chunked
 + http-push: refactor curl_easy_setup madness
 + http-push: use const for strings in signatures
 + http: make curl callbacks match contracts from curl header

* sg/completion-updates (2011-04-28) 1 commit
  (merged to 'next' on 2011-05-02 at 0fd443a)
 + completion: don't declare 'local words' to make zsh happy

* jc/maint-add-p-overlapping-hunks (2011-04-06) 4 commits
  (merged to 'next' on 2011-05-02 at e57b66f)
 + "add -p": work-around an old laziness that does not coalesce hunks
 + add--interactive.perl: factor out repeated --recount option
 + t3701: Editing a split hunk in an "add -p" session
 + add -p: 'q' should really quit

Probably needs tests.

* ld/p4-preserve-user-names (2011-04-21) 1 commit
  (merged to 'next' on 2011-04-29 at 25116c8)
 + git-p4: add option to preserve user names

Luke wants to update this, so will not be merging to "master" until the
update settles down.

* jh/dirstat-lines (2011-04-29) 8 commits
  (merged to 'next' on 2011-04-29 at a302674)
 + Mark dirstat error messages for translation
 + Improve error handling when parsing dirstat parameters
 + New --dirstat=lines mode, doing dirstat analysis based on diffstat
 + Allow specifying --dirstat cut-off percentage as a floating point number
 + Add config variable for specifying default --dirstat behavior
 + Refactor --dirstat parsing; deprecate --cumulative and --dirstat-by-file
 + Make --dirstat=0 output directories that contribute < 0.1% of changes
 + Add several testcases for --dirstat and friends

Will merge to "master" by the end of week #3.

* jn/setup-revisions-glob-and-friends-passthru (2011-04-21) 2 commits
  (merged to 'next' on 2011-04-28 at 6006cc4)
 + revisions: allow --glob and friends in parse_options-enabled commands
 + revisions: split out handle_revision_pseudo_opt function

Will merge to "master" by the end of week #3.

* cn/log-parse-opt (2011-04-14) 1 commit
  (merged to 'next' on 2011-04-28 at 02f2eac)
 + log: convert to parse-options

Will merge to "master" by the end of week #3.

* jc/fix-add-u-unmerged (2011-04-20) 1 commit
  (merged to 'next' on 2011-04-28 at f7ed821)
 + Fix "add -u" that sometimes fails to resolve unmerged paths
 (this branch is used by jc/add-delete-default.)

Will merge to "master" by the end of week #3.

* js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix (2011-05-05) 2 commits
 + send-pack: unbreak push over stateless rpc
 + send-pack: avoid deadlock when pack-object dies early
 (this branch is used by js/maint-send-pack-stateless-rpc-deadlock-fix.)

Will merge to "master" by the end of week #3.

* js/maint-send-pack-stateless-rpc-deadlock-fix (2011-05-05) 2 commits
  (merged to 'next' on 2011-05-05 at 3f4ffb9)
 + Merge branch 'js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix' into js/maint-send-pack-stateless-rpc-deadlock-fix
  (merged to 'next' on 2011-04-28 at db7e04a)
 + Merge branch 'js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix' into js/maint-send-pack-stateless-rpc-deadlock-fix
 (this branch uses js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix.)

Will merge to "master" by the end of week #3.

* jc/magic-pathspec (2011-04-06) 3 commits
  (merged to 'next' on 2011-04-25 at 788cd46)
 + magic pathspec: add ":(icase)path" to match case insensitively
 + magic pathspec: futureproof shorthand form
 + magic pathspec: add tentative ":/path/from/top/level" pathspec support

Thanks to Peff, Duy, and Michael for helping to whip the syntax and the
basic semantics into a not-so-horrible shape.  Duy wanted to add tests.

Will merge to "master" by the end of week #3.

^ permalink raw reply	[relevance 3%]

* Re: What's cooking in git.git (May 2011, #04; Sun, 8)
  @ 2011-05-09  8:55  2% ` Ciaran
  0 siblings, 0 replies; 200+ results
From: Ciaran @ 2011-05-09  8:55 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

> --------------------------------------------------
> [Stalled]
>
> * kk/maint-prefix-in-config-mak (2011-05-04) 3 commits
>  - config.mak.in: allow "configure --sysconfdir=/else/where"
>  - Makefile: allow sysconfdir to be used from configure
>  (merged to 'next' on 2011-05-02 at c747ba3)
>  + Honor $(prefix) set in config.mak* when defining ETC_GIT* and sysconfdir
>
> J6t is unhappy that sysconfdir is ignored in relocatable case. Although I
> personally do not think that is a problem, as it has never been an issue,
> let's see what others think.
>
> * jn/gitweb-js (2011-04-28) 13 commits
>  - gitweb: Make JavaScript ability to adjust timezones configurable
>  - gitweb.js: Add UI for selecting common timezone to display dates
>  - gitweb: JavaScript ability to adjust time based on timezone
>  - gitweb: Unify the way long timestamp is displayed
>  - gitweb: Refactor generating of long dates into format_timestamp_html
>  - gitweb.js: Provide getElementsByClassName method (if it not exists)
>  - gitweb.js: Introduce code to handle cookies from JavaScript
>  - gitweb.js: Extract and improve datetime handling
>  - gitweb.js: Provide default values for padding in padLeftStr and padLeft
>  - gitweb.js: Update and improve comments in JavaScript files
>  - gitweb: Split JavaScript for maintability, combining on build
>  - Remove gitweb/gitweb.cgi and other legacy targets from main Makefile
>  - git-instaweb: Simplify build dependency on gitweb
>

Sorry if this is dumb, as I'm unsure how Git (the mailing list)
handles regression tracking, but I saw no mention of this thread:
http://marc.info/?l=git&m=130445013906259&w=2

Is this something overlooked or something you're aware of just not
worried about at the minute.   What is the process if a merge to
master causes a regression, do you just git revert  the offending
merge,   fix on the branch, then re-merge?

Many thanks
- cj.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2 0/7] Provide API to invalidate refs cache
  @ 2011-10-11 17:26  1%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2011-10-11 17:26 UTC (permalink / raw)
  To: Michael Haggerty
  Cc: git, Jeff King, Drew Northup, Jakub Narebski, Heiko Voigt,
	Johan Herland, Julian Phillips, Martin Fick, Christian Couder,
	Christian Couder, Thomas Rast

Michael Haggerty <mhagger@alum.mit.edu> writes:

> On 10/11/2011 02:02 AM, Junio C Hamano wrote:
> ...
>> I could rebase your series, but it always is more error prone to have
>> somebody who is not the original author rebase a series than the original
>> author build for the intended base tree from the beginning.
>
> I don't mind rebasing this little series on jp/get-ref-dir-unsorted.
> ...
> Rebasing 78 patches is going to be a morass of clerical work.

I do not think it is "clerical" in the first place.

Realistically, I expect that a 50+ patch series that touch fairly an
important part of the system to take 2 cycles and a half before it hits a
released version, judging from our recent experience with the recursive
merge fix-up series.

When we already have a patch that has been discussed well enough on the
list to fix somebody's real world problem, can we afford to block it and
give an exclusive write lock to part of the codebase for 2 cycles to your
series, or anybody's for that matter?

> Is there any alternative?

I think an alternative is not to hold on to a series before it gets so
large to make you feel adjusting to the needs to other changes in the
codebase is "clerical". Commit often and early while developing the
initial pass, re-read often and throughout the whole process looking for
things you regret you would have done in early in the series that you
didn't (aka "oops, here is a fixup for the thinko in the early patch in
the series), and clean-up early while preparing to publish. Reorder the
parts that you are more confident that they do not need to change to come
early in the series, and unleash these early parts when you reach certain
confidence level.

I think your iterate-refs series was an example of good execution. It made
the codeflow a lot clearer by reducing the special casing of the submodule
parameter. In your grand scheme of things (e.g. read only parts of the ref
namespace as needed) you might consider it a mere side effect, but the
series by itself was a good thing to have.

Sometimes you may feel that a part of your series when taken out of
context would not justify itself like the iterate-refs series did, until
later parts of the series start taking advantage of the change. But that
is what commit log messages are for: e.g. "this change to encapsulate
these global variables into a single structure does not make a difference
in the current codebase, but in a later patch this and that callers will
need additional pieces of information passed aruond in the callchain, and
will add new members to the structure".

> ...  So maybe
> I brought this whole mess down on my own head :-(

No, it is not anybody's fault in particular. That's life and open source.

^ permalink raw reply	[relevance 1%]

* Re: git workflow - merging upwards
  @ 2012-08-16 20:43  3% ` Junio C Hamano
  2012-08-17  8:14  0%   ` Patrick Sabin
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2012-08-16 20:43 UTC (permalink / raw)
  To: Patrick Sabin; +Cc: git

Patrick Sabin <patrick.just4fun@gmail.com> writes:

> I read through gitworkflows and want to use the Merge Upwards rule in
> my projects:
>
> "Always commit your fixes to the oldest supported branch that require
> them. Then (periodically) merge the integration branches upwards into
> each other."
>
> This looks great but I have some trouble in the case if I want to have
> a change in an older branch and don't want to propagate the change to
> the newer branches. Let's say I have a v1.1 and a v1.2 and now a have
> a bug fix/workaround which only affects version v1.1 but not v1.2. If
> I commit to v1.1 then the periodical merge would merge the change to
> v1.2 which is what I don't want.
>
> Any ideas/workarounds for that problem?

The document may describe the "upwards" in a bit too simplified way
for readability.  If you have two fixes to 1.1, one applicable only
to 1.1 and the other applicable to both, you would fork them from
tip of maint-1.1, like so:

    git checkout -b fix-1.1-only maint-1.1; do your work and commit
    git checkout -b fix-1.1-onwards maint-1.1; do your work and commit

and when they are proven to be good, you would merge both of them to
maint-1.1 branch:

    git checkout maint-1.1
    git merge fix-1.1-only
    git merge fix-1.1-onwards

But merging the resulting maint-1.1 into maint-1.2 will pull the
history and the change of fix-1.1-only that you do not want to have
in maint-1.2.  You want the history so that later merge will not
pull it to maint-1.2, but you do not want the change.

The first thing to think about is if fix-1.1-only is really a "fix
that only should go to maint-1.1".

If the change is only for 1.1.x release (e.g. update version number
from 1.1.4 to 1.1.5), you may not even want to have such a change
directly on the maint-1.1 branch in the first place.  You would
rather want to have release-1.1 branch that is forked from maint-1.1
branch, that contains the whole of maint-1.1 branch, and also
contains the "update version number from 1.1.x to 1.1.y" changes
that are not in the maint-1.1 branch [*1*].

That arrangement may be sufficient to allow you merge maint-1.1 to
maint-1.2 sanely.

Otherwise, you would fork another branch after merging fix-1.1-*
branches to maint-1.1 to merge it upwards.  After these two merges
illustrated above, while still on maint-1.1, you would do:

    git checkout -B merge-1.1-to-1.2 maint-1.1
    git revert -m 1 maint-1.1~1 ;# revert the fix-1.1-only merge

which would result in a state as if you merged fix-1.1-onwards but
not fix-1.1-only to the original maint-1.1 branch.  But the history
of this branch contains both fix-1.1-only and fix-1.1-onwards.

And merge that result to maint-1.2, i.e.

    git checkout maint-1.2
    git merge merge-1.1-to-1.2
    git branch -d merge-1.1-to-1.2

That way, future merges from maint-1.1 to maint-1.2 will not drag
the change of fix-1.1-only.


[Footnote]

*1* This principle applies not just to "release numbers". If you
want both maint-1.1 and maint-1.2 as generic two codebases, tweaks
meant only for customers of maint-1.1 track should *not* go to
maint-1.1, but customer-1.1 branch that forks from maint-1.1. That
way, you can keep the generic branches clean from "this is only for
that branch" kind of changes.

^ permalink raw reply	[relevance 3%]

* Re: git workflow - merging upwards
  2012-08-16 20:43  3% ` Junio C Hamano
@ 2012-08-17  8:14  0%   ` Patrick Sabin
  0 siblings, 0 replies; 200+ results
From: Patrick Sabin @ 2012-08-17  8:14 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Thanks, for the great answer.

What I am still concerned about is that in my project I plan to make bigger
structural changes (let's say in 1.2) while still developing in the
older branch
(let's say 1.1 with the old structure. I expect that there will be many changes
which I think that they can't be easily merged from 1.1 to 1.2.

Do you think it is better to have a heavily used 1.1.1 branch which
contains all
the changes for 1.1.* only, use many revert commits, or should I avoid merging
from 1.1 to 1.2 and go for cherry-picking instead?

On Thu, Aug 16, 2012 at 10:43 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Patrick Sabin <patrick.just4fun@gmail.com> writes:
>
>> I read through gitworkflows and want to use the Merge Upwards rule in
>> my projects:
>>
>> "Always commit your fixes to the oldest supported branch that require
>> them. Then (periodically) merge the integration branches upwards into
>> each other."
>>
>> This looks great but I have some trouble in the case if I want to have
>> a change in an older branch and don't want to propagate the change to
>> the newer branches. Let's say I have a v1.1 and a v1.2 and now a have
>> a bug fix/workaround which only affects version v1.1 but not v1.2. If
>> I commit to v1.1 then the periodical merge would merge the change to
>> v1.2 which is what I don't want.
>>
>> Any ideas/workarounds for that problem?
>
> The document may describe the "upwards" in a bit too simplified way
> for readability.  If you have two fixes to 1.1, one applicable only
> to 1.1 and the other applicable to both, you would fork them from
> tip of maint-1.1, like so:
>
>     git checkout -b fix-1.1-only maint-1.1; do your work and commit
>     git checkout -b fix-1.1-onwards maint-1.1; do your work and commit
>
> and when they are proven to be good, you would merge both of them to
> maint-1.1 branch:
>
>     git checkout maint-1.1
>     git merge fix-1.1-only
>     git merge fix-1.1-onwards
>
> But merging the resulting maint-1.1 into maint-1.2 will pull the
> history and the change of fix-1.1-only that you do not want to have
> in maint-1.2.  You want the history so that later merge will not
> pull it to maint-1.2, but you do not want the change.
>
> The first thing to think about is if fix-1.1-only is really a "fix
> that only should go to maint-1.1".
>
> If the change is only for 1.1.x release (e.g. update version number
> from 1.1.4 to 1.1.5), you may not even want to have such a change
> directly on the maint-1.1 branch in the first place.  You would
> rather want to have release-1.1 branch that is forked from maint-1.1
> branch, that contains the whole of maint-1.1 branch, and also
> contains the "update version number from 1.1.x to 1.1.y" changes
> that are not in the maint-1.1 branch [*1*].
>
> That arrangement may be sufficient to allow you merge maint-1.1 to
> maint-1.2 sanely.
>
> Otherwise, you would fork another branch after merging fix-1.1-*
> branches to maint-1.1 to merge it upwards.  After these two merges
> illustrated above, while still on maint-1.1, you would do:
>
>     git checkout -B merge-1.1-to-1.2 maint-1.1
>     git revert -m 1 maint-1.1~1 ;# revert the fix-1.1-only merge
>
> which would result in a state as if you merged fix-1.1-onwards but
> not fix-1.1-only to the original maint-1.1 branch.  But the history
> of this branch contains both fix-1.1-only and fix-1.1-onwards.
>
> And merge that result to maint-1.2, i.e.
>
>     git checkout maint-1.2
>     git merge merge-1.1-to-1.2
>     git branch -d merge-1.1-to-1.2
>
> That way, future merges from maint-1.1 to maint-1.2 will not drag
> the change of fix-1.1-only.
>
>
> [Footnote]
>
> *1* This principle applies not just to "release numbers". If you
> want both maint-1.1 and maint-1.2 as generic two codebases, tweaks
> meant only for customers of maint-1.1 track should *not* go to
> maint-1.1, but customer-1.1 branch that forks from maint-1.1. That
> way, you can keep the generic branches clean from "this is only for
> that branch" kind of changes.

^ permalink raw reply	[relevance 0%]

* Re: What's cooking in git.git (Nov 2012, #03; Tue, 13)
  @ 2012-11-13 20:01  2% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2012-11-13 20:01 UTC (permalink / raw)
  To: Jeff King; +Cc: git

Jeff King <peff@peff.net> writes:

> This is my final "what's cooking" as interim maintainer. I didn't
> graduate anything to master, but I updated my plans for each topic to
> give Junio an idea of where I was.

After exploding the first-parent history between your master..pu
into component topics and recreating one new merge-fix for
nd/wildmatch topic, I think I now know how to rebuild your
integration branches.

I still haven't caught up with the past discussions (and still am
slightly jetlagged), but I think I can take it over from here with
help from contributors.

Thanks.

^ permalink raw reply	[relevance 2%]

* [PATCH] oneway_merge(): only lstat() when told to update worktree
@ 2012-12-20 17:37  1% Martin von Zweigbergk
  2012-12-20 20:02  0% ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Martin von Zweigbergk @ 2012-12-20 17:37 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Martin von Zweigbergk

Although the subject line of 613f027 (read-tree -u one-way merge fix
to check out locally modified paths., 2006-05-15) mentions "read-tree
-u", it did not seem to check whether -u was in effect. Not checking
whether -u is in effect makes e.g. "read-tree --reset" lstat() the
worktree, even though the worktree stat should not matter for that
operation.

This speeds up e.g. "git reset" a little on the linux-2.6 repo (best
of five, warm cache):

        Before      After
real    0m0.288s    0m0.233s
user    0m0.190s    0m0.150s
sys     0m0.090s    0m0.080s
---

I am very unfamiliar with this part of git, so my attempt at a
motivation may be totally off.

I have another twenty-or-so patches to reset.c coming up that take the
timings down to around 90 ms, but this patch was quite unrelated to
that. Those other patches actually make this patch pointless for "git
reset" (it takes another path), but I hope this is still a good change
for other operations that use oneway_merge.

 unpack-trees.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/unpack-trees.c b/unpack-trees.c
index 6d96366..61acc5e 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -1834,7 +1834,7 @@ int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o)
 
 	if (old && same(old, a)) {
 		int update = 0;
-		if (o->reset && !ce_uptodate(old) && !ce_skip_worktree(old)) {
+		if (o->reset && o->update && !ce_uptodate(old) && !ce_skip_worktree(old)) {
 			struct stat st;
 			if (lstat(old->name, &st) ||
 			    ie_match_stat(o->src_index, old, &st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE))
-- 
1.8.0.1.240.ge8a1f5a

^ permalink raw reply related	[relevance 1%]

* Re: [PATCH] oneway_merge(): only lstat() when told to update worktree
  2012-12-20 17:37  1% [PATCH] oneway_merge(): only lstat() when told to update worktree Martin von Zweigbergk
@ 2012-12-20 20:02  0% ` Junio C Hamano
  2012-12-20 21:03  2%   ` [PATCH v2] " Martin von Zweigbergk
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2012-12-20 20:02 UTC (permalink / raw)
  To: Martin von Zweigbergk; +Cc: git

Martin von Zweigbergk <martinvonz@gmail.com> writes:

> Although the subject line of 613f027 (read-tree -u one-way merge fix
> to check out locally modified paths., 2006-05-15) mentions "read-tree
> -u", it did not seem to check whether -u was in effect. Not checking
> whether -u is in effect makes e.g. "read-tree --reset" lstat() the
> worktree, even though the worktree stat should not matter for that
> operation.
>
> This speeds up e.g. "git reset" a little on the linux-2.6 repo (best
> of five, warm cache):
>
>         Before      After
> real    0m0.288s    0m0.233s
> user    0m0.190s    0m0.150s
> sys     0m0.090s    0m0.080s
> ---

Sign-off?

I briefly discussed this with Martin in person and came to the same
conclusion. To me this looks like an obvious performance fix, but an
independent code audit catches our mistakes is of course welcomed.

Thanks.

> I am very unfamiliar with this part of git, so my attempt at a
> motivation may be totally off.
>
> I have another twenty-or-so patches to reset.c coming up that take the
> timings down to around 90 ms, but this patch was quite unrelated to
> that. Those other patches actually make this patch pointless for "git
> reset" (it takes another path), but I hope this is still a good change
> for other operations that use oneway_merge.
>
>  unpack-trees.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/unpack-trees.c b/unpack-trees.c
> index 6d96366..61acc5e 100644
> --- a/unpack-trees.c
> +++ b/unpack-trees.c
> @@ -1834,7 +1834,7 @@ int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o)
>  
>  	if (old && same(old, a)) {
>  		int update = 0;
> -		if (o->reset && !ce_uptodate(old) && !ce_skip_worktree(old)) {
> +		if (o->reset && o->update && !ce_uptodate(old) && !ce_skip_worktree(old)) {
>  			struct stat st;
>  			if (lstat(old->name, &st) ||
>  			    ie_match_stat(o->src_index, old, &st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE))

^ permalink raw reply	[relevance 0%]

* [PATCH v2] oneway_merge(): only lstat() when told to update worktree
  2012-12-20 20:02  0% ` Junio C Hamano
@ 2012-12-20 21:03  2%   ` Martin von Zweigbergk
  0 siblings, 0 replies; 200+ results
From: Martin von Zweigbergk @ 2012-12-20 21:03 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Martin von Zweigbergk

Although the subject line of 613f027 (read-tree -u one-way merge fix
to check out locally modified paths., 2006-05-15) mentions "read-tree
-u", it did not seem to check whether -u was in effect. Not checking
whether -u is in effect makes e.g. "read-tree --reset" lstat() the
worktree, even though the worktree stat should not matter for that
operation.

This speeds up e.g. "git reset" a little on the linux-2.6 repo (best
of five, warm cache):

        Before      After
real    0m0.288s    0m0.233s
user    0m0.190s    0m0.150s
sys     0m0.090s    0m0.080s

Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
---
 unpack-trees.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/unpack-trees.c b/unpack-trees.c
index 6d96366..61acc5e 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -1834,7 +1834,7 @@ int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o)
 
 	if (old && same(old, a)) {
 		int update = 0;
-		if (o->reset && !ce_uptodate(old) && !ce_skip_worktree(old)) {
+		if (o->reset && o->update && !ce_uptodate(old) && !ce_skip_worktree(old)) {
 			struct stat st;
 			if (lstat(old->name, &st) ||
 			    ie_match_stat(o->src_index, old, &st, CE_MATCH_IGNORE_VALID|CE_MATCH_IGNORE_SKIP_WORKTREE))
-- 
1.8.0.1.240.ge8a1f5a

^ permalink raw reply related	[relevance 2%]

* [BUG] two-way read-tree can write null sha1s into index
  @ 2012-12-29 20:51  1%           ` Jeff King
  0 siblings, 0 replies; 200+ results
From: Jeff King @ 2012-12-29 20:51 UTC (permalink / raw)
  To: Jonathan Nieder; +Cc: git, Junio C Hamano

On Sat, Dec 29, 2012 at 06:05:41AM -0500, Jeff King wrote:

>   [clear state from last run]
>   $ rm -rf .git/rebase-apply
>   $ git reset --hard
> 
>   [apply the patch; we get a conflict]
>   $ git am -3sc queue-3.2/alsa-usb-audio-fix-missing-autopm-for-midi-input.patch
> 
>   [now run just the read-tree from "am --abort"]
>   $ git.compile read-tree --reset -u HEAD ORIG_HEAD
>   warning: cache entry has null sha1: sound/usb/midi.c
> 
>   [and now check our index]
>   $ git ls-files -s sound/usb/midi.c
>   100644 0000000000000000000000000000000000000000 0 sound/usb/midi.c
> 
>   [yes, this index is bogus]
>   $ git write-tree
>   error: invalid object 100644 0000000000000000000000000000000000000000 for 'sound/usb/midi.c'
>   fatal: git-write-tree: error building trees
> 
> So I think this check may actually be finding a real bug. I have seen
> these null sha1s in the wild, but I was never able to track down the
> actual cause. Maybe this will give us a clue. Now we just need to work
> backwards and figure out who is putting it in the in-memory index and
> why.

I made some progress on this, but I'd like a sanity check from others
(especially Junio). As far as I can tell, this is a bug in read-tree.

When we call "read-tree --reset -u HEAD ORIG_HEAD", the first thing we
do with the index is call read_cache_unmerged. Originally that would
read the index, leaving aside any unmerged entries. However, as of
d1a43f2 (reset --hard/read-tree --reset -u: remove unmerged new paths,
2008-10-15), it actually creates a new cache entry. This serves as a
placeholder, so that we later know to update the working tree.

However, we later noticed that the sha1 of that unmerged entry was
just copied from some higher stage, leaving you with random content in
the index.  That was fixed by e11d7b5 ("reset --merge": fix unmerged
case, 2009-12-31), which instead puts the null sha1 into the newly
created entry, and sets a CE_CONFLICTED flag. At the same time, it
teaches the unpack-trees machinery to pay attention to this flag, so
that oneway_merge throws away the current value.

However, it did not update the code paths for  twoway_merge, which is
where we end up in the read-tree above. We notice that the HEAD and
ORIG_HEAD versions are the same, and say "oh, we can just reuse the
current version". But that's not true. The current version is bogus.

So I think we need to update twoway_merge to recognize unmerged entries,
which gives us two options:

  1. Reject the merge.

  2. Throw away the current unmerged entry in favor of the "new" entry
     (when old and new are the same, of course; otherwise we would
     reject).

I think (2) is the right thing. It fixes the entry of the bogus sha1
into the index, _and_ it solves the problem that "git am --abort" leaves
the conflicted entry as a modification. It should just go away. But
maybe I am forgetting some other case where read-tree should be more
conservative, and (1) is a safer choice.

Something like this patch:

diff --git a/unpack-trees.c b/unpack-trees.c
index 6d96366..e06e01f 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -1746,14 +1746,19 @@ int twoway_merge(struct cache_entry **src, struct unpack_trees_options *o)
 		newtree = NULL;
 
 	if (current) {
-		if ((!oldtree && !newtree) || /* 4 and 5 */
-		    (!oldtree && newtree &&
-		     same(current, newtree)) || /* 6 and 7 */
-		    (oldtree && newtree &&
-		     same(oldtree, newtree)) || /* 14 and 15 */
-		    (oldtree && newtree &&
-		     !same(oldtree, newtree) && /* 18 and 19 */
-		     same(current, newtree))) {
+		if (current->ce_flags & CE_CONFLICTED) {
+			if (same(oldtree, newtree))
+				return merged_entry(newtree, current, o);
+			return o->gently ? -1 : reject_merge(current, o);
+		}
+		else if ((!oldtree && !newtree) || /* 4 and 5 */
+			 (!oldtree && newtree &&
+			  same(current, newtree)) || /* 6 and 7 */
+			 (oldtree && newtree &&
+			  same(oldtree, newtree)) || /* 14 and 15 */
+			 (oldtree && newtree &&
+			  !same(oldtree, newtree) && /* 18 and 19 */
+			  same(current, newtree))) {
 			return keep_entry(current, o);
 		}
 		else if (oldtree && !newtree && same(current, oldtree)) {

I suspect threeway_merge may need a similar update, but I haven't looked
too carefully yet.

-Peff

^ permalink raw reply related	[relevance 1%]

* Re: [PATCH 1/2] dir.c: Make git-status --ignored more consistent
  @ 2012-12-30 21:36  2%     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2012-12-30 21:36 UTC (permalink / raw)
  To: Antoine Pelisse; +Cc: git, Jeff King, Adam Spiers

Antoine Pelisse <apelisse@gmail.com> writes:

> By the way, that merges without conflicts with Adam's series, but it
> will not compile as he renamed functions that I'm now using
> (path_excluded() -> is_path_excluded() that is).
>
> By the way, Junio, how do you handle this situation as a maintainer ?
> Do you keep a note to manually make the change every time you remerge
> the series together ? That is the kind of use-case you can't handle
> with git-rerere, and I've been trying to find a solution to it.

I'll finish the write-up on jc/doc-maintainer topic not in a very
distant future, but not today.

In the meantime, the hint is in the use of refs/merge-fix/ hierarchy
in the Reintegrate script found on my 'todo' branch (which I have a
separate clone/checkout of in "Meta/" directory in my main working
tree).

^ permalink raw reply	[relevance 2%]

* [PATCH v2] Documentation: update "howto maintain git"
@ 2013-01-03 20:40  6% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2013-01-03 20:40 UTC (permalink / raw)
  To: git

The flow described in the document is still correct, but over time I
have automated various parts of the workflow with tools and their
use was not explained at all.

Update it and outline the use of two key scripts from the 'todo'
branch, "Reintegrate" and "cook".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 * I sent an incomplete preview some time ago; this is an update.
   The old one is at:

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

   Antoine Cc'ed because this is a more detailed answer to his
   question in:

   http://thread.gmane.org/gmane.comp.version-control.git/212127/focus=212333


 Documentation/howto/maintain-git.txt | 314 +++++++++++++++++++++++++----------
 1 file changed, 225 insertions(+), 89 deletions(-)

diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index 8823a37..a4ec3cb 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -8,20 +8,20 @@ Abstract: Imagine that git development is racing along as usual, when our friend
 
 The maintainer's git time is spent on three activities.
 
- - Communication (60%)
+ - Communication (45%)
 
    Mailing list discussions on general design, fielding user
    questions, diagnosing bug reports; reviewing, commenting on,
    suggesting alternatives to, and rejecting patches.
 
- - Integration (30%)
+ - Integration (50%)
 
    Applying new patches from the contributors while spotting and
    correcting minor mistakes, shuffling the integration and
    testing branches, pushing the results out, cutting the
    releases, and making announcements.
 
- - Own development (10%)
+ - Own development (5%)
 
    Scratching my own itch and sending proposed patch series out.
 
@@ -35,6 +35,9 @@ The policy.
    contain bugfixes and enhancements in any area, including
    functionality, performance and usability, without regression.
 
+ - One release cycle for a feature release is expected to last for
+   eight to ten weeks.
+
  - Maintenance releases are numbered as vX.Y.Z.W and are meant
    to contain only bugfixes for the corresponding vX.Y.Z feature
    release and earlier maintenance releases vX.Y.Z.V (V < W).
@@ -58,12 +61,15 @@ The policy.
  - 'pu' branch is used to publish other proposed changes that do
    not yet pass the criteria set for 'next'.
 
- - The tips of 'master', 'maint' and 'next' branches will always
-   fast-forward, to allow people to build their own
-   customization on top of them.
+ - The tips of 'master' and 'maint' branches will not be rewound to
+   allow people to build their own customization on top of them.
+   Early in a new development cycle, 'next' is rewound to the tip of
+   'master' once, but otherwise it will not be rewound until the end
+   of the cycle.
 
- - Usually 'master' contains all of 'maint', 'next' contains all
-   of 'master' and 'pu' contains all of 'next'.
+ - Usually 'master' contains all of 'maint' and 'next' contains all
+   of 'master'.  'pu' contains all the topics merged to 'next', but
+   is rebuilt directly on 'master'.
 
  - The tip of 'master' is meant to be more stable than any
    tagged releases, and the users are encouraged to follow it.
@@ -76,11 +82,16 @@ The policy.
 A typical git day for the maintainer implements the above policy
 by doing the following:
 
- - Scan mailing list and #git channel log.  Respond with review
-   comments, suggestions etc.  Kibitz.  Collect potentially
-   usable patches from the mailing list.  Patches about a single
-   topic go to one mailbox (I read my mail in Gnus, and type
-   \C-o to save/append messages in files in mbox format).
+ - Scan mailing list.  Respond with review comments, suggestions
+   etc.  Kibitz.  Collect potentially usable patches from the
+   mailing list.  Patches about a single topic go to one mailbox (I
+   read my mail in Gnus, and type \C-o to save/append messages in
+   files in mbox format).
+
+ - Write his own patches to address issues raised on the list but
+   nobody has stepped up solving.  Send it out just like other
+   contributors do, and pick them up just like patches from other
+   contributors (see above).
 
  - Review the patches in the saved mailboxes.  Edit proposed log
    message for typofixes and clarifications, and add Acks
@@ -96,40 +107,32 @@ by doing the following:
    - Obviously correct fixes that pertain to the tip of 'master'
      are directly applied to 'master'.
 
+   - Other topics are not handled in this step.
+
    This step is done with "git am".
 
      $ git checkout master    ;# or "git checkout maint"
-     $ git am -3 -s mailbox
+     $ git am -sc3 mailbox
      $ make test
 
- - Merge downwards (maint->master):
-
-     $ git checkout master
-     $ git merge maint
-     $ make test
+   In practice, almost no patch directly goes to 'master' or
+   'maint'.
 
  - Review the last issue of "What's cooking" message, review the
-   topics scheduled for merging upwards (topic->master and
-   topic->maint), and merge.
+   topics ready for merging (topic->master and topic->maint).  Use
+   "Meta/cook -w" script (where Meta/ contains a checkout of the
+   'todo' branch) to aid this step.
+
+   And perform the merge.  Use "Meta/Reintegrate -e" script (see
+   later) to aid this step.
+
+     $ Meta/cook -w last-issue-of-whats-cooking.mbox
 
      $ git checkout master    ;# or "git checkout maint"
-     $ git merge ai/topic     ;# or "git merge ai/maint-topic"
+     $ echo ai/topic | Meta/Reintegrate -e ;# "git merge ai/topic"
      $ git log -p ORIG_HEAD.. ;# final review
      $ git diff ORIG_HEAD..   ;# final review
      $ make test              ;# final review
-     $ git branch -d ai/topic ;# or "git branch -d ai/maint-topic"
-
- - Merge downwards (maint->master) if needed:
-
-     $ git checkout master
-     $ git merge maint
-     $ make test
-
- - Merge downwards (master->next) if needed:
-
-     $ git checkout next
-     $ git merge master
-     $ make test
 
  - Handle the remaining patches:
 
@@ -138,9 +141,9 @@ by doing the following:
      and not in 'master') is applied to a new topic branch that
      is forked from the tip of 'master'.  This includes both
      enhancements and unobvious fixes to 'master'.  A topic
-     branch is named as ai/topic where "ai" is typically
-     author's initial and "topic" is a descriptive name of the
-     topic (in other words, "what's the series is about").
+     branch is named as ai/topic where "ai" is two-letter string
+     named after author's initial and "topic" is a descriptive name
+     of the topic (in other words, "what's the series is about").
 
    - An unobvious fix meant for 'maint' is applied to a new
      topic branch that is forked from the tip of 'maint'.  The
@@ -158,7 +161,8 @@ by doing the following:
 
    The above except the "replacement" are all done with:
 
-     $ git am -3 -s mailbox
+     $ git checkout ai/topic ;# or "git checkout -b ai/topic master"
+     $ git am -sc3 mailbox
 
    while patch replacement is often done by:
 
@@ -166,93 +170,166 @@ by doing the following:
 
    then replace some parts with the new patch, and reapplying:
 
+     $ git checkout ai/topic
      $ git reset --hard ai/topic~$n
-     $ git am -3 -s 000*.txt
+     $ git am -sc3 -s 000*.txt
 
    The full test suite is always run for 'maint' and 'master'
    after patch application; for topic branches the tests are run
    as time permits.
 
- - Update "What's cooking" message to review the updates to
-   existing topics, newly added topics and graduated topics.
-
-   This step is helped with Meta/cook script (where Meta/ contains
-   a checkout of the 'todo' branch).
+ - Merge maint to master as needed:
 
- - Merge topics to 'next'.  For each branch whose tip is not
-   merged to 'next', one of three things can happen:
+     $ git checkout master
+     $ git merge maint
+     $ make test
 
-   - The commits are all next-worthy; merge the topic to next:
+ - Merge master to next as needed:
 
      $ git checkout next
-     $ git merge ai/topic     ;# or "git merge ai/maint-topic"
+     $ git merge master
      $ make test
 
+ - Review the last issue of "What's cooking" again and see if topics
+   that are ready to be merged to 'next' are still in good shape
+   (e.g. has there any new issue identified on the list with the
+   series?)
+
+ - Prepare 'jch' branch, which is used to represent somewhere
+   between 'master' and 'pu' and often is slightly ahead of 'next'.
+
+     $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
+
+   The result is a script that lists topics to be merged in order to
+   rebuild 'pu' as the input to Meta/Reintegrate script.  Remove
+   later topics that should not be in 'jch' yet.  Add a line that
+   consists of '###' before the name of the first topic in the output
+   that should be in 'jch' but not in 'next' yet.
+
+ - Now we are ready to start merging topics to 'next'.  For each
+   branch whose tip is not merged to 'next', one of three things can
+   happen:
+
+   - The commits are all next-worthy; merge the topic to next;
    - The new parts are of mixed quality, but earlier ones are
-     next-worthy; merge the early parts to next:
+     next-worthy; merge the early parts to next;
+   - Nothing is next-worthy; do not do anything.
+
+   This step is aided with Meta/redo-jch.sh script created earlier.
+   If a topic that was already in 'next' gained a patch, the script
+   would list it as "ai/topic~1".  To include the new patch to the
+   updated 'next', drop the "~1" part; to keep it excluded, do not
+   touch the line.  If a topic that was not in 'next' should be
+   merged to 'next', add it at the end of the list.  Then:
+
+     $ git checkout -B jch master
+     $ Meta/redo-jch.sh -c1
+
+   to rebuild the 'jch' branch from scratch.  "-c1" tells the script
+   to stop merging at the '###' line you added earlier.
+
+   At this point, build-test the result.  It may reveal semantic
+   conflicts (e.g. a topic renamed a variable, another added a new
+   reference to the variable under its old name), in which case
+   prepare an appropriate merge-fix first (see appendix), and
+   rebuild the 'jch' branch from scratch, starting at the tip of
+   'master'.
+
+   Then do the same to 'next'
 
      $ git checkout next
-     $ git merge ai/topic~2   ;# the tip two are dubious
-     $ make test
+     $ sh Meta/redo-jch.sh -c1 -e
 
-   - Nothing is next-worthy; do not do anything.
+   The "-e" option allows the merge message that comes from the
+   history of the topic and the comments in the "What's cooking" to
+   be edited.  The resulting tree should match 'jch' as the same set
+   of topics are merged on 'master'; otherwise there is a mismerge.
+   Investigate why and do not proceed until the mismerge is found
+   and rectified.
 
- - [** OBSOLETE **] Optionally rebase topics that do not have any commit
-   in next yet, when they can take advantage of low-level framework
-   change that is merged to 'master' already.
+     $ git diff jch next
 
-     $ git rebase master ai/topic
+   When all is well, clean up the redo-jch.sh script with
 
-   This step is helped with Meta/git-topic.perl script to
-   identify which topic is rebaseable.  There also is a
-   pre-rebase hook to make sure that topics that are already in
-   'next' are not rebased beyond the merged commit.
+     $ sh Meta/redo-jch.sh -u
 
- - [** OBSOLETE **] Rebuild "pu" to merge the tips of topics not in 'next'.
+   This removes topics listed in the script that have already been
+   merged to 'master'.  This unfortunately loses the "###" marker,
+   so add it again to the appropriate place.
 
-     $ git checkout pu
-     $ git reset --hard next
-     $ git merge ai/topic     ;# repeat for all remaining topics
-     $ make test
+ - Rebuild 'pu'.
+
+     $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
+
+   Edit the result by adding new topics that are not still in 'pu'
+   in the script.  Then
+
+     $ git checkout -B pu jch
+     $ sh Meta/redo-pu.sh
+
+   When all is well, clean up the redo-pu.sh script with
+
+     $ sh Meta/redo-pu.sh -u
+
+   Double check by running
+
+     $ git branch --no-merged pu
+
+   to see there is no unexpected leftover topics.
+
+   At this point, build-test the result for semantic conflicts, and
+   if there are, prepare an appropriate merge-fix first (see
+   appendix), and rebuild the 'pu' branch from scratch, starting at
+   the tip of 'jch'.
+
+ - Update "What's cooking" message to review the updates to
+   existing topics, newly added topics and graduated topics.
 
-   This step is helped with Meta/PU script
+   This step is helped with Meta/cook script.
 
- - Push four integration branches to a private repository at
-   k.org and run "make test" on all of them.
+     $ Meta/cook
 
- - Push four integration branches to /pub/scm/git/git.git at
-   k.org.  This triggers its post-update hook which:
+   This script inspects the history between master..pu, finds tips
+   of topic branches, compares what it found with the current
+   contents in Meta/whats-cooking.txt, and updates that file.
+   Topics not listed in the file but are found in master..pu are
+   added to the "New topics" section, topics listed in the file that
+   are no longer found in master..pu are moved to the "Graduated to
+   master" section, and topics whose commits changed their states
+   (e.g. used to be only in 'pu', now merged to 'next') are updated
+   with change markers "<<" and ">>".
 
-    (1) runs "git pull" in $HOME/git-doc/ repository to pull
-        'master' just pushed out;
+   Look for lines enclosed in "<<" and ">>"; they hold contents from
+   old file that are replaced by this integration round.  After
+   verifying them, remove the old part.  Review the description for
+   each topic and update its doneness and plan as needed.  To review
+   the updated plan, run
 
-    (2) runs "make doc" in $HOME/git-doc/, install the generated
-        documentation in staging areas, which are separate
-        repositories that have html and man branches checked
-        out.
+     $ Meta/cook -w
 
-    (3) runs "git commit" in the staging areas, and run "git
-        push" back to /pub/scm/git/git.git/ to update the html
-        and man branches.
+   which will pick up comments given to the topics, such as "Will
+   merge to 'next'", etc. (see Meta/cook script to learn what kind
+   of phrases are supported).
 
-    (4) installs generated documentation to /pub/software/scm/git/docs/
-        to be viewed from http://www.kernel.org/
+ - Compile, test and install all four (five) integration branches;
+   Meta/Dothem script may aid this step.
 
- - Fetch html and man branches back from k.org, and push four
-   integration branches and the two documentation branches to
-   repo.or.cz and other mirrors.
+ - Format documentation if the 'master' branch was updated;
+   Meta/dodoc.sh script may aid this step.
 
+ - Push the integration branches out to public places; Meta/pushall
+   script may aid this step.
 
 Some observations to be made.
 
- * Each topic is tested individually, and also together with
-   other topics cooking in 'next'.  Until it matures, none part
-   of it is merged to 'master'.
+ * Each topic is tested individually, and also together with other
+   topics cooking first in 'pu', then in 'jch' and then in 'next'.
+   Until it matures, no part of it is merged to 'master'.
 
  * A topic already in 'next' can get fixes while still in
    'next'.  Such a topic will have many merges to 'next' (in
    other words, "git log --first-parent next" will show many
-   "Merge ai/topic to next" for the same topic.
+   "Merge branch 'ai/topic' to next" for the same topic.
 
  * An unobvious fix for 'maint' is cooked in 'next' and then
    merged to 'master' to make extra sure it is Ok and then
@@ -274,3 +351,62 @@ Some observations to be made.
  * Being in the 'next' branch is not a guarantee for a topic to
    be included in the next feature release.  Being in the
    'master' branch typically is.
+
+
+[Appendix]
+
+Preparing a "merge-fix"
+
+A merge of two topics may not textually conflict but still have
+conflict at the semantic level. A classic example is for one topic
+to rename an variable and all its uses, while another topic adds a
+new use of the variable under its old name. When these two topics
+are merged together, the reference to the variable newly added by
+the latter topic will still use the old name in the result.
+
+The Meta/Reintegrate script that is used by redo-jch and redo-pu
+scripts implements a crude but usable way to work this issue around.
+When the script merges branch $X, it checks if "refs/merge-fix/$X"
+exists, and if so, the effect of it is squashed into the result of
+the mechanical merge.  In other words,
+
+     $ echo $X | Meta/Reintegrate
+
+is roughly equivalent to this sequence:
+
+     $ git merge --rerere-autoupdate $X
+     $ git commit
+     $ git cherry-pick -n refs/merge-fix/$X
+     $ git commit --amend
+
+The goal of this "prepare a merge-fix" step is to come up with a
+commit that can be squashed into a result of mechanical merge to
+correct semantic conflicts.
+
+After finding that the result of merging branch "ai/topic" to an
+integration branch had such a semantic conflict, say pu~4, check the
+problematic merge out on a detached HEAD, edit the working tree to
+fix the semantic conflict, and make a separate commit to record the
+fix-up:
+
+     $ git checkout pu~4
+     $ git show -s --pretty=%s ;# double check
+     Merge branch 'ai/topic' to pu
+     $ edit
+     $ git commit -m 'merge-fix/ai/topic' -a
+
+Then make a reference "refs/merge-fix/ai/topic" to point at this
+result:
+
+     $ git update-ref refs/merge-fix/ai/topic HEAD
+
+Then double check the result by asking Meta/Reintegrate to redo the
+merge:
+
+     $ git checkout pu~5 ;# the parent of the problem merge
+     $ echo ai/topic | Meta/Reintegrate
+     $ git diff pu~4
+
+This time, because you prepared refs/merge-fix/ai/topic, the
+resulting merge should have been tweaked to include the fix for the
+semantic conflict.
-- 
1.8.1.293.g4a210a9

^ permalink raw reply related	[relevance 6%]

* Re: [PATCH 4/6] dir.c::match_pathname(): pay attention to the length of string parameters
  @ 2013-03-29 16:44  2%         ` Junio C Hamano
  2013-03-29 17:04  0%           ` Jeff King
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2013-03-29 16:44 UTC (permalink / raw)
  To: Duy Nguyen; +Cc: Jeff King, git, avila.jn

Duy Nguyen <pclouds@gmail.com> writes:

>> So we would want to do any adjustment to the fix when we merge up to
>> maint.
>
> OK. Then Junio, you may need to resolve the conflict with something
> like this. Originally match_basename uses fnmatch, not wildmatch. But
> using wildmatch there too should be fine, now that both
> match_{base,path}name share fnmatch_icase_mem().

Thanks.

The result still smells somewhat funny, though.

fnmatch_icase_mem() is meant to be a wrapper of fnmatch_icase() for
counted strings and its matching semantics should be the same as
fnmatch_icase().

With the merge-fix, fnmatch_icase_mem() calls into wildmatch(), but
fnmatch_icase() still calls into fnmatch().

The latter's flags are meant to be taken from FNM_* family, but the
former takes flags from WM_* family of bits, no?

I think you are running with USE_WILDMATCH which may make the
differences harder to notice, but the name fnmatch_icase_mem() that
is not in the same family as fnmatch but is from the wildmatch()
family smells like an accident waiting to happen.

I tend to think in the longer term it may be a good idea to build
with USE_WILDMATCH unconditionally (we can lose compat/fnmatch), so
in the end this may not matter that much, but before that happens,
soon after we merge the regression fix with this merge-fix, we may
want to update the codebase as if we applied a series that were
based on 'maint' as you suggested, i.e. using raw wildmatch()
consistently in the match_{base,path}name() codepath.

Opinions?

>
> -- 8< --
> diff --git a/dir.c b/dir.c
> index 73a08af..84744df 100644
> --- a/dir.c
> +++ b/dir.c
> @@ -81,7 +81,9 @@ static int fnmatch_icase_mem(const char *pattern, int patternlen,
>  		use_str = str_buf.buf;
>  	}
>  
> -	match_status = fnmatch_icase(use_pat, use_str, flags);
> +	if (ignore_case)
> +		flags |= WM_CASEFOLD;
> +	match_status = wildmatch(use_pat, use_str, flags, NULL);
>  
>  	strbuf_release(&pat_buf);
>  	strbuf_release(&str_buf);
> @@ -564,7 +566,7 @@ int match_pathname(const char *pathname, int pathlen,
>  
>  	return fnmatch_icase_mem(pattern, patternlen,
>  				 name, namelen,
> -				 FNM_PATHNAME) == 0;
> +				 WM_PATHNAME) == 0;
>  }
>  
>  /*
> -- 8< --

^ permalink raw reply	[relevance 2%]

* Re: [PATCH 4/6] dir.c::match_pathname(): pay attention to the length of string parameters
  2013-03-29 16:44  2%         ` Junio C Hamano
@ 2013-03-29 17:04  0%           ` Jeff King
  2013-03-29 17:35  0%             ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Jeff King @ 2013-03-29 17:04 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Duy Nguyen, git, avila.jn

On Fri, Mar 29, 2013 at 09:44:32AM -0700, Junio C Hamano wrote:

> Duy Nguyen <pclouds@gmail.com> writes:
> 
> >> So we would want to do any adjustment to the fix when we merge up to
> >> maint.
> >
> > OK. Then Junio, you may need to resolve the conflict with something
> > like this. Originally match_basename uses fnmatch, not wildmatch. But
> > using wildmatch there too should be fine, now that both
> > match_{base,path}name share fnmatch_icase_mem().
> 
> Thanks.
> 
> The result still smells somewhat funny, though.
> 
> fnmatch_icase_mem() is meant to be a wrapper of fnmatch_icase() for
> counted strings and its matching semantics should be the same as
> fnmatch_icase().
> 
> With the merge-fix, fnmatch_icase_mem() calls into wildmatch(), but
> fnmatch_icase() still calls into fnmatch().
> 
> The latter's flags are meant to be taken from FNM_* family, but the
> former takes flags from WM_* family of bits, no?

Yeah, that does not seem right. If match_pathname has learned to call
into wildmatch instead of fnmatch_icase in the interim, then the right
resolution is to convert its call to fnmatch_icase_mem to a new
wildmatch_mem.  Presumably that can be done by either tweaking
fnmatch_icase_mem, or, if wildmatch is ready to take counted strings,
calling into it with the right options.

> I think you are running with USE_WILDMATCH which may make the
> differences harder to notice, but the name fnmatch_icase_mem() that is
> not in the same family as fnmatch but is from the wildmatch() family
> smells like an accident waiting to happen.

Agreed.

> I tend to think in the longer term it may be a good idea to build with
> USE_WILDMATCH unconditionally (we can lose compat/fnmatch), so in the
> end this may not matter that much

Yeah, I think that is a sane long-term goal.

-Peff

^ permalink raw reply	[relevance 0%]

* Re: [PATCH 4/6] dir.c::match_pathname(): pay attention to the length of string parameters
  2013-03-29 17:04  0%           ` Jeff King
@ 2013-03-29 17:35  0%             ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2013-03-29 17:35 UTC (permalink / raw)
  To: Jeff King; +Cc: Duy Nguyen, git, avila.jn

Jeff King <peff@peff.net> writes:

> On Fri, Mar 29, 2013 at 09:44:32AM -0700, Junio C Hamano wrote:
> ...
>> With the merge-fix, fnmatch_icase_mem() calls into wildmatch(), but
>> fnmatch_icase() still calls into fnmatch().
>> 
>> The latter's flags are meant to be taken from FNM_* family, but the
>> former takes flags from WM_* family of bits, no?
>
> Yeah, that does not seem right. If match_pathname has learned to call
> into wildmatch instead of fnmatch_icase in the interim, then the right
> resolution is to convert its call to fnmatch_icase_mem to a new
> wildmatch_mem.  Presumably that can be done by either tweaking
> fnmatch_icase_mem, or, if wildmatch is ready to take counted strings,
> calling into it with the right options.
>
>> I think you are running with USE_WILDMATCH which may make the
>> differences harder to notice, but the name fnmatch_icase_mem() that is
>> not in the same family as fnmatch but is from the wildmatch() family
>> smells like an accident waiting to happen.
>
> Agreed.

This may be just the matter of naming.

It smelled wrong to me only because the "fnmatch" in the helper
fnmatch_icase_mem() told me that it should forever use fnmatch
semantics.  After reading its (only) two callsites, they are both
"the caller has transformed the inputs to this lowest level pathname
vs pattern matching function in order to reduce the cost of
matching, and now it is time to exercise the matcher".  The only
thing they care about is that they are calling "the lowest level
pathname vs pattern matching function."

If we pronounce "fnmatch_icase_mem()" as "match_path_with_pattern()"
or something in the original series, the problem may go away ;-)

Does any caller pass FNM_* bits to a callchain that reach the new *_mem()
function?

^ permalink raw reply	[relevance 0%]

* Re: Premerging topics
    @ 2013-04-23 14:53  3%   ` Junio C Hamano
  2013-04-23 15:17  2%     ` Antoine Pelisse
  1 sibling, 1 reply; 200+ results
From: Junio C Hamano @ 2013-04-23 14:53 UTC (permalink / raw)
  To: Johan Herland; +Cc: Antoine Pelisse, Michael Haggerty, Jeff King, git

Johan Herland <johan@herland.net> writes:

> Can you solve this problem with a tree object, instead of inventing a
> specially-formatted blob?

Hmm.  What problem are you guys trying to solve?

I think Michael's use of a merge commit to record a merge result is
sufficient as a means to record how to recreate an evil merge.

  http://thread.gmane.org/gmane.comp.version-control.git/212570/focus=212578

FWIW, in the [RFD], I wasn't asking for ideas on that part.  When
rebuiling 'pu', I use an even simpler solution to have rerere
autoresolve the mechanical part of the merge, and then cherry-pick a
separate commit from refs/merge-fix/ hierarchy on the result, and it
works perfectly fine (this is done by the 'Reintegrate' script on
the 'todo' branch; see Documentation/howto/maintain-git.txt).

When topic A is closer to be done than topic B (in other words, when
I merge topic B to an integration branch, topic A is already merged
there), and these topics have semantic conflicts (e.g. A renames a
function foo() to bar(), while B adds a new callsite of foo()), a
mechanical merge of B may succeed without any textual conflict (or
if there is, rerere can resolve it), but a semantic fix-up needs to
do "s/foo/bar/g" on the result.

I would do something like this for the first time:

	... while on 'pu', A has already been merged ...
        git merge B ;# may conflict
        edit textual conflicts away
        git rerere ;# remember the textual resolution
        git commit ;# commit _without_ semantics adjustment
        edit semantic conflict away, i.e. s/foo/bar/g
        git commit
        git update-ref refs/merge-fix/B

After that, next time I rebuild 'pu', when the automated procedure
processes B, it would "git merge B", "git rerere", make sure textual
conflicts are gone, and "git cherry-pick refs/merge-fix/B".  To make
sure this would work, what I typically do immediately after doing
all of the above is:

	git reset --hard HEAD^^

to drop the fix-up commit and merge of B, and actually tell the
automated procedure to process B.  It should recreate the evil merge
using the information I just recorded.

So "how a recipe to recreate an evil merge is recorded", as far as I
am concerned, is an already solved problem.

The part of the existing solution I was not happy was deciding when
to use which "merge-fix" commit to cherry-pick.  If I start merging
topic B before topic A, the "merge-fix/B" needs to be renamed to
"merge-fix/A" in the above.  Otherwise, when B is merged to 'pu',
there is no 'A' merged to it yet, so merge-fix that munges its new
call to foo() to call bar() instead will _break_ things [*1*].

And that was why I wanted to have a data structure that is quick to
query to answer "I am about to merge B.  Does the history already
have an A for which I have recorded a merge-fix for <A,B> pair?"


[Footnote]

*1* If A has other kinds of conflicts with other topics, it is not
sufficient to just rename "merge-fix/B" to "merge-fix/A"---the
effect of cherry-picking "merge-fix/B" needs to be merged to
existing "merge-fix/A".  If a merge-fix is recorded for a pair of
commits that necessitates an evil merge, this naturally goes away.
I can keep a merge-fix for the <A,B> pair whether I merge A before
or after B, and semantic conflicts A may have with another topic C
would be stored in a separate merge-fix for <A,C> pair.

^ permalink raw reply	[relevance 3%]

* Re: Premerging topics
  2013-04-23 14:53  3%   ` Junio C Hamano
@ 2013-04-23 15:17  2%     ` Antoine Pelisse
  2013-04-23 15:29  0%       ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Antoine Pelisse @ 2013-04-23 15:17 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Johan Herland, Michael Haggerty, Jeff King, git

On Tue, Apr 23, 2013 at 4:53 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Johan Herland <johan@herland.net> writes:
>
>> Can you solve this problem with a tree object, instead of inventing a
>> specially-formatted blob?
>
> Hmm.  What problem are you guys trying to solve?
>
> [snipped..]
> And that was why I wanted to have a data structure that is quick to
> query to answer "I am about to merge B.  Does the history already
> have an A for which I have recorded a merge-fix for <A,B> pair?"

That's exactly the problem I'm trying to solve.
I'm willing to have an efficient way to merge topicC that has semantic
conflicts with topicA and topicB.
As topics will be merged together first in pu, then in next and
finally in master, chances are that they won't be merged in the same
order (or then, why would we even care about a topic workflow?). And I
have the feeling that "merge-fix/B" or "merge-fix/A" doesn't hold
enough information to do that accurately.

The idea is then to store the <A, B> pair as a note, and to associate
a "merge" to that (solving the semantic conflict). It would then be
used as an implicit third parent for the merge of "branch containing
A" and "branch containing B". This is pretty much what Michael said in
the $gmane you talked about.

Cheers,
Antoine

^ permalink raw reply	[relevance 2%]

* Re: Premerging topics
  2013-04-23 15:17  2%     ` Antoine Pelisse
@ 2013-04-23 15:29  0%       ` Junio C Hamano
  2013-04-23 15:36  0%         ` Antoine Pelisse
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2013-04-23 15:29 UTC (permalink / raw)
  To: Antoine Pelisse; +Cc: Johan Herland, Michael Haggerty, Jeff King, git

Antoine Pelisse <apelisse@gmail.com> writes:

> And I
> have the feeling that "merge-fix/B" or "merge-fix/A" doesn't hold
> enough information to do that accurately.

Oh, you do not have to resort to feeling; these names do _not_ hold
enough information, period.  We already know that, that was why I was
unhappy, and that was why I sent the "annotating a pair of commit
objects" RFD in the first place ;-).

> The idea is then to store the <A, B> pair as a note, and to associate
> a "merge" to that (solving the semantic conflict).

OK, and as the datastore for <A, B> pair you were thinking about
using a specially-formatted blob and Johan suggested to use a
regular tree object?

^ permalink raw reply	[relevance 0%]

* Re: Premerging topics
  2013-04-23 15:29  0%       ` Junio C Hamano
@ 2013-04-23 15:36  0%         ` Antoine Pelisse
  0 siblings, 0 replies; 200+ results
From: Antoine Pelisse @ 2013-04-23 15:36 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Johan Herland, Michael Haggerty, Jeff King, git

On Tue, Apr 23, 2013 at 5:29 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Antoine Pelisse <apelisse@gmail.com> writes:
>
>> And I
>> have the feeling that "merge-fix/B" or "merge-fix/A" doesn't hold
>> enough information to do that accurately.
>
> Oh, you do not have to resort to feeling; these names do _not_ hold
> enough information, period.  We already know that, that was why I was
> unhappy, and that was why I sent the "annotating a pair of commit
> objects" RFD in the first place ;-).

:)

>> The idea is then to store the <A, B> pair as a note, and to associate
>> a "merge" to that (solving the semantic conflict).
>
> OK, and as the datastore for <A, B> pair you were thinking about
> using a specially-formatted blob and Johan suggested to use a
> regular tree object?

Exactly. But as I said, it should associate the pair to a merge. And
trees contain other trees or blobs, not commits. I'm wondering if this
is a problem.

^ permalink raw reply	[relevance 0%]

* Re: Premerging topics
  @ 2013-04-24  5:48  3%       ` Junio C Hamano
  2013-04-24  6:22  3%         ` Johan Herland
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2013-04-24  5:48 UTC (permalink / raw)
  To: Johan Herland; +Cc: Antoine Pelisse, Michael Haggerty, Jeff King, git

Johan Herland <johan@herland.net> writes:

>> But P is a commit(/merge with two parents), not a blob. Can we have trees
>> pointing to commits instead of blobs ?
>
> Sort of. We do so when recording submodules in regular git trees.

You are using notes to maintain reachability, aren't you?  Because
commit objects that appears in trees are not treated as reachable
from the trees, that won't fly.

I think you guys are making it unnecessarily complex by using notes.
To record a prepared evil merge for merging branch that contains A
with another branch that contains B (assuming that the interation
between A and B is what makes the evil merge necessary, e.g. A
renames a function foo() to bar(), while B adds new callsite that
calls foo()), we can store a single commit that records the prepared
evil merge under "refs/merge-fix/$A-$B" where A and B are their
object names.

Then when merging a branch Y that contains B into our history X that
already contains A (or vice versa),

  ---o---o---A---o---X... ???
      \                  .
       \                .
        \              .
         o---B----o---Y

we can enumerate the commits that appear in "log --left-right X...Y"
on the left/right side and notice there is refs/merge-fix/$A-$B.

So the simplest implementation of "an efficient data store to record
a commit for <A,B> pair" turns out to be just a ref namespace ;-)

There may be other <C,D> pairs in X...Y history, and it probably is
the sane thing to do to replay prepackaged evil merges from older to
newer in the topological sense, but that loop would be trivial, once
we understand how to replay a single such evil merge.

The actual merge-fix data should be just a commit with a single
parent. The easiest way to prepare it would be like this:

  ---o---o---A
      \       \
       \       M---F
        \     /
         o---B

where M is the result of mechanical merge between A and B (there
could be textual conflicts and you could choose to leave them in, or
you could choose to have rerere resolve it.  As long as you do the
same when replaying this prepackaged evil merge, this choice does
not matter, but using rerere will make your life easier), and F is
the final result you would want, with semantics conflicts resolved.
In other words, in the ideal world, you would have resolved a merge
between A and B to record the tree of F.

Point "F" with refs/merge-fix/$A-$B and you are done.

When you replay this prepackaged evil merge, first you mechanically
merge X and Y without worrying about M or F to produce N.  If you
allowed rerere to resolve textual conflicts between A and B when you
recorded M, allow rerere to resolve this merge.  Otherwise leave the
textual conflict in.

  ---o---o---A---o---X
      \               \
       \               N
        \             /
         o---B---o---Y

Then on top of N, you cherry-pick F, which will bring the semantic
conflict resolution between M and F on top of N.

  ---o---o---A---o---X
      \               \
       \               N---F'
        \             /
         o---B---o---Y

Once you know the tree shape of F', then you no longer need N.  Just
amend it away and make the tree recorded in F' the result of the
merge between X and Y.

  ---o---o---A---o---X---.
      \                   \
       \                  F''
        \                /
         o---B---o---Y--.

^ permalink raw reply	[relevance 3%]

* Re: Premerging topics
  2013-04-24  5:48  3%       ` Premerging topics Junio C Hamano
@ 2013-04-24  6:22  3%         ` Johan Herland
    0 siblings, 1 reply; 200+ results
From: Johan Herland @ 2013-04-24  6:22 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Antoine Pelisse, Michael Haggerty, Jeff King, git

On Wed, Apr 24, 2013 at 7:48 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Johan Herland <johan@herland.net> writes:
>
>>> But P is a commit(/merge with two parents), not a blob. Can we have trees
>>> pointing to commits instead of blobs ?
>>
>> Sort of. We do so when recording submodules in regular git trees.
>
> You are using notes to maintain reachability, aren't you?  Because
> commit objects that appears in trees are not treated as reachable
> from the trees, that won't fly.
>
> I think you guys are making it unnecessarily complex by using notes.
> To record a prepared evil merge for merging branch that contains A
> with another branch that contains B (assuming that the interation
> between A and B is what makes the evil merge necessary, e.g. A
> renames a function foo() to bar(), while B adds new callsite that
> calls foo()), we can store a single commit that records the prepared
> evil merge under "refs/merge-fix/$A-$B" where A and B are their
> object names.
>
> Then when merging a branch Y that contains B into our history X that
> already contains A (or vice versa),
>
>   ---o---o---A---o---X... ???
>       \                  .
>        \                .
>         \              .
>          o---B----o---Y
>
> we can enumerate the commits that appear in "log --left-right X...Y"
> on the left/right side and notice there is refs/merge-fix/$A-$B.
>
> So the simplest implementation of "an efficient data store to record
> a commit for <A,B> pair" turns out to be just a ref namespace ;-)
>
> There may be other <C,D> pairs in X...Y history, and it probably is
> the sane thing to do to replay prepackaged evil merges from older to
> newer in the topological sense, but that loop would be trivial, once
> we understand how to replay a single such evil merge.

This raises the same question I recently asked Antoine: For a given
prepackaged merge <X,Y>, do we assume that it only resolves conflicts
between the changes introduced in commit X vs. changes introduced in
commit Y, or do we assume that it resolves conflicts between the
histories leading up to X and Y, respectively? In other words, does
<X,Y> _supercede_ earlier pre-merges between the histories leading up
to X and Y?

I think the latter makes more sense, since we can then reduce the
number of pre-merges to consider in the final merge. There might still
be more than one pre-merge to consider, though, e.g. in criss-cross
cases like this:

  ---o---o---o---o---o---o---o---o
      \             /     \       \
       \           /       \       \
        \         /         \       \
         o---o---o           P2      \
          \       \         /         \
           \       \       /           M
            \       \     /           /
             o---o---+---o           /
              \       \   \         /
               \       P1  \       /
                \     /     \     /
                 o---o---o---o---o

(there is no commit at the "+")

> The actual merge-fix data should be just a commit with a single
> parent. The easiest way to prepare it would be like this:
>
>   ---o---o---A
>       \       \
>        \       M---F
>         \     /
>          o---B
>
> where M is the result of mechanical merge between A and B (there
> could be textual conflicts and you could choose to leave them in, or
> you could choose to have rerere resolve it.  As long as you do the
> same when replaying this prepackaged evil merge, this choice does
> not matter, but using rerere will make your life easier), and F is
> the final result you would want, with semantics conflicts resolved.
> In other words, in the ideal world, you would have resolved a merge
> between A and B to record the tree of F.
>
> Point "F" with refs/merge-fix/$A-$B and you are done.
>
> When you replay this prepackaged evil merge, first you mechanically
> merge X and Y without worrying about M or F to produce N.  If you
> allowed rerere to resolve textual conflicts between A and B when you
> recorded M, allow rerere to resolve this merge.  Otherwise leave the
> textual conflict in.
>
>   ---o---o---A---o---X
>       \               \
>        \               N
>         \             /
>          o---B---o---Y
>
> Then on top of N, you cherry-pick F, which will bring the semantic
> conflict resolution between M and F on top of N.
>
>   ---o---o---A---o---X
>       \               \
>        \               N---F'
>         \             /
>          o---B---o---Y
>
> Once you know the tree shape of F', then you no longer need N.  Just
> amend it away and make the tree recorded in F' the result of the
> merge between X and Y.
>
>   ---o---o---A---o---X---.
>       \                   \
>        \                  F''
>         \                /
>          o---B---o---Y--.

This is obviously a much better way to solve it. It might already be
obvious, but I would suggest when making "refs/merge-fix/$A-$B" that you
canonicalize the name by always choosing A and B such that A precedes B
alphabetically. That way you won't have problems with both recording
"refs/merge-fix/$A-$B" and "refs/merge-fix/$B-$A".


...Johan

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

^ permalink raw reply	[relevance 3%]

* Re: Premerging topics
  @ 2013-04-29 19:06  3%             ` Antoine Pelisse
  2013-04-29 22:19  2%               ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Antoine Pelisse @ 2013-04-29 19:06 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Johan Herland, Michael Haggerty, Jeff King, git

Should we think about adding some commands for that ?

On the very top of my head (there is certainly more than that):
- Save such a change: By basically creating a ref to HEAD (HEAD being
the commit, HEAD^ the fixed merge) with merge-fix/HEAD^^1-HEAD^^2
- Apply the merge-fix: On top of a merge, find the most recent
merge-fix for HEAD^1/HEAD^2 (according to what was discussed), and
squash it.

On Wed, Apr 24, 2013 at 9:14 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Johan Herland <johan@herland.net> writes:
>
>> This raises the same question I recently asked Antoine: For a given
>> prepackaged merge <X,Y>, do we assume that it only resolves conflicts
>> between the changes introduced in commit X vs. changes introduced in
>> commit Y, or do we assume that it resolves conflicts between the
>> histories leading up to X and Y, respectively? In other words, does
>> <X,Y> _supercede_ earlier pre-merges between the histories leading up
>> to X and Y?
>
> That is an interesting question.  There are largely two cases.
>
> When you replayed M---F to produce N---F', there may have been no
> textual or semantic conflict.  Which means that there were no new
> reason between A--X and B--Y that necessitates an evil merge.  A
> later merge between a descendant of X (but not Y) and a descendant
> of Y (but not X) can cherry pick the same <A,B> (M---F) on top of a
> mechanical merge,
>
> On the other hand, you may have had either a textual or a semantic
> conflict when replaying <A,B> on N, and you had to fix up F' for it
> to be the correct resolution of merge between X and Y.
>
>   ---o---o---A---o---X
>       \               \
>        \               N---F'
>         \             /
>          o---B---o---Y
>
> In such a case, you do want to record the fixed N---F' as the
> prepackaged resolution for <X,Y>.  Any time later when somebody is
> on a branch that has X (but not Y) and merges a branch that has Y
> (but not X), that N---F' should be the one to cherry-pick on top of
> a mechanical merge O between S and T.  What <A,B> (M---F) did is
> superseded if you are going to replay <X,Y>.
>
>   ---o---o---A---o---X----------S
>       \       \       \          \
>        \       M--F    N---F'     O---F''
>         \     /       /          /
>          o---B---o---Y----------T
>
> You can tell that by noticing that A is an ancestor of X and B is an
> ancestor of Y.  As you said, this is a good way to reduce the number
> of prepackaged evil merges that need to be considered.
>

^ permalink raw reply	[relevance 3%]

* Re: Premerging topics
  2013-04-29 19:06  3%             ` Antoine Pelisse
@ 2013-04-29 22:19  2%               ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2013-04-29 22:19 UTC (permalink / raw)
  To: Antoine Pelisse; +Cc: Johan Herland, Michael Haggerty, Jeff King, git

Antoine Pelisse <apelisse@gmail.com> writes:

> Should we think about adding some commands for that ?
>
> On the very top of my head (there is certainly more than that):
> - Save such a change: By basically creating a ref to HEAD (HEAD being
> the commit, HEAD^ the fixed merge) with merge-fix/HEAD^^1-HEAD^^2
> - Apply the merge-fix: On top of a merge, find the most recent
> merge-fix for HEAD^1/HEAD^2 (according to what was discussed), and
> squash it.

Yeah, some nasties may live in the details, but these two operations
are needed and probably sufficient as the end-user facing UI.

The "save" step, when done manually, needs to be a two-step process
that saves M and then F separately, but somebody _might_ be able to
come up with a clever idea to let the user jump directly to F
without recording M.  If such a triangle (A and B merges to F) can
be recorded as merge-fix/A-B, that would certainly be less error
prone and easier for the users to use.  Having said that, in the
presense of possible textual conflicts when creating M, I do not
think of a way that is easily implementable mechanically to
internally sift changes for M and F when replaying it while
resolving a merge between X and Y to produce N and eventually F'.

The "apply" step should be a single step, and it should be easy to
implement mechanically if M and F are recorded separately (but
again, you may be able to re-synthesise M from A and B when you need
to replay the evil merge).

^ permalink raw reply	[relevance 2%]

* Re: ANNOUNCE: git-integration -- Easily manage integration branches
  @ 2013-07-30 17:57  2%   ` John Keeping
  0 siblings, 0 replies; 200+ results
From: John Keeping @ 2013-07-30 17:57 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Tue, Jul 30, 2013 at 09:45:49AM -0700, Junio C Hamano wrote:
> John Keeping <john@keeping.me.uk> writes:
> 
> > I wrote this script a few months ago and have been using it pretty much
> > daily since then, so I figure it's time to see if anyone else finds it
> > useful...
> >
> > git-integration [1] is a script to help manage integration branches in
> > Git.  By defining a base point and a set of branches to be merged to
> > form the integration branch, git-integration lets you easily rebuild an
> > integration branch when anything in it changes, as well as showing you
> > the status of all of the branches in the integration branch.
> >
> > For example, the instruction sheet for git-integration's "pu" branch
> > recently looked like this:
> >
> > 	base master
> >
> > 	merge make-clean
> >
> > 	  Add a "clean" target to the makefile.
> >
> > 	merge version
> >
> > 	  Support for "--version" option.
> >
> > 	  N.B. this builds on "make-clean".
> >
> > 	merge skip-option
> >
> > 	  Needs more work to be able to handle "branch not found".
> >
> > This tells git-integration to base the "pu" branch on "master" and merge
> > the "make-clean", "version" and "skip-option" branches in.  The comments
> > following the "merge" instructions are added to the commit message for
> > the corresponding merge commit.  When I want to rebuild the "pu" branch
> > I simply do:
> >
> > 	$ git integration --rebuild pu
> >
> > To change the contents of the branch, I either edit the instruction
> > sheet manually:
> >
> > 	$ git integration --edit pu
> >
> > or quickly add a new branch from the command line:
> >
> > 	$ git integration --add my-new-branch pu
> >
> > In fact, I can combine these to get the benefit of bash-completion on
> > the branch name and the ability to edit the instruction sheet - when
> > multiple commands are specified, git-integration performs each of them
> > in a sensible order, described in the manpage [2].
> >
> >
> > [1] http://johnkeeping.github.io/git-integration/
> > [2] http://johnkeeping.github.io/git-integration/git-integration.html
> 
> Interesting.
> 
> Would it help me to replay "evil merges" I previously made and avoid
> necessity to write merge log messages repeatedly?

Currently it does nothing beyond having the ability to continue
automatically if rerere manages to resolve all conflicts (disabled by
default).  There is no equivalent of your refs/merge-fix/ feature,
although I think I might add one soon ;-).

Since the commit messages for the merge commits come from the
instruction sheet, it does avoid the need to write them repeatedly - if
you want to change the merge message you can simply update the
instruction sheet and rebuild.

> In short, can I replace my Meta/Reintegrate and Meta/cook with this
> (see Documentation/howto/maintain-git.txt)?

It performs the same basic function as those scripts, but it's quite a
lot simpler and hasn't been designed for the git.git workflow, so I
don't think it's suitable for replacing your existing scripts.

If I were starting from scratch and attempting to implement the git.git
workflow on top of git-integration, I think I would make
whats-cooking.txt a build artifact generated from the instruction sheet
for pu.  This would require some new commands to be added to
git-integration's instruction sheet to let it assign sections to
branches, but ought to be possible.  I expect there would be some
subtleties though - certainly git-integration's "--status" output does
not handle all of the cases the Meta/cook does, not least because it
only compares against a single base branch.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH] commit: Add -f, --fixes <commit> option to add Fixes: line
  @ 2013-10-28  0:49  2%       ` Jim Hill
  0 siblings, 0 replies; 200+ results
From: Jim Hill @ 2013-10-28  0:49 UTC (permalink / raw)
  To: Josh Triplett, git
  Cc: Dan Carpenter, Greg KH, ksummit-2013-discuss, ksummit-attendees,
	linux-kernel

On 10/26/13 18:34, Josh Triplett wrote:
> Linux Kernel ... "Fixes:" line ... containing an abbreviated commit hash

<!-- -->
> This helps people (or automated tools) determine how far to backport

I beg pardon if I'm rehearsing an old debate, but it seems to me it 
would be better and worthwhile to bring more of git to bear by adding 
`reference` links as follows from considering this proposed sequence:

     #  ...G---B---...    history-with-bug-at-B

     Gprime=`git commit-tree --reference G`
     Bprime=`git commit-tree --reference B -p $Gprime`

     #   ...G---B---...   history-with-bug-at-B
     #      :   :         # <-- `:`'s are `reference` links
     #      G'--B'        $Bprime is a mergeable cherry-pick for B

`reference` links have no enforced semantics. Teach all current logic to 
ignore them (fetch doesn't fetch through them, fsck doesn't care, etc.). 
  Elaborating some of the good parts:

* If the author and committer data are left untouched when 
`commit-tree`'s tree and message arguments are defaulted, as above, to 
the referenced commit's tree and message, the resulting commit is unique.

* Bullet-proof cherry-pick creation becomes easy and idempotent:

         git-make-cherry-pick() {
             local picked=$1
             set -- `git rev-list --parents $picked^!`
             shift
             local parents
             local parent
             local p2
             for parent; do
                     p2="$p2 -p `git commit-tree --reference $parent`"
             done
             git commit-tree --reference $picked $parents`
         }

* Which makes the created commit id a fully-implemented _change-id_ for 
the referenced commit:

         git merge $(git-make-cherry-pick $B)

     can be done from anywhere, merge won't have to rely on patch-id's 
to detect cherry-picks done this way.

* A bugged commit gets fixed by fixing its reference commit and merging 
normally, worry-free:

         ...G---B ... -F   Merge fix X for a bug in B
            :   :     /
            G'--B'---X     X's commit message is the `Fixes:` equivalent

    Bugfix commit X can be safely merged anywhere.  Worst case, `git 
merge -s ours --no-commit X` and do whatever you would have done otherwise.

`merge` might usefully be updated to warn about merging from a commit 
with only a reference parent, I think merging from `G'` would probably 
be a mistake.

---
So, this is as far as I've gotten with this, is there reason to think it 
should or shouldn't be pursued?

^ permalink raw reply	[relevance 2%]

* [PATCH 1/3] unpack-trees: fix "read-tree -u --reset A B" with conflicted index
  @ 2013-11-01 22:44  1%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2013-11-01 22:44 UTC (permalink / raw)
  To: git; +Cc: Jeff King

From: Jeff King <peff@peff.net>

When we call "read-tree --reset -u HEAD ORIG_HEAD", the first thing we
do with the index is to call read_cache_unmerged.  Originally that
would read the index, leaving aside any unmerged entries.  However, as
of d1a43f2 (reset --hard/read-tree --reset -u: remove unmerged new
paths, 2008-10-15), it actually creates a new cache entry to serve as
a placeholder, so that we later know to update the working tree.

However, we later noticed that the sha1 of that unmerged entry was
just copied from some higher stage, leaving you with random content in
the index.  That was fixed by e11d7b5 ("reset --merge": fix unmerged
case, 2009-12-31), which instead puts the null sha1 into the newly
created entry, and sets a CE_CONFLICTED flag. At the same time, it
teaches the unpack-trees machinery to pay attention to this flag, so
that oneway_merge throws away the current value.

However, it did not update the code paths for twoway_merge, which is
where we end up in the two-way read-tree with --reset. We notice that
the HEAD and ORIG_HEAD versions are the same, and say "oh, we can just
reuse the current version". But that's not true. The current version
is bogus.

Notice this case and make sure we do not keep the bogus entry; either
we do not have that path in the tree we are moving to (i.e. remove
it), or we want to have the cache entry we created for the tree we are
moving to (i.e. resolve by explicitly saying the "newtree" version is
what we want).

[jc: this is from the almost year-old $gmane/212316; the credit goes
to Peff, but we need his sign-off]

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 unpack-trees.c | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/unpack-trees.c b/unpack-trees.c
index 7c9ecf6..bf978e1 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -1728,14 +1728,23 @@ int twoway_merge(struct cache_entry **src, struct unpack_trees_options *o)
 		newtree = NULL;
 
 	if (current) {
-		if ((!oldtree && !newtree) || /* 4 and 5 */
-		    (!oldtree && newtree &&
-		     same(current, newtree)) || /* 6 and 7 */
-		    (oldtree && newtree &&
-		     same(oldtree, newtree)) || /* 14 and 15 */
-		    (oldtree && newtree &&
-		     !same(oldtree, newtree) && /* 18 and 19 */
-		     same(current, newtree))) {
+		if (current->ce_flags & CE_CONFLICTED) {
+			if (same(oldtree, newtree) || o->reset) {
+				if (!newtree)
+					return deleted_entry(current, current, o);
+				else
+					return merged_entry(newtree, current, o);
+			}
+			return o->gently ? -1 : reject_merge(current, o);
+		}
+		else if ((!oldtree && !newtree) || /* 4 and 5 */
+			 (!oldtree && newtree &&
+			  same(current, newtree)) || /* 6 and 7 */
+			 (oldtree && newtree &&
+			  same(oldtree, newtree)) || /* 14 and 15 */
+			 (oldtree && newtree &&
+			  !same(oldtree, newtree) && /* 18 and 19 */
+			  same(current, newtree))) {
 			return keep_entry(current, o);
 		}
 		else if (oldtree && !newtree && same(current, oldtree)) {
-- 
1.8.5-rc0-281-g8951339

^ permalink raw reply related	[relevance 1%]

* Re: Branching workflow
  @ 2013-12-03 19:12  3% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2013-12-03 19:12 UTC (permalink / raw)
  To: Javier Domingo; +Cc: git@vger.kernel.org

Javier Domingo <javierdo1@gmail.com> writes:

               
> Hi,
>
> I have been using a very basic workflow for branching, features each
> in a branch.
>
> My branches would be:
> - develop <= Main upstream branch
> - feature/* fix/*  <= Feature and fix branches
> - master <= Integration of the whole feature and fix branches
>
> So I have now came up with a very difficult task. I just discovered
> that one of those branches, lest call it feature/bad, is evil and is
> making the integration branch (master) fail horribly.
>
> In my workflow, I tend to merge develop (official updates) into my
> feature branches, and them into master.

I think the standard advice is not to contaminate feature branches
with unrelated changes, whether from an upstream updates or from
other unrelated feature breanches.

You would still want to make sure that your feature branches in
work-in-progress state would work with updated upstream from time to
time, but that is much better done by having a test integration
branch you maintain with:

    : always start from the tip of upstream
    $ git fetch upstream
    $ git checkout -B develop remotes/upstream/master

    : merge everything you want
    $ git merge feature/A
    $ git merge feature/B
    ...
    $ git merge fix/Z

And you will never merge 'develop' into 'master'.  Only after you
are satisfied with a single feature (or fix), you merge that to
'master', while your other features may still be suspect.

^ permalink raw reply	[relevance 3%]

* [PATCH 3/6] merge: fix GIT_EDITOR override for commit hook
  2014-03-06 14:50  3% [PATCH 0/6] fix hunk editing with 'commit -p -m' Benoit Pierre
@ 2014-03-06 14:50  2% ` Benoit Pierre
  0 siblings, 0 replies; 200+ results
From: Benoit Pierre @ 2014-03-06 14:50 UTC (permalink / raw)
  To: git

Don't set GIT_EDITOR to ":" when calling prepare-commit-msg hook if the
editor is going to be called (e.g. with "merge -e").

Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
---
 builtin/merge.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/merge.c b/builtin/merge.c
index d2a1bfe..da7cafe 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -821,7 +821,7 @@ static void prepare_to_commit(struct commit_list *remoteheads)
 	if (0 < option_edit)
 		strbuf_commented_addf(&msg, _(merge_editor_comment), comment_line_char);
 	write_merge_msg(&msg);
-	if (run_commit_hook(1, get_index_file(), "prepare-commit-msg",
+	if (run_commit_hook(0 < option_edit, get_index_file(), "prepare-commit-msg",
 			    git_path("MERGE_MSG"), "merge", NULL))
 		abort_commit(remoteheads, NULL);
 	if (0 < option_edit) {
-- 
1.9.0

^ permalink raw reply related	[relevance 2%]

* [PATCH 0/6] fix hunk editing with 'commit -p -m'
@ 2014-03-06 14:50  3% Benoit Pierre
  2014-03-06 14:50  2% ` [PATCH 3/6] merge: fix GIT_EDITOR override for commit hook Benoit Pierre
  0 siblings, 1 reply; 200+ results
From: Benoit Pierre @ 2014-03-06 14:50 UTC (permalink / raw)
  To: git

This patch fixes the fact that hunk editing with 'commit -p -m' does not work:
GIT_EDITOR is set to ':' to indicate to hooks that no editor will be launched,
which result in the 'hunk edit' option not launching the editor (and selecting
the whole hunk).

The fix consists in deferring the GIT_EDITOR override to the hook subprocess,
like it's already done for GIT_INDEX_FILE:
- modify 'run_hook' so the first parameter is the environment to set
- add a 'run_hook_v' variant that take a va_list
- add a new 'run_commit_hook' helper (to set both GIT_EDITOR and GIT_INDEX_FILE)

N.B.: the merge builtin 'prepare-commit-msg' hook handling has also been updated
to be consistent; i.e. GIT_EDITOR will not be set to ':' if the '--edit' option
is used.

Benoit Pierre (6):
  test patch hunk editing with "commit -p -m"
  commit: fix patch hunk editing with "commit -p -m"
  merge: fix GIT_EDITOR override for commit hook
  merge hook tests: fix and update tests
  merge hook tests: fix missing '&&' in test
  merge hook tests: use 'test_must_fail' instead of '!'

 builtin/commit.c                   | 35 ++++++++++++++++++++++++++++-------
 builtin/merge.c                    |  4 ++--
 commit.h                           |  3 +++
 run-command.c                      | 27 +++++++++++++++------------
 run-command.h                      |  3 ++-
 t/t7505-prepare-commit-msg-hook.sh | 23 +++++++++++++++++++----
 t/t7513-commit_-p_-m_hunk_edit.sh  | 37 +++++++++++++++++++++++++++++++++++++
 7 files changed, 106 insertions(+), 26 deletions(-)
 create mode 100755 t/t7513-commit_-p_-m_hunk_edit.sh

-- 
1.9.0

^ permalink raw reply	[relevance 3%]

* [PATCH V2 0/7] fix hunk editing with 'commit -p -m'
@ 2014-03-10 18:49  3% Benoit Pierre
  2014-03-10 18:49  2% ` [PATCH 5/7] merge: fix GIT_EDITOR override for commit hook Benoit Pierre
  0 siblings, 1 reply; 200+ results
From: Benoit Pierre @ 2014-03-10 18:49 UTC (permalink / raw)
  To: git

This patch fixes the fact that hunk editing with 'commit -p -m' does not work:
GIT_EDITOR is set to ':' to indicate to hooks that no editor will be launched,
which result in the 'hunk edit' option not launching the editor (and selecting
the whole hunk).

The fix consists in deferring the GIT_EDITOR override to the hook subprocess,
like it's already done for GIT_INDEX_FILE:
- rename 'run_hook' to 'run_hook_le' and change the first parameter to the environment to set
- add a 'run_hook_ve' variant that take a va_list
- add a new 'run_commit_hook' helper (to set both GIT_EDITOR and GIT_INDEX_FILE)
- the old 'run_hook' functionality is available as 'run_hook_with_custom_index'
  (and marked as deprecated in the last optional patch of this series)

N.B.: the merge builtin 'prepare-commit-msg' hook handling has also been updated
to be consistent; i.e. GIT_EDITOR will not be set to ':' if the '--edit' option
is used.

Benoit Pierre (7):
  merge hook tests: fix missing '&&' in test
  merge hook tests: use 'test_must_fail' instead of '!'
  test patch hunk editing with "commit -p -m"
  commit: fix patch hunk editing with "commit -p -m"
  merge: fix GIT_EDITOR override for commit hook
  merge hook tests: fix and update tests
  run-command: mark run_hook_with_custom_index as deprecated

 builtin/checkout.c                 |  8 +++----
 builtin/clone.c                    |  4 ++--
 builtin/commit.c                   | 35 ++++++++++++++++++++++++------
 builtin/gc.c                       |  2 +-
 builtin/merge.c                    |  6 +++---
 commit.h                           |  3 +++
 run-command.c                      | 44 +++++++++++++++++++++++++++-----------
 run-command.h                      |  7 +++++-
 t/t7505-prepare-commit-msg-hook.sh | 33 ++++++++++++++++++++--------
 t/t7513-commit_-p_-m_hunk_edit.sh  | 34 +++++++++++++++++++++++++++++
 10 files changed, 137 insertions(+), 39 deletions(-)
 create mode 100755 t/t7513-commit_-p_-m_hunk_edit.sh

-- 
1.9.0

^ permalink raw reply	[relevance 3%]

* [PATCH 5/7] merge: fix GIT_EDITOR override for commit hook
  2014-03-10 18:49  3% [PATCH V2 0/7] fix hunk editing with 'commit -p -m' Benoit Pierre
@ 2014-03-10 18:49  2% ` Benoit Pierre
  0 siblings, 0 replies; 200+ results
From: Benoit Pierre @ 2014-03-10 18:49 UTC (permalink / raw)
  To: git

Don't set GIT_EDITOR to ":" when calling prepare-commit-msg hook if the
editor is going to be called (e.g. with "merge -e").

Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
---
 builtin/merge.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/merge.c b/builtin/merge.c
index 67f312d..b11a528 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -821,7 +821,7 @@ static void prepare_to_commit(struct commit_list *remoteheads)
 	if (0 < option_edit)
 		strbuf_commented_addf(&msg, _(merge_editor_comment), comment_line_char);
 	write_merge_msg(&msg);
-	if (run_commit_hook(1, get_index_file(), "prepare-commit-msg",
+	if (run_commit_hook(0 < option_edit, get_index_file(), "prepare-commit-msg",
 			    git_path("MERGE_MSG"), "merge", NULL))
 		abort_commit(remoteheads, NULL);
 	if (0 < option_edit) {
-- 
1.9.0

^ permalink raw reply related	[relevance 2%]

* What's cooking in git.git (Mar 2014, #02; Tue, 11)
@ 2014-03-11 22:12  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-11 22:12 UTC (permalink / raw)
  To: git

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

Topics that have been cooking in 'next' for 2.0 have been merged to
'master', which means we are committed to make the next one a big
release.  Kind of scary, isn't it?

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

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

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

* cc/starts-n-ends-with-endgame (2013-12-05) 1 commit
  (merged to 'next' on 2014-02-25 at 473e143)
 + strbuf: remove prefixcmp() and suffixcmp()

 Originally merged to 'next' on 2014-01-07

 Endgame for the cc/starts-n-ends-with topic; this needs to be
 evil-merged with other topics that introduce new uses of
 prefix/suffix-cmp functions.


* gj/push-more-verbose-advice (2013-11-13) 1 commit
  (merged to 'next' on 2014-02-25 at 1cd10b0)
 + push: switch default from "matching" to "simple"

 Originally merged to 'next' on 2013-11-21

 Explain 'simple' and 'matching' in "git push" advice message; the
 topmost patch is a rebase of jc/push-2.0-default-to-simple on top
 of it.


* jc/add-2.0-ignore-removal (2013-04-22) 1 commit
  (merged to 'next' on 2014-02-25 at a0d018a)
 + git add <pathspec>... defaults to "-A"

 Originally merged to 'next' on 2013-12-06

 Updated endgame for "git add <pathspec>" that defaults to "--all"
 aka "--no-ignore-removal".


* jc/core-checkstat-2.0 (2013-05-06) 1 commit
  (merged to 'next' on 2014-02-25 at 62f6aeb)
 + core.statinfo: remove as promised in Git 2.0

 Originally merged to 'next' on 2013-12-06


* jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
  (merged to 'next' on 2014-02-25 at ccfff88)
 + diff: remove "diff-files -q" in a version of Git in a distant future

 Originally merged to 'next' on 2013-12-06

 Remove deprecated "-q" option "git diff-files".


* jc/push-2.0-default-to-simple (2013-06-18) 1 commit
  (merged to 'next' on 2014-02-25 at 1f0e178)
 + push: switch default from "matching" to "simple"

 Originally merged to 'next' on 2013-12-06


* jk/run-network-tests-by-default (2014-02-14) 1 commit
  (merged to 'next' on 2014-02-25 at 62a8ad0)
 + tests: turn on network daemon tests by default

 Originally merged to 'next' on 2014-02-20

 Teach "make test" to run networking tests when possible by default.


* jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
  (merged to 'next' on 2014-02-25 at 9e5c0d2)
 + git add: -u/-A now affects the entire working tree

 Originally merged to 'next' on 2013-12-06


* ks/combine-diff (2014-02-24) 6 commits
  (merged to 'next' on 2014-02-25 at 69e5a87)
 + tests: add checking that combine-diff emits only correct paths
 + combine-diff: simplify intersect_paths() further
 + combine-diff: combine_diff_path.len is not needed anymore
 + combine-diff: optimize combine_diff_path sets intersection
 + diff test: add tests for combine-diff with orderfile
 + diffcore-order: export generic ordering interface
 (this branch is used by ks/tree-diff-nway.)

 Originally merged to 'next' on 2014-02-20

 Teach combine-diff to honour the path-output-order imposed by
 diffcore-order, and optimize how matching paths are found in
 the N-way diffs made with parents.


* nd/daemonize-gc (2014-02-10) 2 commits
  (merged to 'next' on 2014-02-25 at f592335)
 + gc: config option for running --auto in background
 + daemon: move daemonize() to libgit.a

 Originally merged to 'next' on 2014-02-20

 Allow running "gc --auto" in the background.

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

* jk/detect-push-typo-early (2014-03-05) 3 commits
 - push: detect local refspec errors early
 - match_explicit_lhs: allow a "verify only" mode
 - match_explicit: hoist refspec lhs checks into their own function

 Catch "git push $there no-such-branch" early.

 Will merge to 'next'.


* jk/diff-funcname-cpp-regex (2014-03-05) 1 commit
 - diff: simplify cpp funcname regex

 Has the discussion settled on this?


* jk/doc-deprecate-grafts (2014-03-05) 1 commit
 - docs: mark info/grafts as outdated

 Will merge to 'next'.


* rm/strchrnul-not-strlen (2014-03-10) 1 commit
 - use strchrnul() in place of strchr() and strlen()

 Will merge to 'next'.


* sh/use-hashcpy (2014-03-06) 1 commit
 - Use hashcpy() when copying object names

 Will merge to 'next'.


* jc/no-need-for-env-in-sh-scripts (2014-03-06) 1 commit
 - *.sh: drop useless use of "env"

 Will merge to 'next'.


* jc/tag-contains-with (2014-03-07) 1 commit
 - tag: grok "--with" as synonym to "--contains"

 Will merge to 'next'.


* bp/commit-p-editor (2014-03-11) 8 commits
 - run-command: mark run_hook_with_custom_index as deprecated
 - merge hook tests: fix and update tests
 - merge: fix GIT_EDITOR override for commit hook
 - commit: fix patch hunk editing with "commit -p -m"
 - SQUASH???
 - test patch hunk editing with "commit -p -m"
 - merge hook tests: use 'test_must_fail' instead of '!'
 - merge hook tests: fix missing '&&' in test


* cp/am-patch-format-doc (2014-03-11) 1 commit
 - Documentation/git-am: Document supported --patch-format options

 Will merge to 'next'.


* dm/configure-iconv-locale-charset (2014-03-11) 1 commit
 - configure.ac: link with -liconv for locale_charset()


* jk/clean-d-pathspec (2014-03-11) 2 commits
 - clean: simplify dir/not-dir logic
 - clean: respect pathspecs with "-d"

 "git clean -d pathspec" did not use pathspec correctly.

 Will merge to 'next' and later down to 'maint'.


* jk/mv-submodules-fix (2014-03-11) 2 commits
 - mv: prevent mismatched data when ignoring errors.
 - builtin/mv: fix out of bounds write

 Needs tests.


* nd/upload-pack-shallow (2014-03-11) 1 commit
 - upload-pack: send shallow info over stdin to pack-objects

 Will merge to 'next'.


* rs/grep-h-c (2014-03-11) 2 commits
 - grep: support -h (no header) with --count
 - t7810: add missing variables to tests in loop

 "git grep" learns to handle combination of "-h (no header)" and "-c
 (counts)".

 Will merge to 'next'.

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

* ap/remote-hg-skip-null-bookmarks (2014-01-02) 1 commit
 - remote-hg: do not fail on invalid bookmarks

 Reported to break tests ($gmane/240005)
 Expecting a reroll.


* jk/warn-on-object-refname-ambiguity (2014-01-09) 6 commits
 - get_sha1: drop object/refname ambiguity flag
 - get_sha1: speed up ambiguous 40-hex test
 - FIXUP: teach DO_FOR_EACH_NO_RECURSE to prime_ref_dir()
 - refs: teach for_each_ref a flag to avoid recursion
 - cat-file: fix a minor memory leak in batch_objects
 - cat-file: refactor error handling of batch_objects

 Expecting a reroll.


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* fc/completion (2013-12-09) 1 commit
 - completion: fix completion of certain aliases

 SZEDER Gábor noticed that this breaks "git -c var=val alias" and
 also suggested a better description of the change.

 Has been stalled for a while without much comments from anybody
 interested.

 Will discard.


* mo/subtree-split-updates (2013-12-10) 3 commits
 - subtree: add --edit option
 - subtree: allow --squash and --message with push
 - subtree: support split --rejoin --squash

 Has been stalled for a while without much comments from anybody
 interested.

 Will discard.


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* jc/create-directories-microopt (2013-11-11) 1 commit
 - checkout: most of the time we have good leading directories

 Of unknown value until tested on non-Linux platforms (especially
 Windows).

 Will discard.


* jt/commit-fixes-footer (2013-10-30) 1 commit
 - commit: Add -f, --fixes <commit> option to add Fixes: line

 There is an ongoing discussion around this topic; in general I am
 fairly negative on a new feature that is too narrow and prefer a
 more generic solution that can be tailored for specific needs, as
 many people stated in the thread.

 cc/interpret-trailers could be such a generic solution (although
 there don't seem to be much concensus yet).

 Will discard.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* mf/graph-show-root (2013-10-25) 1 commit
 . graph.c: mark root commit differently

 In a repository with multiple-roots, "log --graph", especially with
 "--oneline", does not give the reader enough visual cue to see
 where one line of history ended and a separate history began.

 This is the version that marks the roots 'x' when they would have
 been marked as '*'; Keshav Kini suggested an alternative of giving
 an extra blank line after every root, which I tend to think is a
 better approach to the problem.

 Will discard.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* yt/shortened-rename (2013-10-18) 2 commits
 - SQUASH??? style fixes and s/omit/shorten/ where appropriate
 - diff.c: keep arrow(=>) on show_stats()'s shortened filename part to make rename visible

 Attempts to give more weight on the fact that a filepair represents
 a rename than showing substring of the actual path when diffstat
 lines are not wide enough.

 I am not sure if that is solving a right problem, though.

 Will discard.


* rv/send-email-cache-generated-mid (2013-08-21) 2 commits
 - git-send-email: Cache generated message-ids, use them when prompting
 - git-send-email: add optional 'choices' parameter to the ask sub

 Will discard.


* rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
 - ### DONTMERGE: needs better explanation on what config they need
 - pack-refs.c: Add missing call to git_config()
 - show-ref.c: Add missing call to git_config()

 The changes themselves are probably good, but it is unclear what
 basic setting needs to be read for which exact operation.

 Will discard, tired of waiting for clarification.
 $gmane/228294


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

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


* jk/gitweb-utf8 (2013-04-08) 4 commits
 - gitweb: Fix broken blob action parameters on blob/commitdiff pages
 - gitweb: Don't append ';js=(0|1)' to external links
 - gitweb: Make feed title valid utf8
 - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch

 Various fixes to gitweb.

 Drew Northup volunteered to take a look into this ($gmane/226216)
 but nothing seems to have happened since then.

 Will discard.


* jc/show-branch (2013-06-07) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

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

* jc/stash-pop-not-popped (2014-02-26) 1 commit
 - stash pop: mention we did not drop the stash upon failing to apply

 "stash pop", upon failing to apply the stash, refrains from
 discarding the stash to avoid information loss.  Be more explicit
 in the error message.

 The wording may want to get a bit more bikeshedding, but otherwise
 it should be OK for 'next'.


* bg/install-branch-config-skip-prefix (2014-03-06) 2 commits
 - branch: use skip_prefix() in install_branch_config()
 - t3200-branch: test setting branch as own upstream

 Will merge to 'next'.


* cn/fetch-prune-overlapping-destination (2014-02-28) 2 commits
 - fetch: handle overlaping refspecs on --prune
 - fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Comments?


* dd/find-graft-with-sha1-pos (2014-02-27) 1 commit
 - commit.c: use the generic "sha1_pos" function for lookup

 Replace a hand-rolled binary search with a call to our generic
 binary search helper function.

 Will merge to 'next'.


* dd/use-alloc-grow (2014-03-03) 14 commits
 - sha1_file.c: use ALLOC_GROW() in pretend_sha1_file()
 - read-cache.c: use ALLOC_GROW() in add_index_entry()
 - builtin/mktree.c: use ALLOC_GROW() in append_to_tree()
 - attr.c: use ALLOC_GROW() in handle_attr_line()
 - dir.c: use ALLOC_GROW() in create_simplify()
 - reflog-walk.c: use ALLOC_GROW()
 - replace_object.c: use ALLOC_GROW() in register_replace_object()
 - patch-ids.c: use ALLOC_GROW() in add_commit()
 - diffcore-rename.c: use ALLOC_GROW()
 - diff.c: use ALLOC_GROW()
 - commit.c: use ALLOC_GROW() in register_commit_graft()
 - cache-tree.c: use ALLOC_GROW() in find_subtree()
 - bundle.c: use ALLOC_GROW() in add_to_ref_list()
 - builtin/pack-objects.c: use ALLOC_GROW() in check_pbase_path()

 Replace open-coded reallocation with ALLOC_GROW() macro.

 Will merge to 'next'.


* dk/skip-prefix-scan-only-once (2014-03-03) 1 commit
 - skip_prefix(): scan prefix only once

 Updaste implementation of skip_prefix() to scan only once; given
 that most "prefix" arguments to the inline function are constant
 strings whose strlen() can be determined at the compile time, this
 might actually make things worse with a compiler with sufficient
 intelligence.


* jk/doc-coding-guideline (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at c33101d)
 + CodingGuidelines: mention C whitespace rules

 Elaborate on a style niggle that has been part of "mimic existing
 code".

 Will merge to 'master'.


* jk/shallow-update-fix (2014-02-27) 2 commits
 - shallow: automatically clean up shallow tempfiles
 - shallow: use stat_validity to check for up-to-date file

 Serving objects from a shallow repository needs to write a
 temporary file to be used, but the serving upload-pack may not have
 write access to the repository which is meant to be read-only.

 Will merge to 'next'.


* jl/doc-submodule-update-checkout (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at 8cdf5cb)
 + submodule update: consistently document the '--checkout' option

 Add missing documentation for "submodule update --checkout".

 Will merge to 'master'.


* jn/bisect-coding-style (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at e1de2a5)
 + git-bisect.sh: fix a few style issues

 Will merge to 'master'.


* jn/branch-lift-unnecessary-name-length-limit (2014-03-05) 1 commit
 - branch.c: delete size check of newly tracked branch names

 Will merge to 'next'.


* mh/simplify-cache-tree-find (2014-03-05) 6 commits
 - cache_tree_find(): use path variable when passing over slashes
 - cache_tree_find(): remove early return
 - cache_tree_find(): remove redundant check
 - cache_tree_find(): fix comment formatting
 - cache_tree_find(): find the end of path component using strchrnul()
 - cache_tree_find(): remove redundant checks

 Will merge to 'next'.


* nd/strbuf-inline-styles (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at 70b5e56)
 + strbuf: style fix -- top opening bracket on a separate line

 Will merge to 'master'.


* nd/tag-version-sort (2014-02-27) 1 commit
 - tag: support --sort=<spec>

 Allow v1.9.0 sorted before v1.10.0 in "git tag --list" output.

 Will merge to 'next'.


* rt/help-pretty-prints-cmd-names (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at fc607dc)
 + help.c: rename function "pretty_print_string_list"

 Will merge to 'master'.


* sg/archive-restrict-remote (2014-02-28) 2 commits
  (merged to 'next' on 2014-03-06 at 5fe8998)
 + add uploadarchive.allowUnreachable option
 + docs: clarify remote restrictions for git-upload-archive

 Allow loosening remote "git archive" invocation security check that
 refuses to serve tree-ish not at the tip of any ref.

 Will merge to 'master'.


* sh/finish-tmp-packfile (2014-03-03) 2 commits
 - finish_tmp_packfile():use strbuf for pathname construction
 - Merge branch 'sh/write-pack-file-warning-message-fix' into sh/finish-tmp-packfile
 (this branch uses sh/write-pack-file-warning-message-fix.)

 Will merge to 'next'.


* sh/write-pack-file-warning-message-fix (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at 1470b0a)
 + write_pack_file: use correct variable in diagnostic
 (this branch is used by sh/finish-tmp-packfile.)

 A warning from "git pack-objects" were generated by referring to an
 incorrect variable when forming the filename that we had trouble
 with.

 Will merge to 'master'.


* sr/add--interactive-term-readkey (2014-03-03) 2 commits
  (merged to 'next' on 2014-03-06 at 9ca7af8)
 + git-add--interactive: warn if module for interactive.singlekey is missing
 + git-config: document interactive.singlekey requires Term::ReadKey

 Will merge to 'master'.


* ta/parse-commit-with-skip-prefix (2014-03-04) 1 commit
  (merged to 'next' on 2014-03-06 at 0244988)
 + commit.c: use skip_prefix() instead of starts_with()

 Will merge to 'master'.


* ak/gitweb-fit-image (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at ba8cb50)
 + gitweb: Avoid overflowing page body frame with large images

 Instead of allowing an <img> to be shown in whatever size, force
 scaling it to fit on the page with max-height/max-width css style
 attributes.

 Will merge to 'master'.


* da/difftool-git-files (2014-03-05) 2 commits
  (merged to 'next' on 2014-03-06 at a563ec1)
 + t7800: add a difftool test for .git-files
 + difftool: support repositories with .git-files

 "git difftool" misbehaved when the repository is bound to the
 working tree with the ".git file" mechanism, where a textual
 file ".git" tells us where it is.

 Will merge to 'master'.


* jk/commit-dates-parsing-fix (2014-03-07) 6 commits
  (merged to 'next' on 2014-03-07 at 01e9d92)
 + show_ident_date: fix tz range check
  (merged to 'next' on 2014-03-06 at dd641e2)
 + log: do not segfault on gmtime errors
 + log: handle integer overflow in timestamps
 + date: check date overflow against time_t
 + fsck: report integer overflow in author timestamps
 + t4212: test bogus timestamps with git-log

 Will merge to 'master'.


* jk/diff-filespec-cleanup (2014-02-24) 1 commit
 - diffcore.h: be explicit about the signedness of is_binary

 Will merge to 'next' and then to 'master' and 'maint'.


* jk/remote-pushremote-config-reading (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 9e71ecb)
 + remote: handle pushremote config in any order

 Will merge to 'master'.


* jk/repack-pack-keep-objects (2014-03-03) 1 commit
 - repack: add `repack.packKeptObjects` config var

 Will merge to 'next'.


* jm/stash-doc-k-for-keep (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at ddd8e48)
 + stash doc: mention short form -k in save description

 Will merge to 'master'.


* jn/am-doc-hooks (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 5c1c372)
 + am doc: add a pointer to relevant hooks

 Will merge to 'master'.


* mh/object-code-cleanup (2014-02-24) 4 commits
  (merged to 'next' on 2014-03-06 at d6b3867)
 + sha1_file.c: document a bunch of functions defined in the file
 + sha1_file_name(): declare to return a const string
 + find_pack_entry(): document last_found_pack
 + replace_object: use struct members instead of an array

 Will merge to 'master'.


* nd/i18n-progress (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 600fd3e)
 + i18n: mark all progress lines for translation

 Will merge to 'master'.


* nd/sha1-file-delta-stack-leakage-fix (2014-02-24) 1 commit
 - sha1_file: fix delta_stack memory leak in unpack_entry

 Will merge to 'next' and then to 'master' and 'maint'.


* tc/commit-dry-run-exit-status-tests (2014-02-24) 1 commit
 - demonstrate git-commit --dry-run exit code behaviour

 Will merge to 'next'.


* fc/transport-helper-fixes (2014-02-24) 7 commits
 - remote-bzr: support the new 'force' option
 - test-hg.sh: tests are now expected to pass
 - transport-helper.c: do not overwrite forced bit
 - transport-helper: check for 'forced update' message
 - transport-helper: add 'force' to 'export' helpers
 - transport-helper: don't update refs in dry-run
 - transport-helper: mismerge fix

 Updates transport-helper, fast-import and fast-export to allow the
 ref mapping and ref deletion in a way similar to the natively
 supported transports.

 Will merge to 'next'.


* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* jk/http-no-curl-easy (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at 56d3f6f)
 + http: never use curl_easy_perform

 Avoid use of the curl-easy family of functions, which interferes
 with connection reuse in a negative way.

 Will merge to 'master' and then to 'maint'.


* jk/janitorial-fixes (2014-02-18) 5 commits
  (merged to 'next' on 2014-03-06 at dac2de6)
 + open_istream(): do not dereference NULL in the error case
 + builtin/mv: don't use memory after free
 + utf8: use correct type for values in interval table
 + utf8: fix iconv error detection
 + notes-utils: handle boolean notes.rewritemode correctly

 Will merge to 'master'.


* ks/config-file-stdin (2014-02-18) 4 commits
  (merged to 'next' on 2014-03-06 at 3e77313)
 + config: teach "git config --file -" to read from the standard input
 + config: change git_config_with_options() interface
 + builtin/config.c: rename check_blob_write() -> check_write()
 + config: disallow relative include paths from blobs

 Will merge to 'master'.


* lb/contrib-contacts-looser-diff-parsing (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at 1cc4ffe)
 + git-contacts: do not fail parsing of good diffs

 Will merge to 'master'.


* mh/replace-refs-variable-rename (2014-02-28) 3 commits
  (merged to 'next' on 2014-03-06 at 70bf89b)
 + Document some functions defined in object.c
 + Add docstrings for lookup_replace_object() and do_lookup_replace_object()
 + rename read_replace_refs to check_replace_refs

 Will merge to 'master'.


* nd/commit-editor-cleanup (2014-02-25) 3 commits
 - commit: add --cleanup=scissors
 - wt-status.c: move cut-line print code out to wt_status_add_cut_line
 - wt-status.c: make cut_line[] const to shrink .data section a bit

 "git commit --cleanup=<mode>" learned a new mode, scissors.

 Will merge to 'next'.


* nd/no-more-fnmatch (2014-02-20) 4 commits
  (merged to 'next' on 2014-03-06 at f0b8f12)
 + actually remove compat fnmatch source code
 + stop using fnmatch (either native or compat)
 + Revert "test-wildmatch: add "perf" command to compare wildmatch and fnmatch"
 + use wildmatch() directly without fnmatch() wrapper

 We started using wildmatch() in place of fnmatch(3); complete the
 process and stop using fnmatch(3).

 Will merge to 'master'.


* nd/reset-setup-worktree (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at d93f20a)
 + reset: optionally setup worktree and refresh index on --mixed

 "git reset" needs to refresh the index when working in a working
 tree (it can also be used to match the index to the HEAD in an
 otherwise bare repository), but it failed to set up the working
 tree properly, causing GIT_WORK_TREE to be ignored.

 Will merge to 'master'.


* po/git-help-user-manual (2014-02-18) 1 commit
 - Provide a 'git help user-manual' route to the docbook

 I am not sure if this is even needed.

 Will discard.


* rt/links-for-asciidoctor (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at 547f13d)
 + Documentation: fix documentation AsciiDoc links for external urls

 Will merge to 'master'.


* tg/index-v4-format (2014-02-24) 3 commits
  (merged to 'next' on 2014-03-06 at d4ca5a8)
 + read-cache: add index.version config variable
 + test-lib: allow setting the index format version
 + introduce GIT_INDEX_VERSION environment variable

 Will merge to 'master'.


* tr/diff-submodule-no-reuse-worktree (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at ac8008f)
 + diff: do not reuse_worktree_file for submodules

 "git diff --external-diff" incorrectly fed the submodule directory
 in the working tree to the external diff driver when it knew it is
 the same as one of the versions being compared.

 Will merge to 'master'.


* nd/multiple-work-trees (2014-03-06) 28 commits
 - FIXUP: minimum compilation fix
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - Add new environment variable $GIT_COMMON_DIR
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - Make git_path() aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - Convert git_snpath() to strbuf_git_path()
 - path.c: make get_pathname() return strbuf instead of static buffer

 The series needs a serious review.


* ks/tree-diff-nway (2014-03-04) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
 - tree-diff: consolidate code for emitting diffs and recursion in one place
 - tree-diff: show_tree() is not needed
 - tree-diff: no need to pass match to skip_uninteresting()
 - tree-diff: no need to manually verify that there is no mode change for a path
 - combine-diff: move changed-paths scanning logic into its own function
 - combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/gitignore-trailing-whitespace (2014-03-11) 3 commits
  (merged to 'next' on 2014-03-11 at ccdba51)
 + t0008: skip trailing space test on Windows
  (merged to 'next' on 2014-03-06 at f649a34)
 + dir: ignore trailing spaces in exclude patterns
 + dir: warn about trailing spaces in exclude patterns

 Warn and then ignore trailing whitespaces in .gitignore files,
 unless they are quoted for fnmatch(3), e.g. "path\ ".

 Will merge to 'master'.


* nd/log-show-linear-break (2014-02-10) 1 commit
 - log: add --show-linear-break to help see non-linear history

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 Will merge to 'next'.


* ss/completion-rec-sub-fetch-push (2014-02-11) 1 commit
  (merged to 'next' on 2014-03-06 at b5bf463)
 + completion: teach --recurse-submodules to fetch, pull and push

 Will merge to 'master'.


* jh/note-trees-record-blobs (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at f46852d)
 + notes: disallow reusing non-blob as a note object

 "git notes -C <blob>" should not take an object that is not a blob.

 Will merge to 'master'.


* jc/check-attr-honor-working-tree (2014-02-06) 2 commits
  (merged to 'next' on 2014-03-06 at 960d679)
 + check-attr: move to the top of working tree when in non-bare repository
 + t0003: do not chdir the whole test process

 "git check-attr" when (trying to) work on a repository with a
 working tree did not work well when the working tree was specified
 via --work-tree (and obviously with --git-dir).

 The command also works in a bare repository but it reads from the
 (possibly stale, irrelevant and/or nonexistent) index, which may
 need to be fixed to read from HEAD, but that is a completely
 separate issue.  As a related tangent to this separate issue, we
 may want to also fix "check-ignore", which refuses to work in a
 bare repository, to also operate in a bare one.

 Will merge to 'master'.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* lt/request-pull (2014-02-25) 5 commits
 - request-pull: resurrect "pretty refname" feature
 - request-pull: test updates
 - request-pull: pick up tag message as before
 - request-pull: allow "local:remote" to specify names on both ends
 - request-pull: more strictly match local/remote branches

 Needs doc update but otherwise it should be ready for 'next'.


* cc/interpret-trailers (2014-03-07) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.


* bl/blame-full-history (2014-01-14) 1 commit
 - blame: new option --prefer-first to better handle merged cherry-picks

 By disabling the tree-same optimization (which is consistent with
 the default behaviour of "git log"-family of commands), make "git
 blame" sometimes produce different result from the original code.

 Because the "git blame" output can give result for each line from
 only one lineage of the history, however, this can be only useful
 when you are lucky---unlike "--full-history" of "git log"-family,
 where we can show commits from both lineages of histories with an
 equal weight.  See $gmane/240392 for more detailed discussion.

 Will discard.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.

--------------------------------------------------
[Discarded]

* tb/repack-fix-renames (2014-02-05) 1 commit
 . repack.c: rename a few variables

 Perhaps unneeded, as the longer-term plan is to drop the codeblock
 this change touches.


* ks/diff-c-with-diff-order (2014-02-03) 5 commits
 . combine-diff: simplify intersect_paths() further
 . combine-diff: combine_diff_path.len is not needed anymore
 . combine-diff: optimize combine_diff_path sets intersection
 . diff test: add tests for combine-diff with orderfile
 . diffcore-order: export generic ordering interface

 Now part of ks/combine-diff topic.


* ks/tree-diff-more (2014-02-24) 15 commits
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
 - tree-diff: consolidate code for emitting diffs and recursion in one place
 - tree-diff: show_tree() is not needed
 - tree-diff: no need to pass match to skip_uninteresting()
 - tree-diff: no need to manually verify that there is no mode change for a path
 - combine-diff: move changed-paths scanning logic into its own function
 - combine-diff: move show_log_first logic/action out of paths scanning
 (this branch is used by ks/tree-diff-nway; uses ks/combine-diff.)

 Code refactoring.

 Now part of ks/tree-diff-nway.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Mar 2014, #03; Fri, 14)
@ 2014-03-14 22:09  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-14 22:09 UTC (permalink / raw)
  To: git

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

More topics merged to 'master', some of which have been cooking
before the v1.9.0 final release.

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

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

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

* ak/gitweb-fit-image (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at ba8cb50)
 + gitweb: Avoid overflowing page body frame with large images

 Instead of allowing an <img> to be shown in whatever size, force
 scaling it to fit on the page with max-height/max-width css style
 attributes.


* da/difftool-git-files (2014-03-05) 2 commits
  (merged to 'next' on 2014-03-06 at a563ec1)
 + t7800: add a difftool test for .git-files
 + difftool: support repositories with .git-files

 "git difftool" misbehaved when the repository is bound to the
 working tree with the ".git file" mechanism, where a textual
 file ".git" tells us where it is.


* jc/check-attr-honor-working-tree (2014-02-06) 2 commits
  (merged to 'next' on 2014-03-06 at 960d679)
 + check-attr: move to the top of working tree when in non-bare repository
 + t0003: do not chdir the whole test process

 "git check-attr" when (trying to) work on a repository with a
 working tree did not work well when the working tree was specified
 via --work-tree (and obviously with --git-dir).

 The command also works in a bare repository but it reads from the
 (possibly stale, irrelevant and/or nonexistent) index, which may
 need to be fixed to read from HEAD, but that is a completely
 separate issue.  As a related tangent to this separate issue, we
 may want to also fix "check-ignore", which refuses to work in a
 bare repository, to also operate in a bare one.


* jh/note-trees-record-blobs (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at f46852d)
 + notes: disallow reusing non-blob as a note object

 "git notes -C <blob>" should not take an object that is not a blob.


* jk/commit-dates-parsing-fix (2014-03-07) 6 commits
  (merged to 'next' on 2014-03-07 at 01e9d92)
 + show_ident_date: fix tz range check
  (merged to 'next' on 2014-03-06 at dd641e2)
 + log: do not segfault on gmtime errors
 + log: handle integer overflow in timestamps
 + date: check date overflow against time_t
 + fsck: report integer overflow in author timestamps
 + t4212: test bogus timestamps with git-log

 Codepaths that parse timestamps in commit objects have been
 tightened.


* jk/doc-coding-guideline (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at c33101d)
 + CodingGuidelines: mention C whitespace rules

 Elaborate on a style niggle that has been part of "mimic existing
 code".


* jk/http-no-curl-easy (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at 56d3f6f)
 + http: never use curl_easy_perform

 Uses of curl's "multi" interface and "easy" interface do not mix
 well when we attempt to reuse outgoing connections.  Teach the RPC
 over http code, used in the smart HTTP transport, not to use the
 "easy" interface.


* jk/janitorial-fixes (2014-02-18) 5 commits
  (merged to 'next' on 2014-03-06 at dac2de6)
 + open_istream(): do not dereference NULL in the error case
 + builtin/mv: don't use memory after free
 + utf8: use correct type for values in interval table
 + utf8: fix iconv error detection
 + notes-utils: handle boolean notes.rewritemode correctly


* jk/remote-pushremote-config-reading (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 9e71ecb)
 + remote: handle pushremote config in any order

 "git push" did not pay attention to branch.*.pushremote if it is
 defined earlier than remote.pushdefault; the order of these two
 variables in the configuration file should not matter, but it did
 by mistake.


* jl/doc-submodule-update-checkout (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at 8cdf5cb)
 + submodule update: consistently document the '--checkout' option

 Add missing documentation for "submodule update --checkout".


* jm/stash-doc-k-for-keep (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at ddd8e48)
 + stash doc: mention short form -k in save description


* jn/am-doc-hooks (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 5c1c372)
 + am doc: add a pointer to relevant hooks


* jn/bisect-coding-style (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at e1de2a5)
 + git-bisect.sh: fix a few style issues


* ks/config-file-stdin (2014-02-18) 4 commits
  (merged to 'next' on 2014-03-06 at 3e77313)
 + config: teach "git config --file -" to read from the standard input
 + config: change git_config_with_options() interface
 + builtin/config.c: rename check_blob_write() -> check_write()
 + config: disallow relative include paths from blobs

 "git config" learned to read from the standard input when "-" is
 given as the value to its "--file" parameter (attempting an
 operation to update the configuration in the standard input of
 course is rejected).


* lb/contrib-contacts-looser-diff-parsing (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at 1cc4ffe)
 + git-contacts: do not fail parsing of good diffs


* mh/object-code-cleanup (2014-02-24) 4 commits
  (merged to 'next' on 2014-03-06 at d6b3867)
 + sha1_file.c: document a bunch of functions defined in the file
 + sha1_file_name(): declare to return a const string
 + find_pack_entry(): document last_found_pack
 + replace_object: use struct members instead of an array


* mh/replace-refs-variable-rename (2014-02-28) 3 commits
  (merged to 'next' on 2014-03-06 at 70bf89b)
 + Document some functions defined in object.c
 + Add docstrings for lookup_replace_object() and do_lookup_replace_object()
 + rename read_replace_refs to check_replace_refs


* nd/gitignore-trailing-whitespace (2014-03-11) 3 commits
  (merged to 'next' on 2014-03-11 at ccdba51)
 + t0008: skip trailing space test on Windows
  (merged to 'next' on 2014-03-06 at f649a34)
 + dir: ignore trailing spaces in exclude patterns
 + dir: warn about trailing spaces in exclude patterns

 Trailing whitespaces in .gitignore files, unless they are quoted
 for fnmatch(3), e.g. "path\ ", are warned and ignored.  Strictly
 speaking, this is a backward incompatible change, but very unlikely
 to bite any sane user and adjusting should be obvious and easy.


* nd/i18n-progress (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 600fd3e)
 + i18n: mark all progress lines for translation

 The progress indicators from various time-consuming commands have
 been marked for i18n/l10n.


* nd/no-more-fnmatch (2014-02-20) 4 commits
  (merged to 'next' on 2014-03-06 at f0b8f12)
 + actually remove compat fnmatch source code
 + stop using fnmatch (either native or compat)
 + Revert "test-wildmatch: add "perf" command to compare wildmatch and fnmatch"
 + use wildmatch() directly without fnmatch() wrapper

 We started using wildmatch() in place of fnmatch(3); complete the
 process and stop using fnmatch(3).


* nd/reset-setup-worktree (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at d93f20a)
 + reset: optionally setup worktree and refresh index on --mixed

 "git reset" needs to refresh the index when working in a working
 tree (it can also be used to match the index to the HEAD in an
 otherwise bare repository), but it failed to set up the working
 tree properly, causing GIT_WORK_TREE to be ignored.


* nd/strbuf-inline-styles (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at 70b5e56)
 + strbuf: style fix -- top opening bracket on a separate line


* rt/help-pretty-prints-cmd-names (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at fc607dc)
 + help.c: rename function "pretty_print_string_list"


* rt/links-for-asciidoctor (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at 547f13d)
 + Documentation: fix documentation AsciiDoc links for external urls


* sg/archive-restrict-remote (2014-02-28) 2 commits
  (merged to 'next' on 2014-03-06 at 5fe8998)
 + add uploadarchive.allowUnreachable option
 + docs: clarify remote restrictions for git-upload-archive

 Allow loosening remote "git archive" invocation security check that
 refuses to serve tree-ish not at the tip of any ref.


* sh/write-pack-file-warning-message-fix (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at 1470b0a)
 + write_pack_file: use correct variable in diagnostic
 (this branch is used by sh/finish-tmp-packfile.)

 A warning from "git pack-objects" were generated by referring to an
 incorrect variable when forming the filename that we had trouble
 with.


* sr/add--interactive-term-readkey (2014-03-03) 2 commits
  (merged to 'next' on 2014-03-06 at 9ca7af8)
 + git-add--interactive: warn if module for interactive.singlekey is missing
 + git-config: document interactive.singlekey requires Term::ReadKey


* ss/completion-rec-sub-fetch-push (2014-02-11) 1 commit
  (merged to 'next' on 2014-03-06 at b5bf463)
 + completion: teach --recurse-submodules to fetch, pull and push


* ta/parse-commit-with-skip-prefix (2014-03-04) 1 commit
  (merged to 'next' on 2014-03-06 at 0244988)
 + commit.c: use skip_prefix() instead of starts_with()


* tg/index-v4-format (2014-02-24) 3 commits
  (merged to 'next' on 2014-03-06 at d4ca5a8)
 + read-cache: add index.version config variable
 + test-lib: allow setting the index format version
 + introduce GIT_INDEX_VERSION environment variable


* tr/diff-submodule-no-reuse-worktree (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at ac8008f)
 + diff: do not reuse_worktree_file for submodules

 "git diff --external-diff" incorrectly fed the submodule directory
 in the working tree to the external diff driver when it knew it is
 the same as one of the versions being compared.

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

* jn/wt-status (2014-03-12) 4 commits
  (merged to 'next' on 2014-03-14 at 8ac862c)
 + wt-status: lift the artificual "at least 20 columns" floor
 + wt-status: i18n of section labels
 + wt-status: extract the code to compute width for labels
 + wt-status: make full label string to be subject to l10n

 Unify the codepaths that format new/modified/changed sections and
 conflicted paths in the "git status" output and make it possible to
 properly internationalize their output.

 Will merge to 'master'.


* es/sh-i18n-envsubst (2014-03-12) 1 commit
  (merged to 'next' on 2014-03-14 at e4d5603)
 + sh-i18n--envsubst: retire unused string_list_member()

 Will merge to 'master'.


* mh/remove-subtree-long-pathname-fix (2014-03-13) 2 commits
 - entry.c: fix possible buffer overflow in remove_subtree()
 - checkout_entry(): use the strbuf throughout the function

 Will merge to 'next'.


* nd/indent-fix-connect-c (2014-03-13) 1 commit
 - connect.c: SP after "}", not TAB

 Will merge to 'next'.


* pw/branch-config-message (2014-03-13) 1 commit
 - install_branch_config(): simplify verbose messages logic

 Among the many attempts to microproject #8, this seemed to be the
 most "done" among the table based ones; I however tend to think
 that the original with minimum refactoring would be easier to read.


* ys/fsck-commit-parsing (2014-03-13) 2 commits
 - fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant
 - fsck.c:fsck_ident(): ident points at a const string


* jk/warn-on-object-refname-ambiguity (2014-03-13) 4 commits
 - rev-list: disable object/refname ambiguity check with --stdin
 - cat-file: restore warn_on_object_refname_ambiguity flag
 - cat-file: fix a minor memory leak in batch_objects
 - cat-file: refactor error handling of batch_objects

 Will merge to 'next'.

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

* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* ap/remote-hg-skip-null-bookmarks (2014-01-02) 1 commit
 - remote-hg: do not fail on invalid bookmarks

 Reported to break tests ($gmane/240005)
 Expecting a reroll.


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* fc/completion (2013-12-09) 1 commit
 - completion: fix completion of certain aliases

 SZEDER Gábor noticed that this breaks "git -c var=val alias" and
 also suggested a better description of the change.

 Has been stalled for a while without much comments from anybody
 interested.

 Will discard.


* mo/subtree-split-updates (2013-12-10) 3 commits
 - subtree: add --edit option
 - subtree: allow --squash and --message with push
 - subtree: support split --rejoin --squash

 Has been stalled for a while without much comments from anybody
 interested.

 Will discard.


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* jc/create-directories-microopt (2013-11-11) 1 commit
 - checkout: most of the time we have good leading directories

 Of unknown value until tested on non-Linux platforms (especially
 Windows).

 Will discard.


* jt/commit-fixes-footer (2013-10-30) 1 commit
 - commit: Add -f, --fixes <commit> option to add Fixes: line

 There is an ongoing discussion around this topic; in general I am
 fairly negative on a new feature that is too narrow and prefer a
 more generic solution that can be tailored for specific needs, as
 many people stated in the thread.

 cc/interpret-trailers could be such a generic solution (although
 there don't seem to be much concensus yet).

 Will discard.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* mf/graph-show-root (2013-10-25) 1 commit
 . graph.c: mark root commit differently

 In a repository with multiple-roots, "log --graph", especially with
 "--oneline", does not give the reader enough visual cue to see
 where one line of history ended and a separate history began.

 This is the version that marks the roots 'x' when they would have
 been marked as '*'; Keshav Kini suggested an alternative of giving
 an extra blank line after every root, which I tend to think is a
 better approach to the problem.

 Will discard.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* yt/shortened-rename (2013-10-18) 2 commits
 - SQUASH??? style fixes and s/omit/shorten/ where appropriate
 - diff.c: keep arrow(=>) on show_stats()'s shortened filename part to make rename visible

 Attempts to give more weight on the fact that a filepair represents
 a rename than showing substring of the actual path when diffstat
 lines are not wide enough.

 I am not sure if that is solving a right problem, though.

 Will discard.


* rv/send-email-cache-generated-mid (2013-08-21) 2 commits
 - git-send-email: Cache generated message-ids, use them when prompting
 - git-send-email: add optional 'choices' parameter to the ask sub

 Will discard.


* rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
 - ### DONTMERGE: needs better explanation on what config they need
 - pack-refs.c: Add missing call to git_config()
 - show-ref.c: Add missing call to git_config()

 The changes themselves are probably good, but it is unclear what
 basic setting needs to be read for which exact operation.

 Will discard, tired of waiting for clarification.
 $gmane/228294


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

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


* jk/gitweb-utf8 (2013-04-08) 4 commits
 - gitweb: Fix broken blob action parameters on blob/commitdiff pages
 - gitweb: Don't append ';js=(0|1)' to external links
 - gitweb: Make feed title valid utf8
 - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch

 Various fixes to gitweb.

 Drew Northup volunteered to take a look into this ($gmane/226216)
 but nothing seems to have happened since then.

 Will discard.


* jc/show-branch (2013-06-07) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

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

* jk/detect-push-typo-early (2014-03-05) 3 commits
  (merged to 'next' on 2014-03-12 at da522e7)
 + push: detect local refspec errors early
 + match_explicit_lhs: allow a "verify only" mode
 + match_explicit: hoist refspec lhs checks into their own function

 Catch "git push $there no-such-branch" early.

 Will merge to 'master'.


* jk/diff-funcname-cpp-regex (2014-03-05) 1 commit
 - diff: simplify cpp funcname regex

 Has the discussion settled on this?


* jk/doc-deprecate-grafts (2014-03-05) 1 commit
  (merged to 'next' on 2014-03-12 at 8d34916)
 + docs: mark info/grafts as outdated

 Will merge to 'master'.


* rm/strchrnul-not-strlen (2014-03-10) 1 commit
  (merged to 'next' on 2014-03-12 at fad8f12)
 + use strchrnul() in place of strchr() and strlen()

 Will merge to 'master'.


* sh/use-hashcpy (2014-03-06) 1 commit
  (merged to 'next' on 2014-03-12 at cf2735a)
 + Use hashcpy() when copying object names

 Will merge to 'master'.


* jc/no-need-for-env-in-sh-scripts (2014-03-06) 1 commit
  (merged to 'next' on 2014-03-12 at dfd3234)
 + *.sh: drop useless use of "env"

 Will merge to 'master'.


* jc/tag-contains-with (2014-03-07) 1 commit
  (merged to 'next' on 2014-03-12 at e120644)
 + tag: grok "--with" as synonym to "--contains"

 Will merge to 'master'.


* bp/commit-p-editor (2014-03-11) 8 commits
 - run-command: mark run_hook_with_custom_index as deprecated
 - merge hook tests: fix and update tests
 - merge: fix GIT_EDITOR override for commit hook
 - commit: fix patch hunk editing with "commit -p -m"
 - SQUASH???
 - test patch hunk editing with "commit -p -m"
 - merge hook tests: use 'test_must_fail' instead of '!'
 - merge hook tests: fix missing '&&' in test


* cp/am-patch-format-doc (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-12 at 17c3ada)
 + Documentation/git-am: Document supported --patch-format options

 Will merge to 'master'.


* dm/configure-iconv-locale-charset (2014-03-11) 1 commit
 - configure.ac: link with -liconv for locale_charset()


* jk/clean-d-pathspec (2014-03-11) 2 commits
  (merged to 'next' on 2014-03-12 at aaae6ee)
 + clean: simplify dir/not-dir logic
 + clean: respect pathspecs with "-d"

 "git clean -d pathspec" did not use the given pathspec correctly
 and ended up cleaning too much.

 Will merge to 'master' and then later to 'maint'.


* jk/mv-submodules-fix (2014-03-11) 2 commits
 - mv: prevent mismatched data when ignoring errors.
 - builtin/mv: fix out of bounds write

 Needs tests.


* nd/upload-pack-shallow (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-14 at d40b8c3)
 + upload-pack: send shallow info over stdin to pack-objects

 Will merge to 'master'.


* rs/grep-h-c (2014-03-11) 2 commits
  (merged to 'next' on 2014-03-12 at 0341bd8)
 + grep: support -h (no header) with --count
 + t7810: add missing variables to tests in loop

 "git grep" learns to handle combination of "-h (no header)" and "-c
 (counts)".

 Will merge to 'master'.


* jc/stash-pop-not-popped (2014-02-26) 1 commit
  (merged to 'next' on 2014-03-14 at 9ba1de8)
 + stash pop: mention we did not drop the stash upon failing to apply

 "stash pop", upon failing to apply the stash, refrains from
 discarding the stash to avoid information loss.  Be more explicit
 in the error message.

 The wording may want to get a bit more bikeshedding.

 Will merge to 'master'.


* bg/install-branch-config-skip-prefix (2014-03-06) 2 commits
  (merged to 'next' on 2014-03-12 at 9d04564)
 + branch: use skip_prefix() in install_branch_config()
 + t3200-branch: test setting branch as own upstream

 Will merge to 'master'.


* cn/fetch-prune-overlapping-destination (2014-02-28) 2 commits
 - fetch: handle overlaping refspecs on --prune
 - fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Comments?


* dd/find-graft-with-sha1-pos (2014-02-27) 1 commit
  (merged to 'next' on 2014-03-12 at 0383d59)
 + commit.c: use the generic "sha1_pos" function for lookup

 Replace a hand-rolled binary search with a call to our generic
 binary search helper function.

 Will merge to 'master'.


* dd/use-alloc-grow (2014-03-03) 14 commits
  (merged to 'next' on 2014-03-12 at ed82259)
 + sha1_file.c: use ALLOC_GROW() in pretend_sha1_file()
 + read-cache.c: use ALLOC_GROW() in add_index_entry()
 + builtin/mktree.c: use ALLOC_GROW() in append_to_tree()
 + attr.c: use ALLOC_GROW() in handle_attr_line()
 + dir.c: use ALLOC_GROW() in create_simplify()
 + reflog-walk.c: use ALLOC_GROW()
 + replace_object.c: use ALLOC_GROW() in register_replace_object()
 + patch-ids.c: use ALLOC_GROW() in add_commit()
 + diffcore-rename.c: use ALLOC_GROW()
 + diff.c: use ALLOC_GROW()
 + commit.c: use ALLOC_GROW() in register_commit_graft()
 + cache-tree.c: use ALLOC_GROW() in find_subtree()
 + bundle.c: use ALLOC_GROW() in add_to_ref_list()
 + builtin/pack-objects.c: use ALLOC_GROW() in check_pbase_path()

 Replace open-coded reallocation with ALLOC_GROW() macro.

 Will merge to 'master'.


* dk/skip-prefix-scan-only-once (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-14 at ff375fc)
 + skip_prefix(): scan prefix only once

 Update implementation of skip_prefix() to scan only once; given
 that most "prefix" arguments to the inline function are constant
 strings whose strlen() can be determined at the compile time, this
 might actually make things worse with a compiler with sufficient
 intelligence.

 Will merge to 'master'.


* jk/shallow-update-fix (2014-02-27) 2 commits
  (merged to 'next' on 2014-03-12 at ce5abbf)
 + shallow: automatically clean up shallow tempfiles
 + shallow: use stat_validity to check for up-to-date file

 Serving objects from a shallow repository needs to write a
 temporary file to be used, but the serving upload-pack may not have
 write access to the repository which is meant to be read-only.

 Will merge to 'master'.


* jn/branch-lift-unnecessary-name-length-limit (2014-03-05) 1 commit
  (merged to 'next' on 2014-03-12 at bd0fb0e)
 + branch.c: delete size check of newly tracked branch names

 Will merge to 'master'.


* mh/simplify-cache-tree-find (2014-03-05) 6 commits
  (merged to 'next' on 2014-03-12 at c29aa24)
 + cache_tree_find(): use path variable when passing over slashes
 + cache_tree_find(): remove early return
 + cache_tree_find(): remove redundant check
 + cache_tree_find(): fix comment formatting
 + cache_tree_find(): find the end of path component using strchrnul()
 + cache_tree_find(): remove redundant checks

 Will merge to 'master'.


* nd/tag-version-sort (2014-02-27) 1 commit
  (merged to 'next' on 2014-03-14 at 4e7f714)
 + tag: support --sort=<spec>

 Allow v1.9.0 sorted before v1.10.0 in "git tag --list" output.

 Will merge to 'master'.


* sh/finish-tmp-packfile (2014-03-03) 2 commits
  (merged to 'next' on 2014-03-12 at 410d45d)
 + finish_tmp_packfile():use strbuf for pathname construction
 + Merge branch 'sh/write-pack-file-warning-message-fix' into sh/finish-tmp-packfile

 Will merge to 'master'.


* jk/diff-filespec-cleanup (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at 184c2aa)
 + diffcore.h: be explicit about the signedness of is_binary

 Portability fix to a topic already in v1.9

 Will merge to 'master' and then later to 'maint'.


* jk/repack-pack-keep-objects (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-12 at 3fd2335)
 + repack: add `repack.packKeptObjects` config var

 Will merge to 'master'.


* nd/sha1-file-delta-stack-leakage-fix (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at 9d1a621)
 + sha1_file: fix delta_stack memory leak in unpack_entry

 Fix a small leak in the delta stack used when resolving a long
 delta chain at runtime.

 Will merge to 'master' and then later to 'maint'.


* tc/commit-dry-run-exit-status-tests (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at b839886)
 + demonstrate git-commit --dry-run exit code behaviour


* fc/transport-helper-fixes (2014-02-24) 7 commits
  (merged to 'next' on 2014-03-12 at 5d7c69a)
 + remote-bzr: support the new 'force' option
 + test-hg.sh: tests are now expected to pass
 + transport-helper.c: do not overwrite forced bit
 + transport-helper: check for 'forced update' message
 + transport-helper: add 'force' to 'export' helpers
 + transport-helper: don't update refs in dry-run
 + transport-helper: mismerge fix

 Updates transport-helper, fast-import and fast-export to allow the
 ref mapping and ref deletion in a way similar to the natively
 supported transports.

 Will merge to 'master'.


* nd/commit-editor-cleanup (2014-02-25) 3 commits
 - commit: add --cleanup=scissors
 - wt-status.c: move cut-line print code out to wt_status_add_cut_line
 - wt-status.c: make cut_line[] const to shrink .data section a bit

 "git commit --cleanup=<mode>" learned a new mode, scissors.

 Will merge to 'next'.


* po/git-help-user-manual (2014-02-18) 1 commit
 - Provide a 'git help user-manual' route to the docbook

 I am not sure if this is even needed.

 Will discard.


* nd/multiple-work-trees (2014-03-06) 28 commits
 - FIXUP: minimum compilation fix
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - Add new environment variable $GIT_COMMON_DIR
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - Make git_path() aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - Convert git_snpath() to strbuf_git_path()
 - path.c: make get_pathname() return strbuf instead of static buffer

 The series needs a serious review.


* ks/tree-diff-nway (2014-03-04) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
 - tree-diff: consolidate code for emitting diffs and recursion in one place
 - tree-diff: show_tree() is not needed
 - tree-diff: no need to pass match to skip_uninteresting()
 - tree-diff: no need to manually verify that there is no mode change for a path
 - combine-diff: move changed-paths scanning logic into its own function
 - combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/log-show-linear-break (2014-02-10) 1 commit
 - log: add --show-linear-break to help see non-linear history

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 Will hold.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* lt/request-pull (2014-03-13) 6 commits
 - request-pull: documentation updates
 - request-pull: resurrect "pretty refname" feature
 - request-pull: test updates
 - request-pull: pick up tag message as before
 - request-pull: allow "local:remote" to specify names on both ends
 - request-pull: more strictly match local/remote branches

 Will merge to 'next'.


* cc/interpret-trailers (2014-03-07) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.


* bl/blame-full-history (2014-01-14) 1 commit
 - blame: new option --prefer-first to better handle merged cherry-picks

 By disabling the tree-same optimization (which is consistent with
 the default behaviour of "git log"-family of commands), make "git
 blame" sometimes produce different result from the original code.

 Because the "git blame" output can give result for each line from
 only one lineage of the history, however, this can be only useful
 when you are lucky---unlike "--full-history" of "git log"-family,
 where we can show commits from both lineages of histories with an
 equal weight.  See $gmane/240392 for more detailed discussion.

 Will discard.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.

--------------------------------------------------
[Discarded]

* tb/repack-fix-renames (2014-02-05) 1 commit
 . repack.c: rename a few variables

 Perhaps unneeded, as the longer-term plan is to drop the codeblock
 this change touches.


* ks/diff-c-with-diff-order (2014-02-03) 5 commits
 . combine-diff: simplify intersect_paths() further
 . combine-diff: combine_diff_path.len is not needed anymore
 . combine-diff: optimize combine_diff_path sets intersection
 . diff test: add tests for combine-diff with orderfile
 . diffcore-order: export generic ordering interface

 Now part of ks/combine-diff topic.


* ks/tree-diff-more (2014-02-24) 15 commits
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
 - tree-diff: consolidate code for emitting diffs and recursion in one place
 - tree-diff: show_tree() is not needed
 - tree-diff: no need to pass match to skip_uninteresting()
 - tree-diff: no need to manually verify that there is no mode change for a path
 - combine-diff: move changed-paths scanning logic into its own function
 - combine-diff: move show_log_first logic/action out of paths scanning
 (this branch is used by ks/tree-diff-nway; uses ks/combine-diff.)

 Code refactoring.

 Now part of ks/tree-diff-nway.

^ permalink raw reply	[relevance 3%]

* Re: [PATCH 0/6] Fix misuses of "nor"
  @ 2014-03-15  8:56  2% ` Duy Nguyen
  2014-03-15 16:56  0%   ` Justin Lebar
  0 siblings, 1 reply; 200+ results
From: Duy Nguyen @ 2014-03-15  8:56 UTC (permalink / raw)
  To: Justin Lebar; +Cc: Git Mailing List, Richard Hansen, Jiang Xin

On Sat, Mar 15, 2014 at 3:41 PM, Justin Lebar <jlebar@google.com> wrote:
> I got annoyed by git's awkward use of "nor" in man pages and in git add -p, so
> I went ahead and audited all uses of "nor" in the tree.  One might be able to
> argue that some of the uses I've changed are technically acceptable, but that's
> a pretty low bar to set for ourselves.  I aimed to make everything both correct
> and idiomatic.

I guess I'm cc'd because I made a few of those or/nor mistakes. Being
a non-native English speaker I'm not really qualified to review this.
But I suggest that you merge "Fix misuses of "nor" outside comments"
and "Tests: Fix muses of "nor"" into one. Otherwise you break the test
suite at 5/6 (and 6/6 fixes it, but breaking the test suite at any
commit is not very bisect-friendly).
-- 
Duy

^ permalink raw reply	[relevance 2%]

* Re: [PATCH 0/6] Fix misuses of "nor"
  2014-03-15  8:56  2% ` Duy Nguyen
@ 2014-03-15 16:56  0%   ` Justin Lebar
  0 siblings, 0 replies; 200+ results
From: Justin Lebar @ 2014-03-15 16:56 UTC (permalink / raw)
  To: Duy Nguyen; +Cc: Git Mailing List, Richard Hansen, Jiang Xin

> I guess I'm cc'd because I made a few of those or/nor mistakes.

I actually didn't look that closely at the blame; I cc'ed you because
you were a top contributor in a few of the directories I was touching.

> I suggest that you merge "Fix misuses of "nor" outside comments"
> and "Tests: Fix muses of "nor"" into one. Otherwise you break the test
> suite at 5/6

Sure thing, will do.

There's a similar incompatibility with the l10n change and "Fix
misuses of "nor" outside comments": The former references strings
changed in the latter.  Should I merge these, or should I enforce a
particular ordering between these patches?  (Right now the l10n patch
comes before the string changes in the code, but that's probably wrong
now that I think about it.)

> Being a non-native English speaker I'm not really qualified to review this.

FWIW even being a native English speaker I was unsure about a few of
the changes myself.  This caused me to finally break down and order
Garner's Modern American Usage, which I hope will reveal all.  :)

-Justin

On Sat, Mar 15, 2014 at 1:56 AM, Duy Nguyen <pclouds@gmail.com> wrote:
> On Sat, Mar 15, 2014 at 3:41 PM, Justin Lebar <jlebar@google.com> wrote:
>> I got annoyed by git's awkward use of "nor" in man pages and in git add -p, so
>> I went ahead and audited all uses of "nor" in the tree.  One might be able to
>> argue that some of the uses I've changed are technically acceptable, but that's
>> a pretty low bar to set for ourselves.  I aimed to make everything both correct
>> and idiomatic.
>
> I guess I'm cc'd because I made a few of those or/nor mistakes. Being
> a non-native English speaker I'm not really qualified to review this.
> But I suggest that you merge "Fix misuses of "nor" outside comments"
> and "Tests: Fix muses of "nor"" into one. Otherwise you break the test
> suite at 5/6 (and 6/6 fixes it, but breaking the test suite at any
> commit is not very bisect-friendly).
> --
> Duy

^ permalink raw reply	[relevance 0%]

* [PATCH 5/7] merge: fix GIT_EDITOR override for commit hook
  @ 2014-03-15 21:42  2%   ` Benoit Pierre
  0 siblings, 0 replies; 200+ results
From: Benoit Pierre @ 2014-03-15 21:42 UTC (permalink / raw)
  To: git

Don't set GIT_EDITOR to ":" when calling prepare-commit-msg hook if the
editor is going to be called (e.g. with "merge -e").

Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
---
 builtin/merge.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/merge.c b/builtin/merge.c
index bdf6655..e15d0e1 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -824,7 +824,7 @@ static void prepare_to_commit(struct commit_list *remoteheads)
 	if (0 < option_edit)
 		strbuf_commented_addf(&msg, _(merge_editor_comment), comment_line_char);
 	write_merge_msg(&msg);
-	if (run_commit_hook(1, get_index_file(), "prepare-commit-msg",
+	if (run_commit_hook(0 < option_edit, get_index_file(), "prepare-commit-msg",
 			    git_path("MERGE_MSG"), "merge", NULL))
 		abort_commit(remoteheads, NULL);
 	if (0 < option_edit) {
-- 
1.9.0

^ permalink raw reply related	[relevance 2%]

* [PATCH 5/7] merge: fix GIT_EDITOR override for commit hook
  @ 2014-03-18 10:00  2%   ` Benoit Pierre
  0 siblings, 0 replies; 200+ results
From: Benoit Pierre @ 2014-03-18 10:00 UTC (permalink / raw)
  To: git

Don't set GIT_EDITOR to ":" when calling prepare-commit-msg hook if the
editor is going to be called (e.g. with "merge -e").

Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
---
 builtin/merge.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/merge.c b/builtin/merge.c
index bdf6655..e15d0e1 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -824,7 +824,7 @@ static void prepare_to_commit(struct commit_list *remoteheads)
 	if (0 < option_edit)
 		strbuf_commented_addf(&msg, _(merge_editor_comment), comment_line_char);
 	write_merge_msg(&msg);
-	if (run_commit_hook(1, get_index_file(), "prepare-commit-msg",
+	if (run_commit_hook(0 < option_edit, get_index_file(), "prepare-commit-msg",
 			    git_path("MERGE_MSG"), "merge", NULL))
 		abort_commit(remoteheads, NULL);
 	if (0 < option_edit) {
-- 
1.9.0

^ permalink raw reply related	[relevance 2%]

* What's cooking in git.git (Mar 2014, #04; Thu, 20)
@ 2014-03-20 21:09  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-20 21:09 UTC (permalink / raw)
  To: git

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

More topics merged to 'master', some of which have been cooking
before the v1.9.0 final release, many of them fallouts from GSoC
microprojects.  Many topics that have been marked to be discarded
are finally discarded.

Quite a few topics are still outside 'pu' and I suspect some of the
larger ones deserve deeper reviews to help moving them to 'next'.
In principle, I'd prefer to keep any large topic that touch core
part of the system cooking in 'next' for at least a full cycle, and
the sooner they get merged to 'next', the better.  Help is greatly
appreciated.

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

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

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

* bg/install-branch-config-skip-prefix (2014-03-06) 2 commits
  (merged to 'next' on 2014-03-12 at 9d04564)
 + branch: use skip_prefix() in install_branch_config()
 + t3200-branch: test setting branch as own upstream


* dd/find-graft-with-sha1-pos (2014-02-27) 1 commit
  (merged to 'next' on 2014-03-12 at 0383d59)
 + commit.c: use the generic "sha1_pos" function for lookup

 Replace a hand-rolled binary search with a call to our generic
 binary search helper function.


* dd/use-alloc-grow (2014-03-03) 14 commits
  (merged to 'next' on 2014-03-12 at ed82259)
 + sha1_file.c: use ALLOC_GROW() in pretend_sha1_file()
 + read-cache.c: use ALLOC_GROW() in add_index_entry()
 + builtin/mktree.c: use ALLOC_GROW() in append_to_tree()
 + attr.c: use ALLOC_GROW() in handle_attr_line()
 + dir.c: use ALLOC_GROW() in create_simplify()
 + reflog-walk.c: use ALLOC_GROW()
 + replace_object.c: use ALLOC_GROW() in register_replace_object()
 + patch-ids.c: use ALLOC_GROW() in add_commit()
 + diffcore-rename.c: use ALLOC_GROW()
 + diff.c: use ALLOC_GROW()
 + commit.c: use ALLOC_GROW() in register_commit_graft()
 + cache-tree.c: use ALLOC_GROW() in find_subtree()
 + bundle.c: use ALLOC_GROW() in add_to_ref_list()
 + builtin/pack-objects.c: use ALLOC_GROW() in check_pbase_path()

 Replace open-coded reallocation with ALLOC_GROW() macro.


* fc/transport-helper-fixes (2014-02-24) 7 commits
  (merged to 'next' on 2014-03-12 at 5d7c69a)
 + remote-bzr: support the new 'force' option
 + test-hg.sh: tests are now expected to pass
 + transport-helper.c: do not overwrite forced bit
 + transport-helper: check for 'forced update' message
 + transport-helper: add 'force' to 'export' helpers
 + transport-helper: don't update refs in dry-run
 + transport-helper: mismerge fix

 Updates transport-helper, fast-import and fast-export to allow the
 ref mapping and ref deletion in a way similar to the natively
 supported transports.


* jc/no-need-for-env-in-sh-scripts (2014-03-06) 1 commit
  (merged to 'next' on 2014-03-12 at dfd3234)
 + *.sh: drop useless use of "env"


* jc/tag-contains-with (2014-03-07) 1 commit
  (merged to 'next' on 2014-03-12 at e120644)
 + tag: grok "--with" as synonym to "--contains"


* jk/clean-d-pathspec (2014-03-11) 2 commits
  (merged to 'next' on 2014-03-12 at aaae6ee)
 + clean: simplify dir/not-dir logic
 + clean: respect pathspecs with "-d"

 "git clean -d pathspec" did not use the given pathspec correctly
 and ended up cleaning too much.


* jk/detect-push-typo-early (2014-03-05) 3 commits
  (merged to 'next' on 2014-03-12 at da522e7)
 + push: detect local refspec errors early
 + match_explicit_lhs: allow a "verify only" mode
 + match_explicit: hoist refspec lhs checks into their own function

 Catch "git push $there no-such-branch" early.


* jk/diff-filespec-cleanup (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at 184c2aa)
 + diffcore.h: be explicit about the signedness of is_binary

 Portability fix to a topic already in v1.9


* jk/doc-deprecate-grafts (2014-03-05) 1 commit
  (merged to 'next' on 2014-03-12 at 8d34916)
 + docs: mark info/grafts as outdated


* jk/repack-pack-keep-objects (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-12 at 3fd2335)
 + repack: add `repack.packKeptObjects` config var


* jn/branch-lift-unnecessary-name-length-limit (2014-03-05) 1 commit
  (merged to 'next' on 2014-03-12 at bd0fb0e)
 + branch.c: delete size check of newly tracked branch names


* mh/simplify-cache-tree-find (2014-03-05) 6 commits
  (merged to 'next' on 2014-03-12 at c29aa24)
 + cache_tree_find(): use path variable when passing over slashes
 + cache_tree_find(): remove early return
 + cache_tree_find(): remove redundant check
 + cache_tree_find(): fix comment formatting
 + cache_tree_find(): find the end of path component using strchrnul()
 + cache_tree_find(): remove redundant checks


* nd/sha1-file-delta-stack-leakage-fix (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at 9d1a621)
 + sha1_file: fix delta_stack memory leak in unpack_entry

 Fix a small leak in the delta stack used when resolving a long
 delta chain at runtime.


* rm/strchrnul-not-strlen (2014-03-10) 1 commit
  (merged to 'next' on 2014-03-12 at fad8f12)
 + use strchrnul() in place of strchr() and strlen()


* rs/grep-h-c (2014-03-11) 2 commits
  (merged to 'next' on 2014-03-12 at 0341bd8)
 + grep: support -h (no header) with --count
 + t7810: add missing variables to tests in loop

 "git grep" learns to handle combination of "-h (no header)" and "-c
 (counts)".


* sh/finish-tmp-packfile (2014-03-03) 2 commits
  (merged to 'next' on 2014-03-12 at 410d45d)
 + finish_tmp_packfile():use strbuf for pathname construction
 + Merge branch 'sh/write-pack-file-warning-message-fix' into sh/finish-tmp-packfile


* sh/use-hashcpy (2014-03-06) 1 commit
  (merged to 'next' on 2014-03-12 at cf2735a)
 + Use hashcpy() when copying object names


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

* jk/lib-terminal-lazy (2014-03-14) 1 commit
  (merged to 'next' on 2014-03-20 at 5de832f)
 + t/lib-terminal: make TTY a lazy prerequisite

 The test helper lib-terminal always run an actual test_expect_* when
 included, which screwed up with the use of skil-all that may have to
 be done later.

 Will merge to 'master'.


* ah/doc-gitk-config (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-20 at d671b60)
 + Documentation/gitk: document the location of the configulation file

 Will merge to 'master'.


* as/grep-fullname-config (2014-03-20) 1 commit
 - grep: add grep.fullName config variable


* fr/add-interactive-argv-array (2014-03-18) 1 commit
  (merged to 'next' on 2014-03-20 at 9d65f3d)
 + add: use struct argv_array in run_add_interactive()

 Will merge to 'master'.


* jk/pack-bitmap (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at bba6246)
 + pack-objects: turn off bitmaps when skipping objects

 Instead of dying when asked to (re)pack with the reachability
 bitmap when a bitmap cannot be built, just (re)pack without
 producing a bitmap in such a case, with a warning.

 Will merge to 'master', and probably to 'maint' later.


* jk/pack-bitmap-progress (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-20 at c7a83f9)
 + pack-objects: show reused packfile objects in "Counting objects"
 + pack-objects: show progress for reused packfiles

 The progress output while repacking and transferring objects showed
 an apparent large silence while writing the objects out of existing
 packfiles, when the reachability bitmap was in use.

 Will merge to 'master', and probably to 'maint' later.


* jk/subtree-prefix (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 81367fa)
 + subtree: initialize "prefix" variable

 A stray environment variable $prefix could have leaked into and
 affected the behaviour of the "subtree" script.

 Will merge to 'master'.


* nd/gc-aggressive (2014-03-17) 4 commits
 - gc --aggressive: three phase repacking
 - gc --aggressive: make --depth configurable
 - pack-objects: support --keep
 - environment.c: fix constness for odb_pack_keep()


* nd/index-pack-error-message (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 4d722ac)
 + index-pack: report error using the correct variable

 Will merge to 'master'.


* rr/doc-merge-strategies (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at d31f415)
 + Documentation/merge-strategies: avoid hyphenated commands

 Will merge to 'master'.


* us/printf-not-echo (2014-03-18) 2 commits
  (merged to 'next' on 2014-03-20 at 41205c8)
 + test-lib.sh: do not "echo" caller-supplied strings
 + rebase -i: do not "echo" random user-supplied strings

 Will merge to 'master'.


* bb/diff-no-index-dotdot (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-20 at 352f48c)
 + diff-no-index: replace manual "."/".." check with is_dot_or_dotdot()
 + diff-no-index: rename read_directory()

 Will merge to 'master'.


* bg/rebase-off-of-previous-branch (2014-03-19) 1 commit
 - rebase: allow "-" short-hand for the previous branch

 Will merge to 'next'.


* dt/tests-with-env-not-subshell (2014-03-19) 1 commit
 - tests: use "env" to run commands with temporary env-var settings


* hs/simplify-bit-setting-in-fsck-tree (2014-03-20) 1 commit
 - fsck: use bitwise-or assignment operator to set flag


* mm/status-porcelain-format-i18n-fix (2014-03-20) 2 commits
 - SQUASH??? fix decl-after-stmt and simplify
 - status: disable translation when --porcelain is used


* ss/test-on-mingw-rsync-path-no-absolute (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-20 at 2b7b95d)
 + t5510: Do not use $(pwd) when fetching / pushing / pulling via rsync

 Will merge to 'master'.


* sz/mingw-index-pack-threaded (2014-03-19) 1 commit
 - Enable index-pack threading in msysgit.

 Still under discussion among Windows folks

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

* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


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

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


* jc/show-branch (2013-06-07) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

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

* ap/remote-hg-skip-null-bookmarks (2014-03-19) 1 commit
 - remote-hg: do not fail on invalid bookmarks

 Will merge to 'next'.


* jn/wt-status (2014-03-12) 4 commits
  (merged to 'next' on 2014-03-14 at 8ac862c)
 + wt-status: lift the artificual "at least 20 columns" floor
 + wt-status: i18n of section labels
 + wt-status: extract the code to compute width for labels
 + wt-status: make full label string to be subject to l10n

 Unify the codepaths that format new/modified/changed sections and
 conflicted paths in the "git status" output and make it possible to
 properly internationalize their output.

 Will merge to 'master'.


* es/sh-i18n-envsubst (2014-03-12) 1 commit
  (merged to 'next' on 2014-03-14 at e4d5603)
 + sh-i18n--envsubst: retire unused string_list_member()

 Will merge to 'master'.


* mh/remove-subtree-long-pathname-fix (2014-03-13) 2 commits
  (merged to 'next' on 2014-03-17 at 68cc994)
 + entry.c: fix possible buffer overflow in remove_subtree()
 + checkout_entry(): use the strbuf throughout the function

 Will merge to 'master'.


* nd/indent-fix-connect-c (2014-03-13) 1 commit
  (merged to 'next' on 2014-03-17 at a109efc)
 + connect.c: SP after "}", not TAB

 Will merge to 'master'.


* pw/branch-config-message (2014-03-13) 1 commit
 - install_branch_config(): simplify verbose messages logic

 Among the many attempts to microproject #8, this seemed to be the
 most "done" among the table based ones; I however tend to think
 that the original with minimum refactoring would be easier to read.


* ys/fsck-commit-parsing (2014-03-19) 2 commits
 - fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant
 - fsck.c:fsck_ident(): ident points at a const string

 Will merge to 'next'.


* jk/warn-on-object-refname-ambiguity (2014-03-13) 4 commits
  (merged to 'next' on 2014-03-17 at 3f8e98e)
 + rev-list: disable object/refname ambiguity check with --stdin
 + cat-file: restore warn_on_object_refname_ambiguity flag
 + cat-file: fix a minor memory leak in batch_objects
 + cat-file: refactor error handling of batch_objects

 Will merge to 'master'.


* jk/diff-funcname-cpp-regex (2014-03-05) 1 commit
 - diff: simplify cpp funcname regex

 It appears that Peff and Hannes agreed to base the final version
 not on this one, but Hannes's version.


* bp/commit-p-editor (2014-03-18) 7 commits
 - run-command: mark run_hook_with_custom_index as deprecated
 - merge hook tests: fix and update tests
 - merge: fix GIT_EDITOR override for commit hook
 - commit: fix patch hunk editing with "commit -p -m"
 - test patch hunk editing with "commit -p -m"
 - merge hook tests: use 'test_must_fail' instead of '!'
 - merge hook tests: fix missing '&&' in test

 Will merge to 'next'.


* cp/am-patch-format-doc (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7437c77)
 + Documentation/git-am: typofix
  (merged to 'next' on 2014-03-12 at 17c3ada)
 + Documentation/git-am: Document supported --patch-format options

 Will merge to 'master'.


* dm/configure-iconv-locale-charset (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-20 at 4443bfd)
 + configure.ac: link with -liconv for locale_charset()

 Will merge to 'master'.


* jk/mv-submodules-fix (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7cae3b1)
 + mv: prevent mismatched data when ignoring errors.
 + builtin/mv: fix out of bounds write

 Will merge to 'master'.


* nd/upload-pack-shallow (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-14 at d40b8c3)
 + upload-pack: send shallow info over stdin to pack-objects

 Will merge to 'master'.


* jc/stash-pop-not-popped (2014-02-26) 1 commit
  (merged to 'next' on 2014-03-14 at 9ba1de8)
 + stash pop: mention we did not drop the stash upon failing to apply

 "stash pop", upon failing to apply the stash, refrains from
 discarding the stash to avoid information loss.  Be more explicit
 in the error message.

 The wording may want to get a bit more bikeshedding.

 Will merge to 'master'.


* cn/fetch-prune-overlapping-destination (2014-02-28) 2 commits
 - fetch: handle overlaping refspecs on --prune
 - fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Comments?


* dk/skip-prefix-scan-only-once (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-14 at ff375fc)
 + skip_prefix(): scan prefix only once

 Update implementation of skip_prefix() to scan only once; given
 that most "prefix" arguments to the inline function are constant
 strings whose strlen() can be determined at the compile time, this
 might actually make things worse with a compiler with sufficient
 intelligence.

 Will merge to 'master'.


* jk/shallow-update-fix (2014-03-17) 3 commits
  (merged to 'next' on 2014-03-17 at 011942e)
 + shallow: verify shallow file after taking lock
  (merged to 'next' on 2014-03-12 at ce5abbf)
 + shallow: automatically clean up shallow tempfiles
 + shallow: use stat_validity to check for up-to-date file

 Serving objects from a shallow repository needs to write a
 temporary file to be used, but the serving upload-pack may not have
 write access to the repository which is meant to be read-only.

 Will merge to 'master'.


* nd/tag-version-sort (2014-02-27) 1 commit
  (merged to 'next' on 2014-03-14 at 4e7f714)
 + tag: support --sort=<spec>

 Allow v1.9.0 sorted before v1.10.0 in "git tag --list" output.

 Will merge to 'master'.


* tc/commit-dry-run-exit-status-tests (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at b839886)
 + demonstrate git-commit --dry-run exit code behaviour


* nd/commit-editor-cleanup (2014-02-25) 3 commits
  (merged to 'next' on 2014-03-17 at 986605d)
 + commit: add --cleanup=scissors
 + wt-status.c: move cut-line print code out to wt_status_add_cut_line
 + wt-status.c: make cut_line[] const to shrink .data section a bit

 "git commit --cleanup=<mode>" learned a new mode, scissors.


* nd/multiple-work-trees (2014-03-17) 28 commits
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - $GIT_COMMON_DIR: a new environment variable
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - git_path(): be aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - git_snpath(): retire and replace with strbuf_git_path()
 - path.c: make get_pathname() call sites return const char *
 - path.c: make get_pathname() return strbuf instead of static buffer

 Replaced with v5 (with minor fixes already squashed in).


* ks/tree-diff-nway (2014-03-04) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
 - tree-diff: consolidate code for emitting diffs and recursion in one place
 - tree-diff: show_tree() is not needed
 - tree-diff: no need to pass match to skip_uninteresting()
 - tree-diff: no need to manually verify that there is no mode change for a path
 - combine-diff: move changed-paths scanning logic into its own function
 - combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/log-show-linear-break (2014-03-20) 2 commits
 - log: add --show-linear-break to help see non-linear history
 - object.h: centralize object flag allocation

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 The implementation seems to have got worse compared to the previous
 round.  Will hold.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* lt/request-pull (2014-03-13) 6 commits
  (merged to 'next' on 2014-03-17 at 21a598d)
 + request-pull: documentation updates
 + request-pull: resurrect "pretty refname" feature
 + request-pull: test updates
 + request-pull: pick up tag message as before
 + request-pull: allow "local:remote" to specify names on both ends
 + request-pull: more strictly match local/remote branches

 Discard the accumulated "heuristics" to guess from which branch the
 result wants to be pulled from and make sure what the end user
 specified is not second-guessed by "git request-pull", to avoid
 mistakes.

 Will merge to 'master'.


* cc/interpret-trailers (2014-03-07) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Mar 2014, #05; Mon, 24)
@ 2014-03-24 20:27  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-24 20:27 UTC (permalink / raw)
  To: git

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

More topics merged to 'master', some of which have been cooking
before the v1.9.0 final release, many of them fallouts from GSoC
microprojects.  Many topics that have been marked to be discarded
are finally discarded.

There seems to be a crasher somewhere in the new pack bitmap
codepath that was introduced recently. I am hoping that the root
cause is found and fixed soonish.  Other than that, things look more
or less calm on the 'next' and up.

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

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

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

* dk/skip-prefix-scan-only-once (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-14 at ff375fc)
 + skip_prefix(): scan prefix only once

 Update implementation of skip_prefix() to scan only once; given
 that most "prefix" arguments to the inline function are constant
 strings whose strlen() can be determined at the compile time, this
 might actually make things worse with a compiler with sufficient
 intelligence.


* es/sh-i18n-envsubst (2014-03-12) 1 commit
  (merged to 'next' on 2014-03-14 at e4d5603)
 + sh-i18n--envsubst: retire unused string_list_member()


* jc/stash-pop-not-popped (2014-02-26) 1 commit
  (merged to 'next' on 2014-03-14 at 9ba1de8)
 + stash pop: mention we did not drop the stash upon failing to apply

 "stash pop", upon failing to apply the stash, refrains from
 discarding the stash to avoid information loss.  Be more explicit
 in the error message.

 The wording may want to get a bit more bikeshedding.


* jk/shallow-update-fix (2014-03-17) 3 commits
  (merged to 'next' on 2014-03-17 at 011942e)
 + shallow: verify shallow file after taking lock
  (merged to 'next' on 2014-03-12 at ce5abbf)
 + shallow: automatically clean up shallow tempfiles
 + shallow: use stat_validity to check for up-to-date file

 Serving objects from a shallow repository needs to write a new file
 to hold the temporary shallow boundaries but it was not cleaned
 when we exit due to die() or a signal.


* jn/wt-status (2014-03-12) 4 commits
  (merged to 'next' on 2014-03-14 at 8ac862c)
 + wt-status: lift the artificual "at least 20 columns" floor
 + wt-status: i18n of section labels
 + wt-status: extract the code to compute width for labels
 + wt-status: make full label string to be subject to l10n

 Unify the codepaths that format new/modified/changed sections and
 conflicted paths in the "git status" output and make it possible to
 properly internationalize their output.


* lt/request-pull (2014-03-13) 6 commits
  (merged to 'next' on 2014-03-17 at 21a598d)
 + request-pull: documentation updates
 + request-pull: resurrect "pretty refname" feature
 + request-pull: test updates
 + request-pull: pick up tag message as before
 + request-pull: allow "local:remote" to specify names on both ends
 + request-pull: more strictly match local/remote branches

 Discard the accumulated "heuristics" to guess from which branch the
 result wants to be pulled from and make sure what the end user
 specified is not second-guessed by "git request-pull", to avoid
 mistakes.


* nd/tag-version-sort (2014-02-27) 1 commit
  (merged to 'next' on 2014-03-14 at 4e7f714)
 + tag: support --sort=<spec>

 Allow v1.9.0 sorted before v1.10.0 in "git tag --list" output.


* nd/upload-pack-shallow (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-14 at d40b8c3)
 + upload-pack: send shallow info over stdin to pack-objects

 Serving objects from a shallow repository needs to write a
 temporary file to be used, but the serving upload-pack may not have
 write access to the repository which is meant to be read-only.
 Instead feed these temporary shallow bounds from the standard input
 of pack-objects so that we do not have to use a temporary file.


* tc/commit-dry-run-exit-status-tests (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at b839886)
 + demonstrate git-commit --dry-run exit code behaviour

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

* ca/doc-config-third-party (2014-03-21) 1 commit
 - config.txt: third-party tools may and do use their own variables

 Will merge to 'next'.


* dw/doc-status-no-longer-shows-pound-prefix (2014-03-21) 1 commit
 - doc: status, remove leftover statement about '#' prefix

 Will merge to 'next'.


* js/userdiff-cc (2014-03-21) 10 commits
 - userdiff: have 'cpp' hunk header pattern catch more C++ anchor points
 - t4018: test cases showing that the cpp pattern misses many anchor points
 - t4018: test cases for the built-in cpp pattern
 - t4018: reduce test files for pattern compilation tests
 - t4018: convert custom pattern test to the new infrastructure
 - t4018: convert java pattern test to the new infrastructure
 - t4018: convert perl pattern tests to the new infrastructure
 - t4018: an infrastructure to test hunk headers
 - userdiff: support unsigned and long long suffixes of integer constants
 - userdiff: support C++ ->* and .* operators in the word regexp

 Improves the pattern to match the hunk-header for C/C++.

 Will merge to 'next'.


* dp/makefile-charset-lib-doc (2014-03-23) 1 commit
 - Makefile: describe CHARSET_LIB better

 Will merge to 'next'.


* ib/rev-parse-parseopt-argh (2014-03-24) 5 commits
 - parse-options: make sure argh string does not have SP or _
 - update-index: teach --cacheinfo a new syntax "mode,sha1,path"
 - parse-options: multi-word argh should use dash to separate words
 - t1502: protect runs of SPs used in the indentation
 - rev-parse --parseopt: option argument name hints

 Teaches the "rev-parse --parseopt" mechanism used by scripted
 Porcelains to parse command line options and give help text how to
 supply argv-help (the placeholder string for an option parameter,
 e.g. "key-id" in "--gpg-sign=<key-id>").

 Will merge to 'next'.


* rs/pickaxe-i (2014-03-24) 10 commits
 - pickaxe: simplify kwset loop in contains()
 - pickaxe: call strlen only when necessary in diffcore_pickaxe_count()
 - pickaxe: move pickaxe() after pickaxe_match()
 - pickaxe: merge diffcore_pickaxe_grep() and diffcore_pickaxe_count() into diffcore_pickaxe()
 - pickaxe: honor -i when used with -S and --pickaxe-regex
 - t4209: use helper functions to test --author
 - t4209: use helper functions to test --grep
 - t4209: factor out helper function test_log_icase()
 - t4209: factor out helper function test_log()
 - t4209: set up expectations up front

 Allow the options -i/--regexp-ignore-case, --pickaxe-regex, and -S
 to be used together and work as expected to perform a pickaxe
 search using case-insensitive regular expression matching.

 Will merge to 'next'.


* an/branch-config-message (2014-03-24) 1 commit
 - branch.c: install_branch_config: simplify if chain

 Will merge to 'next'.

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

* sz/mingw-index-pack-threaded (2014-03-19) 1 commit
 - Enable index-pack threading in msysgit.

 Still under discussion among Windows folks


* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


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

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


* jc/show-branch (2013-06-07) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

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

* jk/lib-terminal-lazy (2014-03-14) 1 commit
  (merged to 'next' on 2014-03-20 at 5de832f)
 + t/lib-terminal: make TTY a lazy prerequisite

 The test helper lib-terminal always run an actual test_expect_* when
 included, which screwed up with the use of skil-all that may have to
 be done later.

 Will merge to 'master'.


* ah/doc-gitk-config (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-20 at d671b60)
 + Documentation/gitk: document the location of the configulation file

 Will merge to 'master'.


* as/grep-fullname-config (2014-03-20) 1 commit
 - grep: add grep.fullName config variable

 Will merge to 'next'.


* fr/add-interactive-argv-array (2014-03-18) 1 commit
  (merged to 'next' on 2014-03-20 at 9d65f3d)
 + add: use struct argv_array in run_add_interactive()

 Will merge to 'master'.


* jk/pack-bitmap (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at bba6246)
 + pack-objects: turn off bitmaps when skipping objects

 Instead of dying when asked to (re)pack with the reachability
 bitmap when a bitmap cannot be built, just (re)pack without
 producing a bitmap in such a case, with a warning.

 Will merge to 'master', and probably to 'maint' later.


* jk/pack-bitmap-progress (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-20 at c7a83f9)
 + pack-objects: show reused packfile objects in "Counting objects"
 + pack-objects: show progress for reused packfiles

 The progress output while repacking and transferring objects showed
 an apparent large silence while writing the objects out of existing
 packfiles, when the reachability bitmap was in use.

 Will merge to 'master', and probably to 'maint' later.


* jk/subtree-prefix (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 81367fa)
 + subtree: initialize "prefix" variable

 A stray environment variable $prefix could have leaked into and
 affected the behaviour of the "subtree" script.

 Will merge to 'master'.


* nd/gc-aggressive (2014-03-17) 4 commits
 - gc --aggressive: three phase repacking
 - gc --aggressive: make --depth configurable
 - pack-objects: support --keep
 - environment.c: fix constness for odb_pack_keep()


* nd/index-pack-error-message (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 4d722ac)
 + index-pack: report error using the correct variable

 Will merge to 'master'.


* rr/doc-merge-strategies (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at d31f415)
 + Documentation/merge-strategies: avoid hyphenated commands

 Will merge to 'master'.


* us/printf-not-echo (2014-03-18) 2 commits
  (merged to 'next' on 2014-03-20 at 41205c8)
 + test-lib.sh: do not "echo" caller-supplied strings
 + rebase -i: do not "echo" random user-supplied strings

 Will merge to 'master'.


* bb/diff-no-index-dotdot (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-20 at 352f48c)
 + diff-no-index: replace manual "."/".." check with is_dot_or_dotdot()
 + diff-no-index: rename read_directory()

 Will merge to 'master'.


* bg/rebase-off-of-previous-branch (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-21 at 916b759)
 + rebase: allow "-" short-hand for the previous branch

 Will merge to 'master'.


* dt/tests-with-env-not-subshell (2014-03-19) 1 commit
 - tests: use "env" to run commands with temporary env-var settings
 (this branch is used by jk/tests-cleanup.)

 Will merge to 'next'.


* hs/simplify-bit-setting-in-fsck-tree (2014-03-20) 1 commit
 - fsck: use bitwise-or assignment operator to set flag

 Will merge to 'next'.


* mm/status-porcelain-format-i18n-fix (2014-03-20) 2 commits
 - SQUASH??? fix decl-after-stmt and simplify
 - status: disable translation when --porcelain is used

 Will merge to 'next' after squashing in the fixup.


* ss/test-on-mingw-rsync-path-no-absolute (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-20 at 2b7b95d)
 + t5510: Do not use $(pwd) when fetching / pushing / pulling via rsync

 Will merge to 'master'.


* ap/remote-hg-skip-null-bookmarks (2014-03-21) 2 commits
 - SQUASH???
 - remote-hg: do not fail on invalid bookmarks

 Will merge to 'next' after squashing in the fix.
 Thanks Torsten for testing.


* mh/remove-subtree-long-pathname-fix (2014-03-13) 2 commits
  (merged to 'next' on 2014-03-17 at 68cc994)
 + entry.c: fix possible buffer overflow in remove_subtree()
 + checkout_entry(): use the strbuf throughout the function

 Will merge to 'master'.


* nd/indent-fix-connect-c (2014-03-13) 1 commit
  (merged to 'next' on 2014-03-17 at a109efc)
 + connect.c: SP after "}", not TAB

 Will merge to 'master'.


* ys/fsck-commit-parsing (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-21 at 2728983)
 + fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant
 + fsck.c:fsck_ident(): ident points at a const string

 Will merge to 'master'.


* jk/warn-on-object-refname-ambiguity (2014-03-13) 4 commits
  (merged to 'next' on 2014-03-17 at 3f8e98e)
 + rev-list: disable object/refname ambiguity check with --stdin
 + cat-file: restore warn_on_object_refname_ambiguity flag
 + cat-file: fix a minor memory leak in batch_objects
 + cat-file: refactor error handling of batch_objects

 Will merge to 'master'.


* bp/commit-p-editor (2014-03-18) 7 commits
  (merged to 'next' on 2014-03-21 at 23b6b06)
 + run-command: mark run_hook_with_custom_index as deprecated
 + merge hook tests: fix and update tests
 + merge: fix GIT_EDITOR override for commit hook
 + commit: fix patch hunk editing with "commit -p -m"
 + test patch hunk editing with "commit -p -m"
 + merge hook tests: use 'test_must_fail' instead of '!'
 + merge hook tests: fix missing '&&' in test

 When it is not necessary to edit a commit log message (e.g. "git
 commit -m" is given a message without specifying "-e"), we used to
 disable the spawning of the editor by overriding GIT_EDITOR, but
 this means all the uses of the editor, other than to edit the
 commit log message, are also affected.

 Will merge to 'master'.


* cp/am-patch-format-doc (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7437c77)
 + Documentation/git-am: typofix
  (merged to 'next' on 2014-03-12 at 17c3ada)
 + Documentation/git-am: Document supported --patch-format options

 Will merge to 'master'.


* dm/configure-iconv-locale-charset (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-20 at 4443bfd)
 + configure.ac: link with -liconv for locale_charset()

 Will merge to 'master'.


* jk/mv-submodules-fix (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7cae3b1)
 + mv: prevent mismatched data when ignoring errors.
 + builtin/mv: fix out of bounds write

 Will merge to 'master'.


* cn/fetch-prune-overlapping-destination (2014-03-24) 3 commits
 - SQUASH??? style and leak fix
 - fetch: handle overlaping refspecs on --prune
 - fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Since I didn't get any responses to my earlier "Comments?", I ended
 up reading it myself again and found a small leak.

 Hoping to be able to merge a fix for this issue soonish.


* nd/commit-editor-cleanup (2014-02-25) 3 commits
  (merged to 'next' on 2014-03-17 at 986605d)
 + commit: add --cleanup=scissors
 + wt-status.c: move cut-line print code out to wt_status_add_cut_line
 + wt-status.c: make cut_line[] const to shrink .data section a bit

 "git commit --cleanup=<mode>" learned a new mode, scissors.

 Will merge to 'master'.


* nd/multiple-work-trees (2014-03-17) 28 commits
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - $GIT_COMMON_DIR: a new environment variable
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - git_path(): be aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - git_snpath(): retire and replace with strbuf_git_path()
 - path.c: make get_pathname() call sites return const char *
 - path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.

 Reported to break on a worktree whose leading path component has a
 symbolic link in it ($gmane/244822).


* ks/tree-diff-nway (2014-03-20) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
  (merged to 'next' on 2014-03-21 at d872679)
 + tree-diff: consolidate code for emitting diffs and recursion in one place
 + tree-diff: show_tree() is not needed
 + tree-diff: no need to pass match to skip_uninteresting()
 + tree-diff: no need to manually verify that there is no mode change for a path
 + combine-diff: move changed-paths scanning logic into its own function
 + combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/log-show-linear-break (2014-03-20) 2 commits
 - log: add --show-linear-break to help see non-linear history
 - object.h: centralize object flag allocation

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 The implementation seems to have got worse compared to the previous
 round.  Will hold.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* cc/interpret-trailers (2014-03-07) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.

--------------------------------------------------
[Discarded]

* jk/diff-funcname-cpp-regex (2014-03-05) 1 commit
 . diff: simplify cpp funcname regex

 Superceded.


* pw/branch-config-message (2014-03-13) 1 commit
 . install_branch_config(): simplify verbose messages logic

 Among the many attempts to microproject #8, this seemed to be the
 most "done" among the table based ones; I however tend to think
 that the original with minimum refactoring would be easier to read.

 an/branch-config-message supersedes this topic.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Mar 2014, #06; Tue, 25)
@ 2014-03-25 20:18  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-25 20:18 UTC (permalink / raw)
  To: git

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

More topics merged to 'master', many of which are fallouts from GSoC
microprojects.

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

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

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

* bb/diff-no-index-dotdot (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-20 at 352f48c)
 + diff-no-index: replace manual "."/".." check with is_dot_or_dotdot()
 + diff-no-index: rename read_directory()


* cp/am-patch-format-doc (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7437c77)
 + Documentation/git-am: typofix
  (merged to 'next' on 2014-03-12 at 17c3ada)
 + Documentation/git-am: Document supported --patch-format options


* dm/configure-iconv-locale-charset (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-20 at 4443bfd)
 + configure.ac: link with -liconv for locale_charset()


* jk/lib-terminal-lazy (2014-03-14) 1 commit
  (merged to 'next' on 2014-03-20 at 5de832f)
 + t/lib-terminal: make TTY a lazy prerequisite

 The test helper lib-terminal always run an actual test_expect_* when
 included, which screwed up with the use of skil-all that may have to
 be done later.


* jk/mv-submodules-fix (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7cae3b1)
 + mv: prevent mismatched data when ignoring errors.
 + builtin/mv: fix out of bounds write

 "git mv" that moves a submodule forgot to adjust the array that
 uses to keep track of which submodules were to be moved to update
 its configuration.


* jk/warn-on-object-refname-ambiguity (2014-03-13) 4 commits
  (merged to 'next' on 2014-03-17 at 3f8e98e)
 + rev-list: disable object/refname ambiguity check with --stdin
 + cat-file: restore warn_on_object_refname_ambiguity flag
 + cat-file: fix a minor memory leak in batch_objects
 + cat-file: refactor error handling of batch_objects


* mh/remove-subtree-long-pathname-fix (2014-03-13) 2 commits
  (merged to 'next' on 2014-03-17 at 68cc994)
 + entry.c: fix possible buffer overflow in remove_subtree()
 + checkout_entry(): use the strbuf throughout the function

 Length limit for the pathname used when removing a path in a deep
 subdirectory has been removed to avoid buffer overflows.


* nd/commit-editor-cleanup (2014-02-25) 3 commits
  (merged to 'next' on 2014-03-17 at 986605d)
 + commit: add --cleanup=scissors
 + wt-status.c: move cut-line print code out to wt_status_add_cut_line
 + wt-status.c: make cut_line[] const to shrink .data section a bit

 "git commit --cleanup=<mode>" learned a new mode, scissors.


* nd/indent-fix-connect-c (2014-03-13) 1 commit
  (merged to 'next' on 2014-03-17 at a109efc)
 + connect.c: SP after "}", not TAB


* nd/index-pack-error-message (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 4d722ac)
 + index-pack: report error using the correct variable

 "git index-pack" used a wrong variable to name the keep-file in an
 error message when the file cannot be written or closed.


* rr/doc-merge-strategies (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at d31f415)
 + Documentation/merge-strategies: avoid hyphenated commands

 There were a few instances of 'git-foo' remaining in the
 documentation that should have been spelled 'git foo'.


* ss/test-on-mingw-rsync-path-no-absolute (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-20 at 2b7b95d)
 + t5510: Do not use $(pwd) when fetching / pushing / pulling via rsync


* us/printf-not-echo (2014-03-18) 2 commits
  (merged to 'next' on 2014-03-20 at 41205c8)
 + test-lib.sh: do not "echo" caller-supplied strings
 + rebase -i: do not "echo" random user-supplied strings

 "rebase -i" produced a broken insn sheet when the title of a commit
 happened to contain '\n' (or ended with '\c') due to a careless use
 of 'echo'.

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

* jk/tests-cleanup (2014-03-21) 12 commits
 - t0001: drop subshells just for "cd"
 - t0001: drop useless subshells
 - t0001: use test_must_fail
 - t0001: use test_config_global
 - t0001: use test_path_is_*
 - t0001: make symlink reinit test more careful
 - t: prefer "git config --file" to GIT_CONFIG
 - t: prefer "git config --file" to GIT_CONFIG with test_must_fail
 - t: stop using GIT_CONFIG to cross repo boundaries
 - t: drop useless sane_unset GIT_* calls
 - t/test-lib: drop redundant unset of GIT_CONFIG
 - t/Makefile: stop setting GIT_CONFIG
 (this branch uses dt/tests-with-env-not-subshell.)

 Will merge to 'next'.

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

* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* sz/mingw-index-pack-threaded (2014-03-19) 1 commit
 - Enable index-pack threading in msysgit.

 Still under discussion among Windows folks


* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


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

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


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

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

* ca/doc-config-third-party (2014-03-21) 1 commit
  (merged to 'next' on 2014-03-25 at 731e011)
 + config.txt: third-party tools may and do use their own variables

 Will merge to 'master'.


* dw/doc-status-no-longer-shows-pound-prefix (2014-03-21) 1 commit
  (merged to 'next' on 2014-03-25 at 2683eb6)
 + doc: status, remove leftover statement about '#' prefix

 Will merge to 'master'.


* js/userdiff-cc (2014-03-21) 10 commits
  (merged to 'next' on 2014-03-25 at 8c0e585)
 + userdiff: have 'cpp' hunk header pattern catch more C++ anchor points
 + t4018: test cases showing that the cpp pattern misses many anchor points
 + t4018: test cases for the built-in cpp pattern
 + t4018: reduce test files for pattern compilation tests
 + t4018: convert custom pattern test to the new infrastructure
 + t4018: convert java pattern test to the new infrastructure
 + t4018: convert perl pattern tests to the new infrastructure
 + t4018: an infrastructure to test hunk headers
 + userdiff: support unsigned and long long suffixes of integer constants
 + userdiff: support C++ ->* and .* operators in the word regexp

 Improves the pattern to match the hunk-header for C/C++.

 Will merge to 'master'.


* dp/makefile-charset-lib-doc (2014-03-23) 1 commit
  (merged to 'next' on 2014-03-25 at b32e3ad)
 + Makefile: describe CHARSET_LIB better

 Will merge to 'master'.


* ib/rev-parse-parseopt-argh (2014-03-24) 5 commits
 - parse-options: make sure argh string does not have SP or _
 - update-index: teach --cacheinfo a new syntax "mode,sha1,path"
 - parse-options: multi-word argh should use dash to separate words
  (merged to 'next' on 2014-03-25 at d9083ed)
 + t1502: protect runs of SPs used in the indentation
 + rev-parse --parseopt: option argument name hints

 Teaches the "rev-parse --parseopt" mechanism used by scripted
 Porcelains to parse command line options and give help text how to
 supply argv-help (the placeholder string for an option parameter,
 e.g. "key-id" in "--gpg-sign=<key-id>").

 Will merge the bottom part to 'master'.


* rs/pickaxe-i (2014-03-24) 10 commits
  (merged to 'next' on 2014-03-25 at 3b6f21f)
 + pickaxe: simplify kwset loop in contains()
 + pickaxe: call strlen only when necessary in diffcore_pickaxe_count()
 + pickaxe: move pickaxe() after pickaxe_match()
 + pickaxe: merge diffcore_pickaxe_grep() and diffcore_pickaxe_count() into diffcore_pickaxe()
 + pickaxe: honor -i when used with -S and --pickaxe-regex
 + t4209: use helper functions to test --author
 + t4209: use helper functions to test --grep
 + t4209: factor out helper function test_log_icase()
 + t4209: factor out helper function test_log()
 + t4209: set up expectations up front

 Allow the options -i/--regexp-ignore-case, --pickaxe-regex, and -S
 to be used together and work as expected to perform a pickaxe
 search using case-insensitive regular expression matching.

 Will merge to 'master'.


* an/branch-config-message (2014-03-24) 1 commit
 - branch.c: install_branch_config: simplify if chain

 Will merge to 'next'.


* ah/doc-gitk-config (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-20 at d671b60)
 + Documentation/gitk: document the location of the configulation file

 Will merge to 'master'.


* as/grep-fullname-config (2014-03-20) 1 commit
 - grep: add grep.fullName config variable

 Will merge to 'next'.


* fr/add-interactive-argv-array (2014-03-18) 1 commit
  (merged to 'next' on 2014-03-20 at 9d65f3d)
 + add: use struct argv_array in run_add_interactive()

 Will merge to 'master'.


* jk/pack-bitmap (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at bba6246)
 + pack-objects: turn off bitmaps when skipping objects

 Instead of dying when asked to (re)pack with the reachability
 bitmap when a bitmap cannot be built, just (re)pack without
 producing a bitmap in such a case, with a warning.

 Will merge to 'master', and probably to 'maint' later.


* jk/pack-bitmap-progress (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-20 at c7a83f9)
 + pack-objects: show reused packfile objects in "Counting objects"
 + pack-objects: show progress for reused packfiles

 The progress output while repacking and transferring objects showed
 an apparent large silence while writing the objects out of existing
 packfiles, when the reachability bitmap was in use.

 Will merge to 'master', and probably to 'maint' later.


* jk/subtree-prefix (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 81367fa)
 + subtree: initialize "prefix" variable

 A stray environment variable $prefix could have leaked into and
 affected the behaviour of the "subtree" script.

 Will merge to 'master'.


* nd/gc-aggressive (2014-03-17) 4 commits
 - gc --aggressive: three phase repacking
 - gc --aggressive: make --depth configurable
 - pack-objects: support --keep
 - environment.c: fix constness for odb_pack_keep()


* bg/rebase-off-of-previous-branch (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-21 at 916b759)
 + rebase: allow "-" short-hand for the previous branch

 Will merge to 'master'.


* dt/tests-with-env-not-subshell (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-25 at 19fe25f)
 + tests: use "env" to run commands with temporary env-var settings
 (this branch is used by jk/tests-cleanup.)

 Will merge to 'master'.


* hs/simplify-bit-setting-in-fsck-tree (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-25 at 08efd68)
 + fsck: use bitwise-or assignment operator to set flag

 Will merge to 'master'.


* mm/status-porcelain-format-i18n-fix (2014-03-20) 2 commits
 - SQUASH??? fix decl-after-stmt and simplify
 - status: disable translation when --porcelain is used

 Will merge to 'next' after squashing in the fixup.


* ap/remote-hg-skip-null-bookmarks (2014-03-25) 1 commit
  (merged to 'next' on 2014-03-25 at a8cd922)
 + remote-hg: do not fail on invalid bookmarks

 Will merge to 'master'.


* ys/fsck-commit-parsing (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-21 at 2728983)
 + fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant
 + fsck.c:fsck_ident(): ident points at a const string

 Will merge to 'master'.


* bp/commit-p-editor (2014-03-18) 7 commits
  (merged to 'next' on 2014-03-21 at 23b6b06)
 + run-command: mark run_hook_with_custom_index as deprecated
 + merge hook tests: fix and update tests
 + merge: fix GIT_EDITOR override for commit hook
 + commit: fix patch hunk editing with "commit -p -m"
 + test patch hunk editing with "commit -p -m"
 + merge hook tests: use 'test_must_fail' instead of '!'
 + merge hook tests: fix missing '&&' in test

 When it is not necessary to edit a commit log message (e.g. "git
 commit -m" is given a message without specifying "-e"), we used to
 disable the spawning of the editor by overriding GIT_EDITOR, but
 this means all the uses of the editor, other than to edit the
 commit log message, are also affected.

 Will merge to 'master'.


* cn/fetch-prune-overlapping-destination (2014-03-24) 3 commits
 - SQUASH??? style and leak fix
 - fetch: handle overlaping refspecs on --prune
 - fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Since I didn't get any responses to my earlier "Comments?", I ended
 up reading it myself again and found a small leak.

 Hoping to be able to merge a fix for this issue soonish.


* nd/multiple-work-trees (2014-03-25) 28 commits
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - $GIT_COMMON_DIR: a new environment variable
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - git_path(): be aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - git_snpath(): retire and replace with strbuf_git_path()
 - path.c: make get_pathname() call sites return const char *
 - path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.


* ks/tree-diff-nway (2014-03-20) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
  (merged to 'next' on 2014-03-25 at cfcbdac)
 + tree-diff: simplify tree_entry_pathcmp
 + tree-diff: show_path prototype is not needed anymore
 + tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 + tree-diff: move all action-taking code out of compare_tree_entry()
 + tree-diff: don't assume compare_tree_entry() returns -1,0,1
  (merged to 'next' on 2014-03-21 at d872679)
 + tree-diff: consolidate code for emitting diffs and recursion in one place
 + tree-diff: show_tree() is not needed
 + tree-diff: no need to pass match to skip_uninteresting()
 + tree-diff: no need to manually verify that there is no mode change for a path
 + combine-diff: move changed-paths scanning logic into its own function
 + combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/log-show-linear-break (2014-03-20) 2 commits
 - log: add --show-linear-break to help see non-linear history
 - object.h: centralize object flag allocation

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 The implementation seems to have got worse compared to the previous
 round.  Will hold.


* cc/interpret-trailers (2014-03-07) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.

 Will merge to 'next'.

--------------------------------------------------
[Discarded]

* jk/diff-funcname-cpp-regex (2014-03-05) 1 commit
 . diff: simplify cpp funcname regex

 Superceded.


* pw/branch-config-message (2014-03-13) 1 commit
 . install_branch_config(): simplify verbose messages logic

 Among the many attempts to microproject #8, this seemed to be the
 most "done" among the table based ones; I however tend to think
 that the original with minimum refactoring would be easier to read.

 an/branch-config-message supersedes this topic.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Mar 2014, #07; Fri, 28)
@ 2014-03-28 22:21  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-28 22:21 UTC (permalink / raw)
  To: git

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

More topics merged to 'master', many of which are fallouts from GSoC
microprojects.

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

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

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

* ah/doc-gitk-config (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-20 at d671b60)
 + Documentation/gitk: document the location of the configulation file


* bg/rebase-off-of-previous-branch (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-21 at 916b759)
 + rebase: allow "-" short-hand for the previous branch

 "git rebase" learned to interpret a lone "-" as "@{-1}", the
 branch that we were previously on.


* bp/commit-p-editor (2014-03-18) 7 commits
  (merged to 'next' on 2014-03-21 at 23b6b06)
 + run-command: mark run_hook_with_custom_index as deprecated
 + merge hook tests: fix and update tests
 + merge: fix GIT_EDITOR override for commit hook
 + commit: fix patch hunk editing with "commit -p -m"
 + test patch hunk editing with "commit -p -m"
 + merge hook tests: use 'test_must_fail' instead of '!'
 + merge hook tests: fix missing '&&' in test

 When it is not necessary to edit a commit log message (e.g. "git
 commit -m" is given a message without specifying "-e"), we used to
 disable the spawning of the editor by overriding GIT_EDITOR, but
 this means all the uses of the editor, other than to edit the
 commit log message, are also affected.


* fr/add-interactive-argv-array (2014-03-18) 1 commit
  (merged to 'next' on 2014-03-20 at 9d65f3d)
 + add: use struct argv_array in run_add_interactive()


* jk/pack-bitmap (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at bba6246)
 + pack-objects: turn off bitmaps when skipping objects

 Instead of dying when asked to (re)pack with the reachability
 bitmap when a bitmap cannot be built, just (re)pack without
 producing a bitmap in such a case, with a warning.


* jk/pack-bitmap-progress (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-20 at c7a83f9)
 + pack-objects: show reused packfile objects in "Counting objects"
 + pack-objects: show progress for reused packfiles

 The progress output while repacking and transferring objects showed
 an apparent large silence while writing the objects out of existing
 packfiles, when the reachability bitmap was in use.


* jk/subtree-prefix (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 81367fa)
 + subtree: initialize "prefix" variable

 A stray environment variable $prefix could have leaked into and
 affected the behaviour of the "subtree" script.


* ys/fsck-commit-parsing (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-21 at 2728983)
 + fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant
 + fsck.c:fsck_ident(): ident points at a const string

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

* jc/apply-ignore-whitespace (2014-03-26) 1 commit
 - apply --ignore-space-change: lines with and without leading whitespaces do not match

 An RFC.  "--ignore-space-change" option of "git apply" ignored the
 spaces at the beginning of line too aggressively, which is
 inconsistent with the option of the same name "diff" and "git diff"
 have.

 Will hold.


* jc/rev-parse-argh-dashed-multi-words (2014-03-24) 3 commits
 - parse-options: make sure argh string does not have SP or _
 - update-index: teach --cacheinfo a new syntax "mode,sha1,path"
 - parse-options: multi-word argh should use dash to separate words
 (this branch uses ib/rev-parse-parseopt-argh.)

 Make sure that the help text given to describe the "<param>" part
 of the "git cmd --option=<param>" does not contain SP or _,
 e.g. "--gpg-sign=<key-id>" option for "git commit" is not spelled
 as "--gpg-sign=<key id>".

 Will merge to 'next'.


* jk/commit-dates-parsing-fix (2014-03-26) 1 commit
 - t4212: loosen far-in-future test for AIX

 I think we agreed that a simpler test would be a better way
 forward.


* mr/msvc-link-with-invalidcontinue (2014-03-28) 1 commit
 - MSVC: link in invalidcontinue.obj for better POSIX compatibility

 Will merge to 'next'.


* mr/msvc-link-with-lcurl (2014-03-27) 1 commit
  (merged to 'next' on 2014-03-28 at 3281dab)
 + MSVC: allow linking with the cURL library

 Will merge to 'master'.


* wt/doc-submodule-name-path-confusion-1 (2014-03-27) 1 commit
  (merged to 'next' on 2014-03-28 at 225f241)
 + doc: submodule.* config are keyed by submodule names

 Will merge to 'master'.


* wt/doc-submodule-name-path-confusion-2 (2014-03-27) 1 commit
  (merged to 'next' on 2014-03-28 at ec5bcf3)
 + doc: submodule.*.branch config is keyed by name

 Will merge to 'master'.


* ep/shell-command-substitution (2014-03-25) 2 commits
  (merged to 'next' on 2014-03-28 at 99a512a)
 + git-am.sh: use the $(...) construct for command substitution
 + check-builtins.sh: use the $(...) construct for command substitution

 Will merge to 'master'.

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

* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* sz/mingw-index-pack-threaded (2014-03-19) 1 commit
 - Enable index-pack threading in msysgit.

 Still under discussion among Windows folks.  A failure report
 exists ($gmane/245170).


* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


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

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


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

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

* jk/tests-cleanup (2014-03-21) 12 commits
  (merged to 'next' on 2014-03-26 at 4a72b49)
 + t0001: drop subshells just for "cd"
 + t0001: drop useless subshells
 + t0001: use test_must_fail
 + t0001: use test_config_global
 + t0001: use test_path_is_*
 + t0001: make symlink reinit test more careful
 + t: prefer "git config --file" to GIT_CONFIG
 + t: prefer "git config --file" to GIT_CONFIG with test_must_fail
 + t: stop using GIT_CONFIG to cross repo boundaries
 + t: drop useless sane_unset GIT_* calls
 + t/test-lib: drop redundant unset of GIT_CONFIG
 + t/Makefile: stop setting GIT_CONFIG
 (this branch uses dt/tests-with-env-not-subshell.)

 Will merge to 'master'.


* ca/doc-config-third-party (2014-03-21) 1 commit
  (merged to 'next' on 2014-03-25 at 731e011)
 + config.txt: third-party tools may and do use their own variables

 Will merge to 'master'.


* dw/doc-status-no-longer-shows-pound-prefix (2014-03-21) 1 commit
  (merged to 'next' on 2014-03-25 at 2683eb6)
 + doc: status, remove leftover statement about '#' prefix

 Will merge to 'master'.


* js/userdiff-cc (2014-03-21) 10 commits
  (merged to 'next' on 2014-03-25 at 8c0e585)
 + userdiff: have 'cpp' hunk header pattern catch more C++ anchor points
 + t4018: test cases showing that the cpp pattern misses many anchor points
 + t4018: test cases for the built-in cpp pattern
 + t4018: reduce test files for pattern compilation tests
 + t4018: convert custom pattern test to the new infrastructure
 + t4018: convert java pattern test to the new infrastructure
 + t4018: convert perl pattern tests to the new infrastructure
 + t4018: an infrastructure to test hunk headers
 + userdiff: support unsigned and long long suffixes of integer constants
 + userdiff: support C++ ->* and .* operators in the word regexp

 Improves the pattern to match the hunk-header for C/C++.

 Will merge to 'master'.


* dp/makefile-charset-lib-doc (2014-03-23) 1 commit
  (merged to 'next' on 2014-03-25 at b32e3ad)
 + Makefile: describe CHARSET_LIB better

 Will merge to 'master'.


* ib/rev-parse-parseopt-argh (2014-03-23) 2 commits
  (merged to 'next' on 2014-03-25 at d9083ed)
 + t1502: protect runs of SPs used in the indentation
 + rev-parse --parseopt: option argument name hints
 (this branch is used by jc/rev-parse-argh-dashed-multi-words.)

 Teaches the "rev-parse --parseopt" mechanism used by scripted
 Porcelains to parse command line options and give help text how to
 supply argv-help (the placeholder string for an option parameter,
 e.g. "key-id" in "--gpg-sign=<key-id>").

 Will merge to 'master'.


* rs/pickaxe-i (2014-03-24) 10 commits
  (merged to 'next' on 2014-03-25 at 3b6f21f)
 + pickaxe: simplify kwset loop in contains()
 + pickaxe: call strlen only when necessary in diffcore_pickaxe_count()
 + pickaxe: move pickaxe() after pickaxe_match()
 + pickaxe: merge diffcore_pickaxe_grep() and diffcore_pickaxe_count() into diffcore_pickaxe()
 + pickaxe: honor -i when used with -S and --pickaxe-regex
 + t4209: use helper functions to test --author
 + t4209: use helper functions to test --grep
 + t4209: factor out helper function test_log_icase()
 + t4209: factor out helper function test_log()
 + t4209: set up expectations up front

 Allow the options -i/--regexp-ignore-case, --pickaxe-regex, and -S
 to be used together and work as expected to perform a pickaxe
 search using case-insensitive regular expression matching.

 Will merge to 'master'.


* an/branch-config-message (2014-03-24) 1 commit
  (merged to 'next' on 2014-03-26 at 26f9741)
 + branch.c: install_branch_config: simplify if chain

 Will merge to 'master'.


* as/grep-fullname-config (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-28 at 810a076)
 + grep: add grep.fullName config variable

 Add a configuration variable to force --full-name to be default for
 "git grep".

 This may cause regressions on scripted users that do not expect
 this new behaviour.

 Will hold.


* nd/gc-aggressive (2014-03-17) 4 commits
 - gc --aggressive: three phase repacking
 - gc --aggressive: make --depth configurable
 - pack-objects: support --keep
 - environment.c: fix constness for odb_pack_keep()


* dt/tests-with-env-not-subshell (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-25 at 19fe25f)
 + tests: use "env" to run commands with temporary env-var settings
 (this branch is used by jk/tests-cleanup.)

 Will merge to 'master'.


* hs/simplify-bit-setting-in-fsck-tree (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-25 at 08efd68)
 + fsck: use bitwise-or assignment operator to set flag

 Will merge to 'master'.


* mm/status-porcelain-format-i18n-fix (2014-03-26) 1 commit
  (merged to 'next' on 2014-03-26 at 41680fc)
 + status: disable translation when --porcelain is used

 Will merge to 'master'.


* ap/remote-hg-skip-null-bookmarks (2014-03-25) 1 commit
  (merged to 'next' on 2014-03-25 at a8cd922)
 + remote-hg: do not fail on invalid bookmarks

 Will merge to 'master'.


* cn/fetch-prune-overlapping-destination (2014-03-26) 2 commits
  (merged to 'next' on 2014-03-28 at 954513a)
 + fetch: handle overlaping refspecs on --prune
 + fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Since I didn't get any responses to my earlier "Comments?", I ended
 up reading it myself again and found a small leak, whose fix has
 been squashed in to the tip commit.

 Will merge to 'master'.


* nd/multiple-work-trees (2014-03-25) 28 commits
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - $GIT_COMMON_DIR: a new environment variable
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - git_path(): be aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - git_snpath(): retire and replace with strbuf_git_path()
 - path.c: make get_pathname() call sites return const char *
 - path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.


* ks/tree-diff-nway (2014-03-27) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
  (merged to 'next' on 2014-03-25 at cfcbdac)
 + tree-diff: simplify tree_entry_pathcmp
 + tree-diff: show_path prototype is not needed anymore
 + tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 + tree-diff: move all action-taking code out of compare_tree_entry()
 + tree-diff: don't assume compare_tree_entry() returns -1,0,1
  (merged to 'next' on 2014-03-21 at d872679)
 + tree-diff: consolidate code for emitting diffs and recursion in one place
 + tree-diff: show_tree() is not needed
 + tree-diff: no need to pass match to skip_uninteresting()
 + tree-diff: no need to manually verify that there is no mode change for a path
 + combine-diff: move changed-paths scanning logic into its own function
 + combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/log-show-linear-break (2014-03-25) 2 commits
  (merged to 'next' on 2014-03-28 at ea4a8db)
 + log: add --show-linear-break to help see non-linear history
 + object.h: centralize object flag allocation

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 Will merge to 'master'.


* cc/interpret-trailers (2014-03-26) 12 commits
 - trailers: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - Move lower case functions into wrapper.c
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v1.9.2
@ 2014-04-09 21:59  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-04-09 21:59 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

The latest maintenance release Git v1.9.2 is now available at
the usual places.

The release tarballs are found at:

    http://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the v1.9.2
tag and the maint branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://code.google.com/p/git-core/
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

The http://code.google.com/p/git-core/downloads/ site no longer
accepts new tarballs for download; while the older release tarballs
are still there, this one (and future ones) will not be.


Git v1.9.2 Release Notes
========================

Fixes since v1.9.1
------------------

 * Documentation and in-code comments had many instances of mistaken
   use of "nor", which have been corrected.

 * "git fetch --prune", when the right-hand-side of multiple fetch
   refspecs overlap (e.g. storing "refs/heads/*" to
   "refs/remotes/origin/*", while storing "refs/frotz/*" to
   "refs/remotes/origin/fr/*"), aggressively thought that lack of
   "refs/heads/fr/otz" on the origin site meant we should remove
   "refs/remotes/origin/fr/otz" from us, without checking their
   "refs/frotz/otz" first.

   Note that such a configuration is inherently unsafe (think what
   should happen when "refs/heads/fr/otz" does appear on the origin
   site), but that is not a reason not to be extra careful.

 * "git update-ref --stdin" did not fail a request to create a ref
   when the ref already existed.

 * "git diff --no-index -Mq a b" fell into an infinite loop.

 * When it is not necessary to edit a commit log message (e.g. "git
   commit -m" is given a message without specifying "-e"), we used to
   disable the spawning of the editor by overriding GIT_EDITOR, but
   this means all the uses of the editor, other than to edit the
   commit log message, are also affected.

 * "git status --porcelain --branch" showed its output with labels
   "ahead/behind/gone" translated to the user's locale.

 * "git mv" that moves a submodule forgot to adjust the array that
   uses to keep track of which submodules were to be moved to update
   its configuration.

 * Length limit for the pathname used when removing a path in a deep
   subdirectory has been removed to avoid buffer overflows.

 * The test helper lib-terminal always run an actual test_expect_*
   when included, which screwed up with the use of skil-all that may
   have to be done later.

 * "git index-pack" used a wrong variable to name the keep-file in an
   error message when the file cannot be written or closed.

 * "rebase -i" produced a broken insn sheet when the title of a commit
   happened to contain '\n' (or ended with '\c') due to a careless use
   of 'echo'.

 * There were a few instances of 'git-foo' remaining in the
   documentation that should have been spelled 'git foo'.

 * Serving objects from a shallow repository needs to write a
   new file to hold the temporary shallow boundaries but it was not
   cleaned when we exit due to die() or a signal.

 * When "git stash pop" stops after failing to apply the stash
   (e.g. due to conflicting changes), the stash is not dropped. State
   that explicitly in the output to let the users know.

 * The labels in "git status" output that describe the nature of
   conflicts (e.g. "both deleted") were limited to 20 bytes, which was
   too short for some l10n (e.g. fr).

----------------------------------------------------------------

Changes since v1.9.1 are as follows:

Aman Gupta (1):
      update-ref: fail create operation over stdin if ref already exists

Benoit Pierre (7):
      merge hook tests: fix missing '&&' in test
      merge hook tests: use 'test_must_fail' instead of '!'
      test patch hunk editing with "commit -p -m"
      commit: fix patch hunk editing with "commit -p -m"
      merge: fix GIT_EDITOR override for commit hook
      merge hook tests: fix and update tests
      run-command: mark run_hook_with_custom_index as deprecated

Carlos Martín Nieto (2):
      fetch: add a failing test for prunning with overlapping refspecs
      fetch: handle overlaping refspecs on --prune

Jeff King (6):
      shallow: use stat_validity to check for up-to-date file
      shallow: automatically clean up shallow tempfiles
      t/lib-terminal: make TTY a lazy prerequisite
      shallow: verify shallow file after taking lock
      date: recognize bogus FreeBSD gmtime output
      t4212: loosen far-in-future test for AIX

John Keeping (1):
      builtin/mv: fix out of bounds write

Jonathan Nieder (2):
      wt-status: extract the code to compute width for labels
      wt-status: i18n of section labels

Junio C Hamano (8):
      stash pop: mention we did not drop the stash upon failing to apply
      wt-status: make full label string to be subject to l10n
      wt-status: lift the artificual "at least 20 columns" floor
      index-pack: report error using the correct variable
      diff-no-index: correctly diagnose error return from diff_opt_parse()
      Start preparing for 1.9.1
      Update draft release notes to 1.9.2
      Git 1.9.2

Justin Lebar (4):
      Documentation: fix misuses of "nor"
      contrib: fix misuses of "nor"
      comments: fix misuses of "nor"
      code and test: fix misuses of "nor"

Matthieu Moy (1):
      status: disable translation when --porcelain is used

Michael Haggerty (2):
      checkout_entry(): use the strbuf throughout the function
      entry.c: fix possible buffer overflow in remove_subtree()

Ramkumar Ramachandra (1):
      Documentation/merge-strategies: avoid hyphenated commands

Thomas Ackermann (1):
      doc/http-backend: missing accent grave in literal mark-up

Uwe Storbeck (2):
      rebase -i: do not "echo" random user-supplied strings
      test-lib.sh: do not "echo" caller-supplied strings

brian m. carlson (1):
      mv: prevent mismatched data when ignoring errors.

^ permalink raw reply	[relevance 2%]

* Re: Beginner question on "Pull is mostly evil"
  @ 2014-05-07 20:15  2% ` Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2014-05-07 20:15 UTC (permalink / raw)
  To: Jim Garrison; +Cc: git@vger.kernel.org

Jim Garrison <jim.garrison@nwea.org> writes:

> During my initial self-education I came across the maxim "don't
> pull, fetch+merge instead" and have been doing that.  I think I
> followed most of the "pull is (mostly) evil" discussion but one
> facet still puzzles me: the idea that pull will do a merge "in the
> wrong direction" sometimes.

[administrivia: wrap your lines to reasonable length like ~70 cols,
please]

> Do I understand correctly that this occurs only in the presence of
> multiple remotes?

No.  This is most often true for people who use a single repository
as a place for everybody to meet, in the same way as SVN.

Suppose that that central repository has this history:

    ---o---o---A

which ends at commit A (time flows from left to right and each node
in the graph is a commit, lines between them indicating parent-child
relationship).

Then you clone it and work on your own commits, which leads you to
have this in *your* repository:

    ---o---o---A---B---C

Imagine your coworker did the same and built on top of A in *his*
repository this history in the meantime, and then pushed it to the
central repository:

    ---o---o---A---X---Y---Z

Now, if you "git push" at this point, beause your history that leads
to C lack X, Y and Z, it will fail.  You need to somehow make the
tip of your history a descendant of Z.

One way that "mostly evil" thread discusses is to "pull", which is
"fetch and then merge" (note that I am saying "don't pull, instead
fetch and merge" is not an advice to solve "pull is mostly evil"
issue at all).  If you fetch, your repository will have a history
like this:

    ---o---o---A---B---C
                \
                 X---Y---Z

And then if you did merge after that, while still on *your* branch,
i.e. C, you will create a merge M and make the history look like
this:

    ---o---o---A---B---C---M
                \         /
                 X---Y---Z

M is a descendant of Z, so you can push to update the central
repository.  Such a merge M does not lose any commit in both
histories, so in that sense it may not be wrong, but when people
would want to talk about "the authoritative canonical history that
is shared among the project participants", i.e. "the trunk", the way
they often use is to do:

    $ git log --first-parent

For all other people who observed the central repository after your
coworker pushed Z but before you pushed M, the commit on the trunk
used to be "o-o-A-X-Y-Z".  But because you made M while you were on
C, M's first parent is C, so by pushing M to advance the central
repository, you made X-Y-Z a side branch, not on the trunk.

You would rather want to have a history of this shape:

    ---o---o---A---X---Y---Z---M'
                \             / 
                 B-----------C

so that in the first-parent chain, it is clear that the project
first did X and then Y and then Z and merged a change that consists
of two commits B and C that achieves a single goal.  You may have
worked on fixing the bug #12345 with these two patches, and the
merge M' with swapped parents can say in its log message "Merge
'fix-bug-12345'".

Note that I said "achieves a single goal" above, because this is
important.  "swapping the merge order" only covers a special case
where the project does not care too much about having unrelated
things done on a single merge but cares a lot about first-parent
chain.

There are multiple schools of thought about the "trunk" management.

 1. Some projects want to keep a completely linear history without
    any merges.  Obviously, swapping the merge order would not help
    their taste.  You would need to flatten your history on top of
    the updated upstream to result in a history of this shape
    instead:

    ---o---o---A---X---Y---Z---B---C

    with "git pull --rebase" or something.

 2. Some projects tolerate merges in their history, but do not worry
    too much about the first-parent order, and allows fast-forward
    merges.  To them, swapping the merge order does not hurt, but
    it is unnecessary.

 3. Some projects want each commit on the "trunk" to do one single
    thing.  The output of "git log --first-parent" in such a project
    would show either a merge of a side branch that completes a
    single theme, or a single commit that completes a single theme
    by itself.  If your two commits B and C (or they may even be two
    groups of commits) were solving two independent issues, then the
    merge M' we made in the earlier example by swapping the merge
    order is still not up to the project standard.  It merges two
    unrelated efforts B and C at the same time.

For projects in the last category (git itself is one of them),
individual developers would want to prepare a history more like
this:

                 C0--C1--C2     topic-c
                /
    ---o---o---A                master
                \
                 B0--B1--B2     topic-b

That is, keeping separate topics on separate branches, perhaps like
so:

    $ git clone $URL work && cd work
    $ git checkout -b topic-b master
    $ ... work to create B0, B1 and B2 to complete one theme
    $ git checkout -b topic-c master
    $ ... same for the theme of topic-c

And then

    $ git checkout master
    $ git pull --ff-only

would grab X, Y and Z from the upstream and advance your master
branch:

                 C0--C1--C2
                /
    ---o---o---A---X---Y---Z
                \
                 B0--B1--B2

And then you would merge these two branches separately:

    $ git merge topic-b
    $ git merge topic-c

to result in

                 C0--C1---------C2
                /                 \
    ---o---o---A---X---Y---Z---M---N
                \             /   
                 B0--B1-----B2

and push it back to the central repository.

It is very much possible that while you are merging topic-b and
topic-c, somebody again advanced the history in the central
repository to put W on top of Z, and make your "git push" fail.

In such a case, you would rewind to discard M and N, update the tip
of your 'master' again and redo the two merges:

    $ git reset --hard origin/master
    $ git pull --ff-only
    $ git merge topic-b
    $ git merge topic-c

                 C0--C1--------------C2
                /                     \
    ---o---o---A---X---Y---Z---W---M'--N
                \                 /
                 B0--B1---------B2


So one part of the solution to "pull is mostly evil" has to involve
making this "recreating your work on top of the updated upstream"
easier for users.  Otherwise, even if people *know* that rewinding
and rebuilding is the right thing to do, they will find it too
cumbersome and end up pushing merges in random order.

For another way to put this, see

    http://git-blame.blogspot.com/2012/03/fun-with-first-parent.html

HTH.

^ permalink raw reply	[relevance 2%]

* Re: How to keep a project's canonical history correct.
  @ 2014-05-08 18:37  0% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-05-08 18:37 UTC (permalink / raw)
  To: Stephen P. Smith; +Cc: git

"Stephen P. Smith" <ischis2@cox.net> writes:

> During the mail thread about "Pull is mostly evil" a user asked how
> the first parent could become reversed.
>
> This howto explains how the first parent can get reversed when viewed
> by the project and then explains a method to keep the history correct.
>
> Signed-off-by: Stephen P. Smith <ischis2@cox.net>
> ---

Thanks.  There are a few nitpicks though, most of them what I should
have done when I wrote the original before sending it out ;-)

>  Documentation/Makefile                             |   1 +
>  .../howto/keep-canonical-history-correct.txt       | 207 +++++++++++++++++++++
>  2 files changed, 208 insertions(+)
>  create mode 100644 Documentation/howto/keep-canonical-history-correct.txt
>
> diff --git a/Documentation/Makefile b/Documentation/Makefile
> index fc6b2cf..cea0e7a 100644
> --- a/Documentation/Makefile
> +++ b/Documentation/Makefile
> @@ -59,6 +59,7 @@ SP_ARTICLES += howto/recover-corrupted-blob-object
>  SP_ARTICLES += howto/recover-corrupted-object-harder
>  SP_ARTICLES += howto/rebuild-from-update-hook
>  SP_ARTICLES += howto/rebase-from-internal-branch
> +SP_ARTICLES += howto/keep-canonical-history-correct
>  SP_ARTICLES += howto/maintain-git
>  API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
>  SP_ARTICLES += $(API_DOCS)
> diff --git a/Documentation/howto/keep-canonical-history-correct.txt b/Documentation/howto/keep-canonical-history-correct.txt
> new file mode 100644
> index 0000000..dd310ea
> --- /dev/null
> +++ b/Documentation/howto/keep-canonical-history-correct.txt
> @@ -0,0 +1,207 @@
> +From: Junio C Hamano <gitster@pobox.com>
> +Date: Wed, 07 May 2014 13:15:39 -0700
> +Subject: Beginner question on "Pull is mostly evil"
> +Abstract: This how-to explains a method for keeping a project's history correct when using git pull.
> +Content-type: text/asciidoc

Please keep the Message-ID: from the original; people can find the
original discussion more easily that way.

Also, wrap long lines of Abstract (see revert-branch-rebase.txt for
an example).

> +Keep authoritative canonical history correct with git pull
> +==========================================================
> +

We may want to have an introductory sentence before this "Suppose"
to set the scene, so that readers would be prepared to read about
the workflow that uses a central repository for everybody to meet.

> +Suppose that that central repository has this history:
> +
> +------------
> +    ---o---o---A
> +------------
> +
> +which ends at commit A (time flows from left to right and each node in
> +the graph is a commit, lines between them indicating parent-child
> +relationship).
> +
> +Then you clone it and work on your own commits, which leads you to
> +have this in *your* repository:

s/this/this history/ perhaps.

> +
> +------------
> +    ---o---o---A---B---C
> +------------
> +
> +Imagine your coworker did the same and built on top of A in *his*
> +repository this history in the meantime, and then pushed it to the
> +central repository:
> +
> +------------
> +    ---o---o---A---X---Y---Z
> +------------
> +
> +Now, if you "git push" at this point, beause your history that leads
> +to C lack X, Y and Z, it will fail.  You need to somehow make the

s/lack/lacks/

As this is no longer a plain text, you probably want `C`, `X`, etc.,
to typeset these commit markers in fixed width.

> +tip of your history a descendant of Z.
> +
> +One suggested way to solve the problem is "fetch and then merge".

s/\.$/, aka "git pull"./

> +If you fetch, your repository will have a history like this:

s/If/When/

> +------------
> +    ---o---o---A---B---C
> +                \
> +                 X---Y---Z
> +------------
> +
> +And then if you did merge after that, while still on *your* branch,
> +i.e. C, you will create a merge M and make the history look like
> +this:

s/did/run/ perhaps.  The past tense there feels wrong.

> +
> +------------
> +    ---o---o---A---B---C---M
> +                \         /
> +                 X---Y---Z
> +------------
> +
> +M is a descendant of Z, so you can push to update the central
> +repository.  Such a merge M does not lose any commit in both
> +histories, so in that sense it may not be wrong, but when people
> +would want to talk about "the authoritative canonical history that

s/would want/want/; I have a bad habit of overusing "would".

> +is shared among the project participants", i.e. "the trunk", the way
> +they often use is to do:
> +
> +------------
> +    $ git log --first-parent
> +------------
> +
> +For all other people who observed the central repository after your
> +coworker pushed Z but before you pushed M, the commit on the trunk
> +used to be "o-o-A-X-Y-Z".  But because you made M while you were on

As this is no longer a plain text, you probably want `o-o-A-X-Y-Z`
(not dq, but bq) to typeset them in fixed width in AsciiDoc.  Same
for X-Y-Z below.

> +C, M's first parent is C, so by pushing M to advance the central
> +repository, you made X-Y-Z a side branch, not on the trunk.
> +
> +You would rather want to have a history of this shape:
> +
> +------------
> +    ---o---o---A---X---Y---Z---M'
> +                \             /
> +                 B-----------C
> +------------
> +
> +so that in the first-parent chain, it is clear that the project
> +first did X and then Y and then Z and merged a change that consists
> +of two commits B and C that achieves a single goal.  You may have
> +worked on fixing the bug #12345 with these two patches, and the
> +merge M' with swapped parents can say in its log message "Merge
> +'fix-bug-12345'".

Add something like this at the end of that paragraph:

    Having a way to tell "git pull" to create a merge but record the
    parents in reverse order may be a way to do so.

It was obvious to the original questioner who did read the recent
"pull is mostly evil" thread, which is why I did not say it in the
original, but it is necessary for the readers of this document where
they lack the context.  Otherwise it would not be apparent to them
what "swapping the merge order" below refers to.

> +Note that I said "achieves a single goal" above, because this is
> +important.  "swapping the merge order" only covers a special case
> +where the project does not care too much about having unrelated
> +things done on a single merge but cares a lot about first-parent
> +chain.
> +
> +There are multiple schools of thought about the "trunk" management.

I have not tried to format it myself, but does the following 1. 2. 3.
(all pre-indented already) format correctly when passed to AsciiDoc?
I suspect the text may all shown in fixed width, which would not be
what we want.

> + 1. Some projects want to keep a completely linear history without
> +    any merges.  Obviously, swapping the merge order would not help
> +    their taste.  You would need to flatten your history on top of

s/help/match/ or something.

> +    the updated upstream to result in a history of this shape
> +    instead:
> ++
> +------------
> +    ---o---o---A---X---Y---Z---B---C
> +------------
> ++
> +    with "git pull --rebase" or something.

Use `git pull --rebase` (i.e. not dq but bq) here, too.

> + 2. Some projects tolerate merges in their history, but do not worry
> +    too much about the first-parent order, and allows fast-forward
> +    merges.  To them, swapping the merge order does not hurt, but
> +    it is unnecessary.
> +
> + 3. Some projects want each commit on the "trunk" to do one single
> +    thing.  The output of "git log --first-parent" in such a project
> +    would show either a merge of a side branch that completes a
> +    single theme, or a single commit that completes a single theme
> +    by itself.  If your two commits B and C (or they may even be two
> +    groups of commits) were solving two independent issues, then the
> +    merge M' we made in the earlier example by swapping the merge
> +    order is still not up to the project standard.  It merges two
> +    unrelated efforts B and C at the same time.

Likewise for `git log --first-parent`, `B`, `C, and `M'`; they all
want to be typeset in fixed width.

> +For projects in the last category (git itself is one of them),

s/git/Git/ as we seem to prefer that spelling these days when
talking about the project.

> +individual developers would want to prepare a history more like
> +this:
> +
> +------------
> +                 C0--C1--C2     topic-c
> +                /
> +    ---o---o---A                master
> +                \
> +                 B0--B1--B2     topic-b
> +------------
> +
> +That is, keeping separate topics on separate branches, perhaps like
> +so:
> +
> +------------
> +    $ git clone $URL work && cd work
> +    $ git checkout -b topic-b master
> +    $ ... work to create B0, B1 and B2 to complete one theme
> +    $ git checkout -b topic-c master
> +    $ ... same for the theme of topic-c
> +------------
> +
> +And then
> +
> +------------
> +    $ git checkout master
> +    $ git pull --ff-only
> +------------
> +
> +would grab X, Y and Z from the upstream and advance your master
> +branch:
> +
> +------------
> +                 C0--C1--C2
> +                /
> +    ---o---o---A---X---Y---Z
> +                \
> +                 B0--B1--B2
> +------------

We may want to have the topic-c/master/topic-b branch labels like
the previous picture here.

> +And then you would merge these two branches separately:
> +
> +------------
> +    $ git merge topic-b
> +    $ git merge topic-c
> +------------
> +
> +to result in
> +
> +------------
> +                 C0--C1---------C2
> +                /                 \
> +    ---o---o---A---X---Y---Z---M---N
> +                \             /
> +                 B0--B1-----B2
> +------------
> +
> +and push it back to the central repository.
> +
> +It is very much possible that while you are merging topic-b and
> +topic-c, somebody again advanced the history in the central
> +repository to put W on top of Z, and make your "git push" fail.
> +
> +In such a case, you would rewind to discard M and N, update the tip
> +of your 'master' again and redo the two merges:
> +
> +------------
> +    $ git reset --hard origin/master
> +    $ git pull --ff-only
> +    $ git merge topic-b
> +    $ git merge topic-c
> +------------
> +
> +------------
> +                 C0--C1--------------C2
> +                /                     \
> +    ---o---o---A---X---Y---Z---W---M'--N
> +                \                 /
> +                 B0--B1---------B2
> +------------

I failed to do so in the original, but the final merge should be
labeled as N' (with prime), just like M turned into M', to denote
that they are different commits from their counterparts in the
orignal history.

Thanks.

^ permalink raw reply	[relevance 0%]

* Re: [PATCH] How to keep a project's canonical history correct.
  @ 2014-05-09 21:05  1%     ` Junio C Hamano
  2014-05-10  4:01  0%     ` Stephen & Linda Smith
  1 sibling, 0 replies; 200+ results
From: Junio C Hamano @ 2014-05-09 21:05 UTC (permalink / raw)
  To: Stephen P. Smith; +Cc: git

"Stephen P. Smith" <ischis2@cox.net> writes:

> During the mail thread about "Pull is mostly evil" a user asked how
> the first parent could become reversed.
>
> This howto explains how the first parent can get reversed when viewed
> by the project and then explains a method to keep the history correct.
>
> Signed-off-by: Stephen P. Smith <ischis2@cox.net>
> ---

I needed a few tweaks on top while queuing.  You will find the
result on 'pu' after I push it out.

In addition to one typofix ("because" lacking "c"), here are what I
did:

 - Typeset concrete command e.g. `git pull` in monospace.

 - The second and subsequent paragraphs continued with "+" need to
   be flushed to the left; leaving them indented will format them in
   monospace (see "with `git pull --rebase` or something").

 - Be more explicit in describing 'trunk' being 'the first-parent
   chain' in the text.

 - Refer to a newer article that discusses this exact topic.

 - De-emphasize 'fix-bug-12345' in "Merge fix-bug-12345" log message.

 - Describe what the final history illustration shows.


Unless you have objections to the below (or suggestions for better
alternatives), there is no need to resend the patch.

Thanks.

diff --git a/Documentation/howto/keep-canonical-history-correct.txt b/Documentation/howto/keep-canonical-history-correct.txt
index 5979a79..35d48ef 100644
--- a/Documentation/howto/keep-canonical-history-correct.txt
+++ b/Documentation/howto/keep-canonical-history-correct.txt
@@ -38,12 +38,12 @@ central repository:
     ---o---o---A---X---Y---Z
 ------------
 
-Now, if you "git push" at this point, beause your history that leads
+Now, if you `git push` at this point, because your history that leads
 to `C` lacks `X`, `Y` and `Z`, it will fail.  You need to somehow make
 the tip of your history a descendant of `Z`.
 
 One suggested way to solve the problem is "fetch and then merge", aka
-"git pull". When you fetch, your repository will have a history like
+`git pull`. When you fetch, your repository will have a history like
 this:
 
 ------------
@@ -65,8 +65,9 @@ you will create a merge `M` and make the history look like this:
 repository.  Such a merge `M` does not lose any commit in both
 histories, so in that sense it may not be wrong, but when people want
 to talk about "the authoritative canonical history that is shared
-among the project participants", i.e. "the trunk", the way they often
-use is to do:
+among the project participants", i.e. "the trunk", they often view
+it as "commits you see by following the first-parent chain", and use
+this command to view it:
 
 ------------
     $ git log --first-parent
@@ -91,11 +92,11 @@ did `X` and then `Y` and then `Z` and merged a change that consists of
 two commits `B` and `C` that achieves a single goal.  You may have
 worked on fixing the bug #12345 with these two patches, and the merge
 `M'` with swapped parents can say in its log message "Merge
-'fix-bug-12345'". Having a way to tell "git pull" to create a merge
+fix-bug-12345". Having a way to tell `git pull` to create a merge
 but record the parents in reverse order may be a way to do so.
 
 Note that I said "achieves a single goal" above, because this is
-important.  "swapping the merge order" only covers a special case
+important.  "Swapping the merge order" only covers a special case
 where the project does not care too much about having unrelated
 things done on a single merge but cares a lot about first-parent
 chain.
@@ -111,7 +112,7 @@ There are multiple schools of thought about the "trunk" management.
     ---o---o---A---X---Y---Z---B---C
 ------------
 +
-    with `git pull --rebase` or something.
+with `git pull --rebase` or something.
 
  2. Some projects tolerate merges in their history, but do not worry
     too much about the first-parent order, and allow fast-forward
@@ -190,7 +191,7 @@ and push it back to the central repository.
 
 It is very much possible that while you are merging topic-b and
 topic-c, somebody again advanced the history in the central repository
-to put `W` on top of `Z`, and make your "git push" fail.
+to put `W` on top of `Z`, and make your `git push` fail.
 
 In such a case, you would rewind to discard `M` and `N`, update the
 tip of your 'master' again and redo the two merges:
@@ -202,6 +203,8 @@ tip of your 'master' again and redo the two merges:
     $ git merge topic-c
 ------------
 
+The procedure will result in a history that looks like this:
+
 ------------
 		 C0--C1--------------C2
 		/                     \
@@ -210,4 +213,4 @@ tip of your 'master' again and redo the two merges:
 		 B0--B1---------B2
 ------------
 
-See http://git-blame.blogspot.com/2012/03/fun-with-first-parent.html
+See also http://git-blame.blogspot.com/2013/09/fun-with-first-parent-history.html

^ permalink raw reply related	[relevance 1%]

* Re: [PATCH] How to keep a project's canonical history correct.
    2014-05-09 21:05  1%     ` Junio C Hamano
@ 2014-05-10  4:01  0%     ` Stephen & Linda Smith
  1 sibling, 0 replies; 200+ results
From: Stephen & Linda Smith @ 2014-05-10  4:01 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Friday, May 09, 2014 02:05:44 PM Junio C Hamano wrote:
> I needed a few tweaks on top while queuing.  You will find the
> result on 'pu' after I push it out.
> 
> In addition to one typofix ("because" lacking "c"), here are what I
> did:
> 
>  - Typeset concrete command e.g. `git pull` in monospace.
> 
>  - The second and subsequent paragraphs continued with "+" need to
>    be flushed to the left; leaving them indented will format them in
>    monospace (see "with `git pull --rebase` or something").
> 
>  - Be more explicit in describing 'trunk' being 'the first-parent
>    chain' in the text.
> 
>  - Refer to a newer article that discusses this exact topic.
> 
>  - De-emphasize 'fix-bug-12345' in "Merge fix-bug-12345" log message.
> 
>  - Describe what the final history illustration shows.
> 
> 
> Unless you have objections to the below (or suggestions for better
> alternatives), there is no need to resend the patch.
> 

I like the changes.

^ permalink raw reply	[relevance 0%]

* [PATCH] rebase--merge: fix --skip with two conflicts in a row
  @ 2014-06-16  0:01  2% ` brian m. carlson
  2014-06-16 20:31  2%   ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: brian m. carlson @ 2014-06-16  0:01 UTC (permalink / raw)
  To: git; +Cc: Phillip Susi, Jeff King, Junio C Hamano

If git rebase --merge encountered a conflict, --skip would not work if the
next commit also conflicted.  The msgnum file would never be updated with
the new patch number, so no patch would actually be skipped, resulting in an
inescapable loop.

Update the msgnum file's value as the first thing in call_merge.  This also
avoids an "Already applied" message when skipping a commit.  There is no
visible change for the other contexts in which call_merge is invoked, as the
msgnum file's value remains unchanged in those situations.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 git-rebase--merge.sh    |  5 +++--
 t/t3402-rebase-merge.sh | 15 +++++++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/git-rebase--merge.sh b/git-rebase--merge.sh
index 6d77b3c..d3fb67d 100644
--- a/git-rebase--merge.sh
+++ b/git-rebase--merge.sh
@@ -53,11 +53,12 @@ continue_merge () {
 }
 
 call_merge () {
-	cmt="$(cat "$state_dir/cmt.$1")"
+	msgnum="$1"
+	echo "$msgnum" >"$state_dir/msgnum"
+	cmt="$(cat "$state_dir/cmt.$msgnum")"
 	echo "$cmt" > "$state_dir/current"
 	hd=$(git rev-parse --verify HEAD)
 	cmt_name=$(git symbolic-ref HEAD 2> /dev/null || echo HEAD)
-	msgnum=$(cat "$state_dir/msgnum")
 	eval GITHEAD_$cmt='"${cmt_name##refs/heads/}~$(($end - $msgnum))"'
 	eval GITHEAD_$hd='$onto_name'
 	export GITHEAD_$cmt GITHEAD_$hd
diff --git a/t/t3402-rebase-merge.sh b/t/t3402-rebase-merge.sh
index be8c1d5..5a27ec9 100755
--- a/t/t3402-rebase-merge.sh
+++ b/t/t3402-rebase-merge.sh
@@ -33,6 +33,7 @@ test_expect_success setup '
 	tr "[a-z]" "[A-Z]" <original >newfile &&
 	git add newfile &&
 	git commit -a -m"side edits further." &&
+	git branch second-side &&
 
 	tr "[a-m]" "[A-M]" <original >newfile &&
 	rm -f original &&
@@ -41,6 +42,7 @@ test_expect_success setup '
 	git branch test-rebase side &&
 	git branch test-rebase-pick side &&
 	git branch test-reference-pick side &&
+	git branch test-conflicts side &&
 	git checkout -b test-merge side
 '
 
@@ -138,4 +140,17 @@ test_expect_success 'rebase -s funny -Xopt' '
 	test -f funny.was.run
 '
 
+test_expect_success 'rebase --skip works with two conflicts in a row' '
+	git checkout second-side  &&
+	tr "[A-Z]" "[a-z]" <newfile >tmp &&
+	mv tmp newfile &&
+	git commit -a -m"edit conflicting with side" &&
+	tr "[d-f]" "[D-F]" <newfile >tmp &&
+	mv tmp newfile &&
+	git commit -a -m"another edit conflicting with side" &&
+	test_must_fail git rebase --merge test-conflicts &&
+	test_must_fail git rebase --skip &&
+	git rebase --skip
+'
+
 test_done
-- 
2.0.0

^ permalink raw reply related	[relevance 2%]

* Re: [PATCH] rebase--merge: fix --skip with two conflicts in a row
  2014-06-16  0:01  2% ` [PATCH] rebase--merge: fix --skip with two conflicts in a row brian m. carlson
@ 2014-06-16 20:31  2%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-06-16 20:31 UTC (permalink / raw)
  To: brian m. carlson; +Cc: git, Phillip Susi, Jeff King

"brian m. carlson" <sandals@crustytoothpaste.net> writes:

> If git rebase --merge encountered a conflict, --skip would not work if the
> next commit also conflicted.  The msgnum file would never be updated with
> the new patch number, so no patch would actually be skipped, resulting in an
> inescapable loop.
>
> Update the msgnum file's value as the first thing in call_merge.  This also
> avoids an "Already applied" message when skipping a commit.  There is no
> visible change for the other contexts in which call_merge is invoked, as the
> msgnum file's value remains unchanged in those situations.
>
> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
> ---

Sounds good to me.  Thanks.

>  git-rebase--merge.sh    |  5 +++--
>  t/t3402-rebase-merge.sh | 15 +++++++++++++++
>  2 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/git-rebase--merge.sh b/git-rebase--merge.sh
> index 6d77b3c..d3fb67d 100644
> --- a/git-rebase--merge.sh
> +++ b/git-rebase--merge.sh
> @@ -53,11 +53,12 @@ continue_merge () {
>  }
>  
>  call_merge () {
> -	cmt="$(cat "$state_dir/cmt.$1")"
> +	msgnum="$1"
> +	echo "$msgnum" >"$state_dir/msgnum"
> +	cmt="$(cat "$state_dir/cmt.$msgnum")"
>  	echo "$cmt" > "$state_dir/current"
>  	hd=$(git rev-parse --verify HEAD)
>  	cmt_name=$(git symbolic-ref HEAD 2> /dev/null || echo HEAD)
> -	msgnum=$(cat "$state_dir/msgnum")
>  	eval GITHEAD_$cmt='"${cmt_name##refs/heads/}~$(($end - $msgnum))"'
>  	eval GITHEAD_$hd='$onto_name'
>  	export GITHEAD_$cmt GITHEAD_$hd
> diff --git a/t/t3402-rebase-merge.sh b/t/t3402-rebase-merge.sh
> index be8c1d5..5a27ec9 100755
> --- a/t/t3402-rebase-merge.sh
> +++ b/t/t3402-rebase-merge.sh
> @@ -33,6 +33,7 @@ test_expect_success setup '
>  	tr "[a-z]" "[A-Z]" <original >newfile &&
>  	git add newfile &&
>  	git commit -a -m"side edits further." &&
> +	git branch second-side &&
>  
>  	tr "[a-m]" "[A-M]" <original >newfile &&
>  	rm -f original &&
> @@ -41,6 +42,7 @@ test_expect_success setup '
>  	git branch test-rebase side &&
>  	git branch test-rebase-pick side &&
>  	git branch test-reference-pick side &&
> +	git branch test-conflicts side &&
>  	git checkout -b test-merge side
>  '
>  
> @@ -138,4 +140,17 @@ test_expect_success 'rebase -s funny -Xopt' '
>  	test -f funny.was.run
>  '
>  
> +test_expect_success 'rebase --skip works with two conflicts in a row' '
> +	git checkout second-side  &&
> +	tr "[A-Z]" "[a-z]" <newfile >tmp &&
> +	mv tmp newfile &&
> +	git commit -a -m"edit conflicting with side" &&
> +	tr "[d-f]" "[D-F]" <newfile >tmp &&
> +	mv tmp newfile &&
> +	git commit -a -m"another edit conflicting with side" &&
> +	test_must_fail git rebase --merge test-conflicts &&
> +	test_must_fail git rebase --skip &&
> +	git rebase --skip
> +'
> +
>  test_done

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jun 2014, #04; Tue, 17)
@ 2014-06-18 17:25  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-06-18 17:25 UTC (permalink / raw)
  To: git

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

Many topics that have been cooking in 'next' during the previous
cycle, totalling close to 300 individual patches, are in 'master'
now.  We have also accumulated some fixes we need to merge down to
'maint' and cut a v2.0.1 sometime next week.

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

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

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

* mt/patch-id-stable (2014-06-10) 1 commit
 - patch-id: change default to stable

 Teaches "git patch-id" to compute the patch ID that does not change
 when the files in a single patch is reordered. As this new algorithm
 is backward incompatible, the last bit to flip it to be the default
 is left out of 'master' for now.


* as/pretty-truncate (2014-05-21) 5 commits
  (merged to 'next' on 2014-06-10 at d8147a2)
 + pretty.c: format string with truncate respects logOutputEncoding
 + t4205, t6006: add tests that fail with i18n.logOutputEncoding set
 + t4205 (log-pretty-format): use `tformat` rather than `format`
 + t4041, t4205, t6006, t7102: don't hardcode tested encoding value
 + t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs

 Originally merged to 'next' on 2014-05-23


* bg/xcalloc-nmemb-then-size (2014-05-27) 12 commits
  (merged to 'next' on 2014-06-10 at eddb5bc)
 + transport-helper.c: rearrange xcalloc arguments
 + remote.c: rearrange xcalloc arguments
 + reflog-walk.c: rearrange xcalloc arguments
 + pack-revindex.c: rearrange xcalloc arguments
 + notes.c: rearrange xcalloc arguments
 + imap-send.c: rearrange xcalloc arguments
 + http-push.c: rearrange xcalloc arguments
 + diff.c: rearrange xcalloc arguments
 + config.c: rearrange xcalloc arguments
 + commit.c: rearrange xcalloc arguments
 + builtin/remote.c: rearrange xcalloc arguments
 + builtin/ls-remote.c: rearrange xcalloc arguments

 Originally merged to 'next' on 2014-06-06

 Like calloc(3), xcalloc() takes nmemb and then size.


* cb/byte-order (2014-05-30) 3 commits
  (merged to 'next' on 2014-06-10 at 63db8ee)
 + compat/bswap.h: fix endianness detection
 + compat/bswap.h: restore preference __BIG_ENDIAN over BIG_ENDIAN
 + compat/bswap.h: detect endianness on more platforms that don't use BYTE_ORDER

 Originally merged to 'next' on 2014-05-30

 Compatibility enhancement for Solaris.


* cc/replace-edit (2014-05-19) 10 commits
  (merged to 'next' on 2014-06-10 at ff69722)
 + Documentation: replace: describe new --edit option
 + replace: add --edit to usage string
 + replace: add tests for --edit
 + replace: die early if replace ref already exists
 + replace: refactor checking ref validity
 + replace: make sure --edit results in a different object
 + replace: add --edit option
 + replace: factor object resolution out of replace_object
 + replace: use OPT_CMDMODE to handle modes
 + replace: refactor command-mode determination
 (this branch is used by cc/replace-graft.)

 Originally merged to 'next' on 2014-05-19

 "git replace" learns a new "--edit" option.


* dt/refs-check-refname-component-optim (2014-06-05) 1 commit
  (merged to 'next' on 2014-06-10 at 4560669)
 + refs.c: optimize check_refname_component()
 (this branch is used by dt/refs-check-refname-component-sse42.)

 Originally merged to 'next' on 2014-06-06


* fc/remote-helper-refmap (2014-04-21) 8 commits
  (merged to 'next' on 2014-06-10 at 8cd8cf8)
 + transport-helper: remove unnecessary strbuf resets
 + transport-helper: add support to delete branches
 + fast-export: add support to delete refs
 + fast-import: add support to delete refs
 + transport-helper: add support to push symbolic refs
 + transport-helper: add support for old:new refspec
 + fast-export: add new --refspec option
 + fast-export: improve argument parsing

 Originally merged to 'next' on 2014-04-22

 Allow remote-helper/fast-import based transport to rename the refs
 while transferring the history.


* ib/test-selectively-run (2014-06-06) 4 commits
  (merged to 'next' on 2014-06-10 at 1235570)
 + t0000-*.sh: fix the GIT_SKIP_TESTS sub-tests
 + test-lib: '--run' to run only specific tests
 + test-lib: tests skipped by GIT_SKIP_TESTS say so
 + test-lib: document short options in t/README

 Originally merged to 'next' on 2014-06-06

 Allow specifying only certain individual test pieces to be run
 using a range notation (e.g. "t1234-test.sh --run='1-4 6 8 9-'").


* jk/argv-array-for-child-process (2014-05-15) 7 commits
  (merged to 'next' on 2014-06-10 at 07a167b)
 + argv-array: drop "detach" code
 + get_importer: use run-command's internal argv_array
 + get_exporter: use argv_array
 + get_helper: use run-command's internal argv_array
 + git_connect: use argv_array
 + run_column_filter: use argv_array
 + run-command: store an optional argv_array

 Originally merged to 'next' on 2014-05-21


* jk/complete-merge-pull (2014-05-27) 2 commits
  (merged to 'next' on 2014-06-10 at d1524c5)
 + completion: add missing options for git-merge
 + completion: add a note that merge options are shared

 Originally merged to 'next' on 2014-06-06

 The completion code did not know about quite a few options that are
 common between "git merge" and "git pull", and a couple of options
 unique to "git merge".


* jk/daemon-tolower (2014-05-23) 1 commit
  (merged to 'next' on 2014-06-10 at f3c549d)
 + daemon/config: factor out duplicate xstrdup_tolower

 Originally merged to 'next' on 2014-05-23


* jk/diff-files-assume-unchanged (2014-05-15) 1 commit
  (merged to 'next' on 2014-06-10 at 984862b)
 + run_diff_files: do not look at uninitialized stat data

 Originally merged to 'next' on 2014-05-21


* jk/diff-follow-must-take-one-pathspec (2014-05-20) 1 commit
  (merged to 'next' on 2014-06-10 at 0cd28d7)
 + move "--follow needs one pathspec" rule to diff_setup_done

 Originally merged to 'next' on 2014-05-23


* jk/do-not-run-httpd-tests-as-root (2014-05-12) 1 commit
  (merged to 'next' on 2014-06-10 at 745b05c)
 + t/lib-httpd: require SANITY prereq

 Originally merged to 'next' on 2014-05-21


* jk/error-resolve-conflict-advice (2014-06-03) 2 commits
  (merged to 'next' on 2014-06-10 at 713ebe0)
 + error_resolve_conflict: drop quotations around operation
 + error_resolve_conflict: rewrap advice message

 Originally merged to 'next' on 2014-06-06


* jk/http-errors (2014-05-27) 8 commits
  (merged to 'next' on 2014-06-10 at 30e9212)
 + http: default text charset to iso-8859-1
 + remote-curl: reencode http error messages
 + strbuf: add strbuf_reencode helper
 + http: optionally extract charset parameter from content-type
 + http: extract type/subtype portion of content-type
 + t5550: test display of remote http error messages
 + t/lib-httpd: use write_script to copy CGI scripts
 + test-lib: preserve GIT_CURL_VERBOSE from the environment

 Originally merged to 'next' on 2014-06-06

 Propagate the error messages from the webserver better to the
 client coming over the HTTP transport.


* jk/report-fail-to-read-objects-better (2014-05-15) 1 commit
  (merged to 'next' on 2014-06-10 at 299ea28)
 + open_sha1_file: report "most interesting" errno

 Originally merged to 'next' on 2014-05-21


* jk/strbuf-tolower (2014-05-23) 1 commit
  (merged to 'next' on 2014-06-10 at 01e6983)
 + strbuf: add strbuf_tolower function

 Originally merged to 'next' on 2014-05-23


* jl/remote-rm-prune (2014-05-27) 3 commits
  (merged to 'next' on 2014-06-10 at 13259ff)
 + remote prune: optimize "dangling symref" check/warning
 + remote: repack packed-refs once when deleting multiple refs
 + remote rm: delete remote configuration as the last

 Originally merged to 'next' on 2014-06-06

 "git remote rm" and "git remote prune" can involve removing many
 refs at once, which is not a very efficient thing to do when very
 many refs exist in the packed-refs file.


* jl/status-added-submodule-is-never-ignored (2014-04-07) 2 commits
  (merged to 'next' on 2014-06-10 at fc63847)
 + commit -m: commit staged submodules regardless of ignore config
 + status/commit: show staged submodules regardless of ignore config

 Originally merged to 'next' on 2014-06-06

 submodule.*.ignore and diff.ignoresubmodules are used to ignore all
 submodule changes in "diff" output, but it can be confusing to
 apply these configuration values to status and commit.

 This is a backward-incompatible change, but should be so in a good
 way (aka bugfix).


* jm/dedup-test-config (2014-06-05) 1 commit
  (merged to 'next' on 2014-06-10 at 8966f54)
 + t/t7810-grep.sh: remove duplicate test_config()

 Originally merged to 'next' on 2014-06-06


* jm/doc-wording-tweaks (2014-05-28) 1 commit
  (merged to 'next' on 2014-06-10 at 5f2e094)
 + Documentation: wording fixes in the user manual and glossary

 Originally merged to 'next' on 2014-06-06


* jm/format-patch-mail-sig (2014-05-27) 2 commits
  (merged to 'next' on 2014-06-10 at 310f59e)
 + format-patch: add "--signature-file=<file>" option
 + format-patch: make newline after signature conditional

 Originally merged to 'next' on 2014-06-06


* jm/instaweb-apache-24 (2014-05-27) 1 commit
  (merged to 'next' on 2014-06-10 at ecf2048)
 + git-instaweb: add support for Apache 2.4

 Originally merged to 'next' on 2014-06-06


* jm/t9138-style-fix (2014-05-27) 1 commit
  (merged to 'next' on 2014-06-10 at 034f13d)
 + t9138-git-svn-authors-prog.sh fixups

 Originally merged to 'next' on 2014-06-06


* lt/log-auto-decorate (2014-05-30) 1 commit
  (merged to 'next' on 2014-06-10 at f149f4a)
 + git log: support "auto" decorations

 Originally merged to 'next' on 2014-06-06


* nd/daemonize-gc (2014-05-27) 1 commit
  (merged to 'next' on 2014-06-10 at 6fae7b0)
 + gc --auto: do not lock refs in the background

 Originally merged to 'next' on 2014-06-06

 "git gc --auto" was recently changed to run in the background to
 give control back early to the end-user sitting in front of the
 terminal, but it forgot that housekeeping involving reflogs should
 be done without other processes competing for accesses to the refs.


* ow/config-mailmap-pathname (2014-05-27) 1 commit
  (merged to 'next' on 2014-06-10 at aba4ca2)
 + config: respect '~' and '~user' in mailmap.file

 Originally merged to 'next' on 2014-06-06

 mailmap.file configuration names a pathname, hence should honor
 ~/path and ~user/path as its value.


* rr/rebase-autostash-fix (2014-05-20) 2 commits
  (merged to 'next' on 2014-06-10 at afd0c29)
 + rebase -i: test "Nothing to do" case with autostash
 + rebase -i: handle "Nothing to do" case with autostash

 Originally merged to 'next' on 2014-05-21


* rs/pack-objects-no-unnecessary-realloc (2014-06-02) 1 commit
  (merged to 'next' on 2014-06-10 at abae695)
 + pack-objects: use free()+xcalloc() instead of xrealloc()+memset()

 Originally merged to 'next' on 2014-06-06

 Avoid unnecessary copy of previous contents when extending the
 hashtable used in pack-objects.


* rs/read-ref-at (2014-06-03) 1 commit
  (merged to 'next' on 2014-06-10 at f58f2fc)
 + refs.c: change read_ref_at to use the reflog iterators

 Originally merged to 'next' on 2014-06-06


* sh/enable-preloadindex (2014-06-03) 1 commit
  (merged to 'next' on 2014-06-10 at 7cedf2d)
 + environment.c: enable core.preloadindex by default

 Originally merged to 'next' on 2014-06-06


* sk/test-cmp-bin (2014-06-04) 1 commit
  (merged to 'next' on 2014-06-10 at 020a475)
 + t5000, t5003: do not use test_cmp to compare binary files

 Originally merged to 'next' on 2014-06-06


* sk/wincred (2014-05-14) 2 commits
  (merged to 'next' on 2014-06-10 at 8d03e5a)
 + wincred: avoid overwriting configured variables
 + wincred: add install target

 Originally merged to 'next' on 2014-05-21


* sk/windows-unc-path (2014-06-10) 1 commit
  (merged to 'next' on 2014-06-10 at 3598cc6)
 + Windows: allow using UNC path for git repository
 (this branch is used by sk/mingw-main, sk/mingw-uni-console and sk/mingw-unicode-spawn-args.)

 Originally merged to 'next' on 2014-05-21


* ta/string-list-init (2014-06-06) 1 commit
  (merged to 'next' on 2014-06-10 at bf209ff)
 + string-list: spell all values out that are given to a string_list initializer

 Originally merged to 'next' on 2014-06-06

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

* fr/sequencer-fail-with-not-one-upon-no-ff (2014-06-09) 1 commit
  (merged to 'next' on 2014-06-16 at 29734cc)
 + sequencer: signal failed ff as an aborted, not a conflicted merge

 Will merge to 'master'.


* hv/submodule-config (2014-06-13) 6 commits
 - SQUASH compilation fix
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names
 - hashmap: add enum for hashmap free_entries option


* mc/git-p4-prepare-p4-only (2014-06-13) 1 commit
  (merged to 'next' on 2014-06-16 at 3c05e19)
 + git-p4: fix submit in non --prepare-p4-only mode

 Will merge to 'master'.


* sk/mingw-unicode-spawn-args (2014-06-16) 6 commits
 - Win32: Unicode arguments (incoming)
 - Win32: Unicode arguments (outgoing)
 - MinGW: disable CRT command line globbing
 - Win32: fix potential multi-threading issue
 - Win32: simplify internal mingw_spawn* APIs
 - Win32: let mingw_execve() return an int
 (this branch uses sk/mingw-main and sk/mingw-uni-console.)


* sp/complete-ext-alias (2014-06-13) 1 commit
  (merged to 'next' on 2014-06-16 at 399679e)
 + completion: handle '!f() { ... }; f' and "!sh -c '...' -" aliases

 Will merge to 'master'.


* bc/fix-rebase-merge-skip (2014-06-16) 1 commit
 - rebase--merge: fix --skip with two conflicts in a row

 "git rebase --skip" did not work well when it stopped due to a
 conflict twice in a row.

 Will merge to 'next'.


* jl/submodule-tests (2014-06-16) 16 commits
 - revert: add t3513 for submodule updates
 - stash: add t3906 for submodule updates
 - am: add t4255 for submodule updates
 - cherry-pick: add t3512 for submodule updates
 - pull: add t5572 for submodule updates
 - SQUASH???
 - rebase: add t3426 for submodule updates
 - merge: add t7613 for submodule updates
 - bisect: add t6041 for submodule updates
 - reset: add t7112 for submodule updates
 - read-tree: add t1013 for submodule updates
 - apply: add t4137 for submodule updates
 - checkout: call the new submodule update test framework
 - submodules: Add the lib-submodule-update.sh test library
 - SQUASH???
 - test-lib: add test_dir_is_empty()

 Expecting a reroll.


* mc/doc-submodule-sync-recurse (2014-06-13) 1 commit
 - submodule: document "sync --recursive"

 Will merge to 'next'.


* pb/trim-trailing-spaces (2014-06-13) 1 commit
 - t0008: do not depend on 'echo' handling backslashes specially

 Will merge to 'next'.


* po/error-message-style (2014-06-16) 1 commit
 - doc: state coding guideline for error message punctuation

 Expecting a reroll.


* rs/blame-refactor (2014-06-13) 2 commits
 - blame: simplify prepare_lines()
 - blame: factor out get_next_line()

 Will merge to 'next'.


* rs/ref-transaction (2014-06-17) 48 commits
 - refs.c: make write_ref_sha1 static
 - fetch.c: change s_update_ref to use a ref transaction
 - refs.c: propagate any errno==ENOTDIR from _commit back to the callers
 - refs.c: pass a skip list to name_conflict_fn
 - refs.c: call lock_ref_sha1_basic directly from commit
 - refs.c: move the check for valid refname to lock_ref_sha1_basic
 - refs.c: pass NULL as *flags to read_ref_full
 - refs.c: pass the ref log message to _create/delete/update instead of _commit
 - refs.c: make delete_ref use a transaction
 - refs.c: make prune_ref use a transaction to delete the ref
 - refs.c: remove lock_ref_sha1
 - refs.c: remove the update_ref_write function
 - refs.c: remove the update_ref_lock function
 - refs.c: make lock_ref_sha1 static
 - walker.c: use ref transaction for ref updates
 - fast-import.c: use a ref transaction when dumping tags
 - receive-pack.c: use a reference transaction for updating the refs
 - refs.c: change update_ref to use a transaction
 - branch.c: use ref transaction for all ref updates
 - fast-import.c: change update_branch to use ref transactions
 - sequencer.c: use ref transactions for all ref updates
 - commit.c: use ref transactions for updates
 - replace.c: use the ref transaction functions for updates
 - tag.c: use ref transactions when doing updates
 - refs.c: add transaction.status and track OPEN/CLOSED/ERROR
 - refs.c: make ref_transaction_begin take an err argument
 - refs.c: update ref_transaction_delete to check for error and return status
 - refs.c: change ref_transaction_create to do error checking and return status
 - refs.c: change ref_transaction_update() to do error checking and return status
 - refs.c: remove the onerr argument to ref_transaction_commit
 - update-ref: use err argument to get error from ref_transaction_commit
 - refs.c: make update_ref_write update a strbuf on failure
 - refs.c: add an err argument to delete_ref_loose
 - refs.c: make ref_update_reject_duplicates take a strbuf argument for errors
 - refs.c: log_ref_write should try to return meaningful errno
 - refs.c: make resolve_ref_unsafe set errno to something meaningful on error
 - refs.c: commit_packed_refs to return a meaningful errno on failure
 - refs.c: make remove_empty_directories alwasy set errno to something sane
 - refs.c: verify_lock should set errno to something meaningful
 - refs.c: make sure log_ref_setup returns a meaningful errno
 - refs.c: add an err argument to repack_without_refs
 - lockfile.c: make lock_file return a meaningful errno on failurei
 - lockfile.c: add a new public function unable_to_lock_message
 - refs.c: add a strbuf argument to ref_transaction_commit for error logging
 - refs.c: allow passing NULL to ref_transaction_free
 - refs.c: constify the sha arguments for ref_transaction_create|delete|update
 - refs.c: ref_transaction_commit should not free the transaction
 - refs.c: remove ref_transaction_rollback


* ye/doc-http-proto (2014-06-16) 1 commit
 - http-protocol.txt: Basic Auth is defined in RFC 2617, not RFC 2616

 Will merge to 'next'.


* jk/pretty-G-format-fixes (2014-06-17) 5 commits
 - pretty: avoid reading past end-of-string with "%G"
 - t7510: check %G* pretty-format output
 - t7510: test a commit signed by an unknown key
 - t7510: use consistent &&-chains in loop
 - t7510: stop referring to master in later tests


* tb/unicode-7.0 (2014-06-17) 1 commit
 - Update of unicode_width.h to Unicode Version 7.0

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

* cc/replace-graft (2014-06-09) 5 commits
 - DONTMERGE: wise to wait for peff's commit->buffer length series
 - contrib: add convert-grafts-to-replace-refs.sh
 - Documentation: replace: add --graft option
 - replace: add test for --graft
 - replace: add --graft option

 "git replace" learned a "--graft" option to rewrite parents of a
 commit.


* ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
 - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
 - git-add--interactive: Preserve diff heading when splitting hunks

 Waiting for a reroll.


* jn/gitweb-utf8-in-links (2014-05-27) 1 commit
 - gitweb: Harden UTF-8 handling in generated links

 $gmane/250758?


* rh/prompt-tests (2014-06-05) 11 commits
 - t9904: new __git_ps1 tests for Zsh
 - test-lib: make it possible to override how test code is eval'd
 - lib-prompt-tests.sh: add variable for string that encodes percent in PS1
 - lib-prompt-tests.sh: put all tests inside a function
 - t9903: move prompt tests to a new lib-prompt-tests.sh file
 - t9903: move PS1 color code variable definitions to lib-bash.sh
 - t9903: include "Bash" in test names via new $shellname var
 - t9903: run pc mode tests again with PS1 expansion disabled
 - t9903: move test name prefix to a separate variable
 - t9903: put the Bash pc mode prompt test cases in a function
 - t9903: remove Zsh test from the suite of Bash prompt tests

 Expecting a reroll to limit the damage to test_eval_; also reported
 to be broken with older zsh that are still in the field ($gmane/251231).


* ss/userdiff-update-csharp-java (2014-06-02) 2 commits
 - userdiff: support Java try keyword
 - userdiff: support C# async methods and correct C# keywords

 Reviews sent; waiting for a response.


* cc/interpret-trailers (2014-05-28) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from file or stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from input message and arguments
 - trailer: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.

 What is the status of this one?  I think I saw reviews by Michael
 but after that I do not recall seeing any updates.


* jh/submodule-tests (2014-04-17) 1 commit
 - t7410: 210 tests for various 'git submodule update' scenarios

 More or less abandoned.  Will drop.


* nd/multiple-work-trees (2014-03-25) 28 commits
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - $GIT_COMMON_DIR: a new environment variable
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - git_path(): be aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - git_snpath(): retire and replace with strbuf_git_path()
 - path.c: make get_pathname() call sites return const char *
 - path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.


* mh/lockfile (2014-04-15) 25 commits
 - trim_last_path_elm(): replace last_path_elm()
 - resolve_symlink(): take a strbuf parameter
 - resolve_symlink(): use a strbuf for internal scratch space
 - change lock_file::filename into a strbuf
 - commit_lock_file(): use a strbuf to manage temporary space
 - try_merge_strategy(): use a statically-allocated lock_file object
 - try_merge_strategy(): remove redundant lock_file allocation
 - struct lock_file: declare some fields volatile
 - lockfile: avoid transitory invalid states
 - commit_lock_file(): die() if called for unlocked lockfile object
 - commit_lock_file(): inline temporary variable
 - remove_lock_file(): call rollback_lock_file()
 - lock_file(): exit early if lockfile cannot be opened
 - write_packed_entry_fn(): convert cb_data into a (const int *)
 - prepare_index(): declare return value to be (const char *)
 - delete_ref_loose(): don't muck around in the lock_file's filename
 - cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
 - lockfile.c: document the various states of lock_file objects
 - lock_file(): always add lock_file object to lock_file_list
 - hold_lock_file_for_append(): release lock on errors
 - lockfile: unlock file if lockfile permissions cannot be adjusted
 - rollback_lock_file(): set fd to -1
 - rollback_lock_file(): do not clear filename redundantly
 - api-lockfile: expand the documentation
 - unable_to_lock_die(): rename function from unable_to_lock_index_die()

 Refactor and fix corner-case bugs in the lockfile API, all looked
 sensible.

 Expecting a reroll.


* bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
 - git-rebase: print name of rev when using shorthand

 Teach "git rebase -" to report the concrete name of the branch
 (i.e. the previous one).

 But it stops short and does not do the same for "git rebase @{-1}".
 Expecting a reroll.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Needs to be rebased, now kb/fast-hashmap topic is in.


* jk/makefile (2014-02-05) 16 commits
 . FIXUP
 . move LESS/LV pager environment to Makefile
 . Makefile: teach scripts to include make variables
 . FIXUP
 . Makefile: auto-build C strings from make variables
 . Makefile: drop *_SQ variables
 . FIXUP
 . Makefile: add c-quote helper function
 . Makefile: introduce sq function for shell-quoting
 . Makefile: always create files via make-var
 . Makefile: store GIT-* sentinel files in MAKE/
 . Makefile: prefer printf to echo for GIT-*
 . Makefile: use tempfile/mv strategy for GIT-*
 . Makefile: introduce make-var helper function
 . Makefile: fix git-instaweb dependency on gitweb
 . Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 . t1507 (rev-parse-upstream): fix typo in test title
 . implement @{publish} shorthand
 . branch_get: provide per-branch pushremote pointers
 . branch_get: return early on error
 . sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Ejected from 'pu' to unclutter.


* fc/publish-vs-upstream (2014-04-21) 8 commits
 . sha1_name: add support for @{publish} marks
 . sha1_name: simplify track finding
 . sha1_name: cleanup interpret_branch_name()
 . branch: display publish branch
 . push: add --set-publish option
 . branch: add --set-publish-to option
 . Add concept of 'publish' branch
 . t5516 (fetch-push): fix test restoration

 Add branch@{publish}; it seems that this is somewhat different from
 Ram and Peff started working on.  At least the tip needs to be
 rerolled not to squat on @{p} which @{push} and possibly @{pull}
 may want to share.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Needs to be rebased, now the pack-bitmap series is in.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

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

* jc/fetch-pull-refmap (2014-06-12) 10 commits
  (merged to 'next' on 2014-06-12 at 5428530)
 + docs: Explain the purpose of fetch's and pull's <refspec> parameter.
  (merged to 'next' on 2014-06-10 at 13c13ae)
 + fetch: allow explicit --refmap to override configuration
 + fetch doc: add a section on configured remote-tracking branches
 + fetch doc: remove "short-cut" section
 + fetch doc: update refspec format description
 + fetch doc: on pulling multiple refspecs
 + fetch doc: remove notes on outdated "mixed layout"
 + fetch doc: update note on '+' in front of the refspec
 + fetch doc: move FETCH_HEAD material lower and add an example
 + fetch doc: update introductory part for clarity

 Will merge to 'master'.


* nd/split-index (2014-06-13) 32 commits
 - t1700: new tests for split-index mode
 - t2104: make sure split index mode is off for the version test
 - read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
 - read-tree: note about dropping split-index mode or index version
 - read-tree: force split-index mode off on --index-output
 - rev-parse: add --shared-index-path to get shared index path
 - update-index --split-index: do not split if $GIT_DIR is read only
 - update-index: new options to enable/disable split index mode
 - split-index: strip pathname of on-disk replaced entries
 - split-index: do not invalidate cache-tree at read time
 - split-index: the reading part
 - split-index: the writing part
 - read-cache: mark updated entries for split index
 - read-cache: save deleted entries in split index
 - read-cache: mark new entries for split index
 - read-cache: split-index mode
 - read-cache: save index SHA-1 after reading
 - entry.c: update cache_changed if refresh_cache is set in checkout_entry()
 - cache-tree: mark istate->cache_changed on prime_cache_tree()
 - cache-tree: mark istate->cache_changed on cache tree update
 - cache-tree: mark istate->cache_changed on cache tree invalidation
 - unpack-trees: be specific what part of the index has changed
 - resolve-undo: be specific what part of the index has changed
 - update-index: be specific what part of the index has changed
 - read-cache: be specific what part of the index has changed
 - read-cache: be strict about "changed" in remove_marked_cache_entries()
 - read-cache: store in-memory flags in the first 12 bits of ce_flags
 - read-cache: relocate and unexport commit_locked_index()
 - read-cache: new API write_locked_index instead of write_index/write_cache
 - sequencer: do not update/refresh index if the lock cannot be held
 - ewah: delete unused ewah_read_mmap_native declaration
 - ewah: fix constness of ewah_read_mmap


* ep/avoid-test-a-o (2014-06-10) 21 commits
 - git-submodule.sh: avoid "echo" path-like values
 - SQUASH: misconversion breakage fix
 - git-submodule.sh: avoid "test <cond> -a/-o <cond>"
 - t/test-lib-functions.sh: avoid "test <cond> -a/-o <cond>"
 - t/t9814-git-p4-rename.sh: avoid "test <cond> -a/-o <cond>"
 - t/t5538-push-shallow.sh: avoid "test <cond> -a/-o <cond>"
 - t/t5403-post-checkout-hook.sh: avoid "test <cond> -a/-o <cond>"
 - t/t5000-tar-tree.sh: avoid "test <cond> -a/-o <cond>"
 - t/t4102-apply-rename.sh: avoid "test <cond> -a/-o <cond>"
 - t/t0026-eol-config.sh: avoid "test <cond> -a/-o <cond>"
 - t/t0025-crlf-auto.sh: avoid "test <cond> -a/-o <cond>"
 - t/lib-httpd.sh: avoid "test <cond> -a/-o <cond>"
 - git-rebase--interactive.sh: avoid "test <cond> -a/-o <cond>"
 - git-mergetool.sh: avoid "test <cond> -a/-o <cond>"
 - git-bisect.sh: avoid "test <cond> -a/-o <cond>"
 - contrib/examples/git-resolve.sh: avoid "test <cond> -a/-o <cond>"
 - contrib/examples/git-repack.sh: avoid "test <cond> -a/-o <cond>"
 - contrib/examples/git-merge.sh: avoid "test <cond> -a/-o <cond>"
 - contrib/examples/git-commit.sh: avoid "test <cond> -a/-o <cond>"
 - contrib/examples/git-clone.sh: avoid "test <cond> -a/-o <cond>"
 - check_bindir: avoid "test <cond> -a/-o <cond>"


* jc/revision-dash-count-parsing (2014-06-09) 1 commit
  (merged to 'next' on 2014-06-10 at 1aeca19)
 + revision: parse "git log -<count>" more carefully

 "git log -2master" is a common typo that shows two commits starting
 from whichever random branch that is not 'master' that happens to
 be checked out currently.

 Will merge to 'master'.


* jc/test-lazy-prereq (2014-06-13) 7 commits
 - tests: drop GIT_*_TIMING_TESTS environment variable support
  (merged to 'next' on 2014-06-10 at 4f774f7)
 + t3419: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
 + t3302: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
 + t3302: do not chdir around in the primary test process
 + t3302: coding style updates
 + test: turn USR_BIN_TIME into a lazy prerequisite
 + test: turn EXPENSIVE into a lazy prerequisite

 Test-script clean-up.  The last step might be controversial.

 Will merge to 'master' except for the last one.


* jk/commit-buffer-length (2014-06-13) 18 commits
  (merged to 'next' on 2014-06-16 at b2d2d7b)
 + reuse cached commit buffer when parsing signatures
 + commit: record buffer length in cache
 + commit: convert commit->buffer to a slab
 + commit-slab: provide a static initializer
 + use get_commit_buffer everywhere
 + convert logmsg_reencode to get_commit_buffer
 + use get_commit_buffer to avoid duplicate code
 + use get_cached_commit_buffer where appropriate
 + provide helpers to access the commit buffer
 + provide a helper to set the commit buffer
 + provide a helper to free commit buffer
 + sequencer: use logmsg_reencode in get_message
 + logmsg_reencode: return const buffer
 + do not create "struct commit" with xcalloc
 + commit: push commit_index update into alloc_commit_node
 + alloc: include any-object allocations in alloc_report
 + replace dangerous uses of strbuf_attach
 + commit_tree: take a pointer/len pair rather than a const strbuf

 Move "commit->buffer" out of the in-core commit object and keep
 track of their lengths.  Use this to optimize the code paths to
 validate GPG signatures in commit objects.

 Will merge to 'master'.


* jm/api-strbuf-doc (2014-06-09) 1 commit
  (merged to 'next' on 2014-06-10 at 831aa30)
 + api-strbuf.txt minor typos

 Will merge to 'master'.


* rs/more-starts-with (2014-06-09) 1 commit
  (merged to 'next' on 2014-06-10 at efcd02e)
 + Use starts_with() for C strings instead of memcmp()

 Will merge to 'master'.


* sk/mingw-dirent (2014-06-09) 5 commits
 - Win32 dirent: improve dirent implementation
 - Win32 dirent: clarify #include directives
 - Win32 dirent: change FILENAME_MAX to MAX_PATH
 - Win32 dirent: remove unused dirent.d_reclen member
 - Win32 dirent: remove unused dirent.d_ino member


* sk/mingw-main (2014-06-10) 2 commits
 - mingw: avoid const warning
 - Win32: move main macro to a function
 (this branch is used by sk/mingw-uni-console and sk/mingw-unicode-spawn-args.)


* sk/mingw-uni-console (2014-06-16) 7 commits
 - Win32: reliably detect console pipe handles
 - Win32: fix broken pipe detection
 - Win32: Thread-safe windows console output
 - Win32: add Unicode conversion functions
 - Win32: warn if the console font doesn't support Unicode
 - Win32: detect console streams more reliably
 - Win32: support Unicode console output
 (this branch is used by sk/mingw-unicode-spawn-args; uses sk/mingw-main.)

 Now, are Windows folks happy with all four mingw topics?


* tb/t5551-clone-notice-to-stderr (2014-06-09) 1 commit
  (merged to 'next' on 2014-06-10 at 374082c)
 + t5551: fix the 50,000 tag test

 Will merge to 'master'.


* jk/repack-pack-keep-objects (2014-06-10) 3 commits
  (merged to 'next' on 2014-06-16 at 89716c9)
 + repack: s/write_bitmap/&s/ in code
 + repack: respect pack.writebitmaps
 + repack: do not accidentally pack kept objects by default
 (this branch is used by jk/repack-pack-writebitmaps-config.)

 Recent updates to "git repack" started to duplicate objects that
 are in packfiles marked with .keep flag into the new packfile by
 mistake.

 Will merge to 'master'.


* jk/repack-pack-writebitmaps-config (2014-06-12) 4 commits
  (merged to 'next' on 2014-06-16 at 777005d)
 + t7700: drop explicit --no-pack-kept-objects from .keep test
 + repack: introduce repack.writeBitmaps config option
 + repack: simplify handling of --write-bitmap-index
 + pack-objects: stop respecting pack.writebitmaps
 (this branch uses jk/repack-pack-keep-objects.)

 Will merge to 'master'.


* mg/verify-commit (2014-06-10) 3 commits
 - verify-commit: scriptable commit signature verification
 - gpg-interface: provide access to the payload
 - pretty: free the gpg status buf

 What is queued here is v1; v2 exists but I skipped it.
 Expecting a reroll.


* nd/init-restore-env (2014-06-10) 1 commit
  (merged to 'next' on 2014-06-16 at ecbbfca)
 + git potty: restore environments after alias expansion

 Will merge to 'master'.


* jl/git-gui-show-added-submodule-changes (2014-04-15) 1 commit
 - git-gui: show staged submodules regardless of ignore config

 Tentatively queued what I expect to receive via Pat Thoyts.


* jl/gitk-show-added-submodule-changes (2014-04-15) 3 commits
 - gitk: show staged submodules regardless of ignore config
 - gitk: Merge branch 'new' of https://github.com/vnwildman/gitk
 - l10n: Init Vietnamese translation

 Will drop, as I heard from Paul that these are queued in his tree.


* mt/send-email-cover-to-cc (2014-06-10) 3 commits
  (merged to 'next' on 2014-06-10 at 6bb1465)
 + t9001: avoid non-portable '\n' with sed
 + test/send-email: to-cover, cc-cover tests
 + git-send-email: two new options: to-cover, cc-cover

 Originally merged to 'next' on 2014-06-10

 Will merge to 'master'.


* mt/patch-id-stable (2014-06-10) 1 commit
 - patch-id: change default to stable

--------------------------------------------------
[Discarded]

* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 . Teach checkout to recursively checkout submodules
 . submodule: teach unpack_trees() to update submodules
 . submodule: teach unpack_trees() to repopulate submodules
 . submodule: teach unpack_trees() to remove submodule contents
 . submodule: prepare for recursive checkout of submodules

 Dropped for now to make room for another topic ($gmane/251521)

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jun 2014, #05; Fri, 20)
@ 2014-06-20 22:26  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-06-20 22:26 UTC (permalink / raw)
  To: git

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

Many topics that have been cooking in 'next' during the previous
cycle and also some new topics since this cycle opened, totalling
slightly more than 300 individual patches are in 'master' now.  We
have also accumulated some fixes we need to merge down to 'maint'
and cut a v2.0.1 sometime next week.

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

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

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

* jc/test-lazy-prereq (2014-06-13) 6 commits
  (merged to 'next' on 2014-06-10 at 4f774f7)
 + t3419: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
 + t3302: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
 + t3302: do not chdir around in the primary test process
 + t3302: coding style updates
 + test: turn USR_BIN_TIME into a lazy prerequisite
 + test: turn EXPENSIVE into a lazy prerequisite

 Test-script clean-up.


* jc/revision-dash-count-parsing (2014-06-09) 1 commit
  (merged to 'next' on 2014-06-10 at 1aeca19)
 + revision: parse "git log -<count>" more carefully

 "git log -2master" is a common typo that shows two commits starting
 from whichever random branch that is not 'master' that happens to
 be checked out currently.


* jm/api-strbuf-doc (2014-06-09) 1 commit
  (merged to 'next' on 2014-06-10 at 831aa30)
 + api-strbuf.txt minor typos


* mt/send-email-cover-to-cc (2014-06-10) 3 commits
  (merged to 'next' on 2014-06-10 at 6bb1465)
 + t9001: avoid non-portable '\n' with sed
 + test/send-email: to-cover, cc-cover tests
 + git-send-email: two new options: to-cover, cc-cover

 Originally merged to 'next' on 2014-06-10

 "git send-email" learns two new options.


* rs/more-starts-with (2014-06-09) 1 commit
  (merged to 'next' on 2014-06-10 at efcd02e)
 + Use starts_with() for C strings instead of memcmp()


* tb/t5551-clone-notice-to-stderr (2014-06-09) 1 commit
  (merged to 'next' on 2014-06-10 at 374082c)
 + t5551: fix the 50,000 tag test



* jc/fetch-pull-refmap (2014-06-12) 10 commits
  (merged to 'next' on 2014-06-12 at 5428530)
 + docs: Explain the purpose of fetch's and pull's <refspec> parameter.
  (merged to 'next' on 2014-06-10 at 13c13ae)
 + fetch: allow explicit --refmap to override configuration
 + fetch doc: add a section on configured remote-tracking branches
 + fetch doc: remove "short-cut" section
 + fetch doc: update refspec format description
 + fetch doc: on pulling multiple refspecs
 + fetch doc: remove notes on outdated "mixed layout"
 + fetch doc: update note on '+' in front of the refspec
 + fetch doc: move FETCH_HEAD material lower and add an example
 + fetch doc: update introductory part for clarity

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

* dt/refs-check-refname-component-sse (2014-06-18) 1 commit
  (merged to 'next' on 2014-06-20 at d286027)
 + refs.c: SSE2 optimizations for check_refname_component

 Further micro-optimization of a leaf-function.


* tb/unicode-7.0-display-width (2014-06-18) 1 commit
  (merged to 'next' on 2014-06-20 at 111b246)
 + Update of unicode_width.h to Unicode Version 7.0

 Will merge to 'master'.


* ye/http-extract-charset (2014-06-17) 1 commit
  (merged to 'next' on 2014-06-20 at 9492bae)
 + http: fix charset detection of extract_content_type()

 Will merge to 'master'.


* jk/skip-prefix (2014-06-20) 18 commits
 - http-push: refactor parsing of remote object names
 - imap-send: use skip_prefix instead of using magic numbers
 - use skip_prefix to avoid repeated calculations
 - git: avoid magic number with skip_prefix
 - fetch-pack: refactor parsing in get_ack
 - fast-import: refactor parsing of spaces
 - stat_opt: check extra strlen call
 - daemon: use skip_prefix to avoid magic numbers
 - fast-import: use skip_prefix for parsing input
 - use skip_prefix to avoid repeating strings
 - use skip_prefix to avoid magic numbers
 - transport-helper: avoid reading past end-of-string
 - fast-import: fix read of uninitialized argv memory
 - apply: use skip_prefix instead of raw addition
 - refactor skip_prefix to return a boolean
 - avoid using skip_prefix as a boolean
 - daemon: mark some strings as const
 - parse_diff_color_slot: drop ofs parameter

 Will merge to 'next'.


* jk/xstrfmt (2014-06-19) 10 commits
 - unique_path: fix unlikely heap overflow
 - walker_fetch: fix minor memory leak
 - merge: use argv_array when spawning merge strategy
 - sequencer: use argv_array_pushf
 - setup_git_env: use git_pathdup instead of xmalloc + sprintf
 - use xstrfmt to replace xmalloc + strcpy/strcat
 - use xstrfmt to replace xmalloc + sprintf
 - use xstrdup instead of xmalloc + strcpy
 - use xstrfmt in favor of manual size calculations
 - strbuf: add xstrfmt helper

 Will merge to 'next'.


* jm/dedup-name-compare (2014-06-20) 2 commits
 - cleanup duplicate name_compare() functions
 - name-hash.c: replace cache_name_compare() with memcmp(3)

 Will merge to 'next'.


* kb/perf-trace (2014-06-17) 11 commits
 . git: add performance tracing for git's main() function to debug scripts
 . trace: add trace_performance facility to debug performance issues
 . trace: add high resolution timer function to debug performance issues
 . trace: add 'file:line' to all trace output
 . trace: move code around, in preparation to file:line output
 . trace: add current timestamp to all trace output
 . trace: add infrastructure to augment trace output with additional info
 . trace: factor out printing to the trace file
 . trace: remove redundant printf format attribute
 . trace: consistently name the format parameter
 . trace: move trace declarations from cache.h to new trace.h

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

* mg/verify-commit (2014-06-10) 3 commits
 - verify-commit: scriptable commit signature verification
 - gpg-interface: provide access to the payload
 - pretty: free the gpg status buf

 What is queued here is v1; v2 exists but I skipped it.
 Expecting a reroll.


* cc/replace-graft (2014-06-09) 5 commits
 - DONTMERGE: wise to wait for peff's commit->buffer length series
 - contrib: add convert-grafts-to-replace-refs.sh
 - Documentation: replace: add --graft option
 - replace: add test for --graft
 - replace: add --graft option

 "git replace" learned a "--graft" option to rewrite parents of a
 commit.

 Expecting a reroll on top of jk/commit-buffer-length.


* ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
 - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
 - git-add--interactive: Preserve diff heading when splitting hunks

 Waiting for a reroll.


* jn/gitweb-utf8-in-links (2014-05-27) 1 commit
 - gitweb: Harden UTF-8 handling in generated links

 $gmane/250758?


* rh/prompt-tests (2014-06-05) 11 commits
 - t9904: new __git_ps1 tests for Zsh
 - test-lib: make it possible to override how test code is eval'd
 - lib-prompt-tests.sh: add variable for string that encodes percent in PS1
 - lib-prompt-tests.sh: put all tests inside a function
 - t9903: move prompt tests to a new lib-prompt-tests.sh file
 - t9903: move PS1 color code variable definitions to lib-bash.sh
 - t9903: include "Bash" in test names via new $shellname var
 - t9903: run pc mode tests again with PS1 expansion disabled
 - t9903: move test name prefix to a separate variable
 - t9903: put the Bash pc mode prompt test cases in a function
 - t9903: remove Zsh test from the suite of Bash prompt tests

 Expecting a reroll to limit the damage to test_eval_; also reported
 to be broken with older zsh that are still in the field ($gmane/251231).


* ss/userdiff-update-csharp-java (2014-06-02) 2 commits
 - userdiff: support Java try keyword
 - userdiff: support C# async methods and correct C# keywords

 Reviews sent; waiting for a response.


* cc/interpret-trailers (2014-05-28) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from file or stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from input message and arguments
 - trailer: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.

 What is the status of this one?  I think I saw reviews by Michael
 but after that I do not recall seeing any updates.


* mh/lockfile (2014-04-15) 25 commits
 - trim_last_path_elm(): replace last_path_elm()
 - resolve_symlink(): take a strbuf parameter
 - resolve_symlink(): use a strbuf for internal scratch space
 - change lock_file::filename into a strbuf
 - commit_lock_file(): use a strbuf to manage temporary space
 - try_merge_strategy(): use a statically-allocated lock_file object
 - try_merge_strategy(): remove redundant lock_file allocation
 - struct lock_file: declare some fields volatile
 - lockfile: avoid transitory invalid states
 - commit_lock_file(): die() if called for unlocked lockfile object
 - commit_lock_file(): inline temporary variable
 - remove_lock_file(): call rollback_lock_file()
 - lock_file(): exit early if lockfile cannot be opened
 - write_packed_entry_fn(): convert cb_data into a (const int *)
 - prepare_index(): declare return value to be (const char *)
 - delete_ref_loose(): don't muck around in the lock_file's filename
 - cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
 - lockfile.c: document the various states of lock_file objects
 - lock_file(): always add lock_file object to lock_file_list
 - hold_lock_file_for_append(): release lock on errors
 - lockfile: unlock file if lockfile permissions cannot be adjusted
 - rollback_lock_file(): set fd to -1
 - rollback_lock_file(): do not clear filename redundantly
 - api-lockfile: expand the documentation
 - unable_to_lock_die(): rename function from unable_to_lock_index_die()

 Refactor and fix corner-case bugs in the lockfile API, all looked
 sensible.

 Expecting a reroll.


* bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
 - git-rebase: print name of rev when using shorthand

 Teach "git rebase -" to report the concrete name of the branch
 (i.e. the previous one).

 But it stops short and does not do the same for "git rebase @{-1}".
 Expecting a reroll.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Needs to be rebased, now kb/fast-hashmap topic is in.


* jk/makefile (2014-02-05) 16 commits
 . FIXUP
 . move LESS/LV pager environment to Makefile
 . Makefile: teach scripts to include make variables
 . FIXUP
 . Makefile: auto-build C strings from make variables
 . Makefile: drop *_SQ variables
 . FIXUP
 . Makefile: add c-quote helper function
 . Makefile: introduce sq function for shell-quoting
 . Makefile: always create files via make-var
 . Makefile: store GIT-* sentinel files in MAKE/
 . Makefile: prefer printf to echo for GIT-*
 . Makefile: use tempfile/mv strategy for GIT-*
 . Makefile: introduce make-var helper function
 . Makefile: fix git-instaweb dependency on gitweb
 . Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 . t1507 (rev-parse-upstream): fix typo in test title
 . implement @{publish} shorthand
 . branch_get: provide per-branch pushremote pointers
 . branch_get: return early on error
 . sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Ejected from 'pu' to unclutter.


* fc/publish-vs-upstream (2014-04-21) 8 commits
 . sha1_name: add support for @{publish} marks
 . sha1_name: simplify track finding
 . sha1_name: cleanup interpret_branch_name()
 . branch: display publish branch
 . push: add --set-publish option
 . branch: add --set-publish-to option
 . Add concept of 'publish' branch
 . t5516 (fetch-push): fix test restoration

 Add branch@{publish}; it seems that this is somewhat different from
 Ram and Peff started working on.  At least the tip needs to be
 rerolled not to squat on @{p} which @{push} and possibly @{pull}
 may want to share.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Needs to be rebased, now the pack-bitmap series is in.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

* jh/submodule-tests (2014-04-17) 1 commit
 - t7410: 210 tests for various 'git submodule update' scenarios

 More or less abandoned.  Will drop.


* nd/multiple-work-trees (2014-03-25) 28 commits
 . count-objects: report unused files in $GIT_DIR/repos/...
 . gc: support prune --repos
 . gc: style change -- no SP before closing bracket
 . prune: strategies for linked checkouts
 . checkout: detach if the branch is already checked out elsewhere
 . checkout: clean up half-prepared directories in --to mode
 . checkout: support checking out into a new working directory
 . use new wrapper write_file() for simple file writing
 . wrapper.c: wrapper to open a file, fprintf then close
 . setup.c: support multi-checkout repo setup
 . setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 . setup.c: convert check_repository_format_gently to use strbuf
 . setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 . setup.c: convert is_git_directory() to use strbuf
 . git-stash: avoid hardcoding $GIT_DIR/logs/....
 . *.sh: avoid hardcoding $GIT_DIR/hooks/...
 . git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 . $GIT_COMMON_DIR: a new environment variable
 . commit: use SEQ_DIR instead of hardcoding "sequencer"
 . fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 . reflog: avoid constructing .lock path with git_path
 . *.sh: respect $GIT_INDEX_FILE
 . git_path(): be aware of file relocation in $GIT_DIR
 . path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 . path.c: rename vsnpath() to do_git_path()
 . git_snpath(): retire and replace with strbuf_git_path()
 . path.c: make get_pathname() call sites return const char *
 . path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.


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

* fr/sequencer-fail-with-not-one-upon-no-ff (2014-06-09) 1 commit
  (merged to 'next' on 2014-06-16 at 29734cc)
 + sequencer: signal failed ff as an aborted, not a conflicted merge

 Will merge to 'master'.


* hv/submodule-config (2014-06-13) 6 commits
 - SQUASH compilation fix
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names
 - hashmap: add enum for hashmap free_entries option


* mc/git-p4-prepare-p4-only (2014-06-13) 1 commit
  (merged to 'next' on 2014-06-16 at 3c05e19)
 + git-p4: fix submit in non --prepare-p4-only mode

 Will merge to 'master'.


* sk/mingw-unicode-spawn-args (2014-06-16) 6 commits
 - Win32: Unicode arguments (incoming)
 - Win32: Unicode arguments (outgoing)
 - MinGW: disable CRT command line globbing
 - Win32: fix potential multi-threading issue
 - Win32: simplify internal mingw_spawn* APIs
 - Win32: let mingw_execve() return an int
 (this branch uses sk/mingw-main and sk/mingw-uni-console.)


* sp/complete-ext-alias (2014-06-13) 1 commit
  (merged to 'next' on 2014-06-16 at 399679e)
 + completion: handle '!f() { ... }; f' and "!sh -c '...' -" aliases

 Will merge to 'master'.


* bc/fix-rebase-merge-skip (2014-06-16) 1 commit
  (merged to 'next' on 2014-06-20 at 01f81f5)
 + rebase--merge: fix --skip with two conflicts in a row

 "git rebase --skip" did not work well when it stopped due to a
 conflict twice in a row.

 Will merge to 'master'.


* jl/submodule-tests (2014-06-20) 15 commits
 - revert: add t3513 for submodule updates
 - stash: add t3906 for submodule updates
 - am: add t4255 for submodule updates
 - cherry-pick: add t3512 for submodule updates
 - pull: add t5572 for submodule updates
 - rebase: add t3426 for submodule updates
 - merge: add t7613 for submodule updates
 - bisect: add t6041 for submodule updates
 - reset: add t7112 for submodule updates
 - read-tree: add t1013 for submodule updates
 - apply: add t4137 for submodule updates
 - checkout: call the new submodule update test framework
 - SQUASH???
 - submodules: Add the lib-submodule-update.sh test library
 - test-lib: add test_dir_is_empty()


* mc/doc-submodule-sync-recurse (2014-06-13) 1 commit
  (merged to 'next' on 2014-06-20 at 04815e3)
 + submodule: document "sync --recursive"

 Will merge to 'master'.


* pb/trim-trailing-spaces (2014-06-13) 1 commit
  (merged to 'next' on 2014-06-20 at 6985153)
 + t0008: do not depend on 'echo' handling backslashes specially

 Will merge to 'master'.


* po/error-message-style (2014-06-16) 1 commit
 - doc: state coding guideline for error message punctuation

 Expecting a reroll.


* rs/blame-refactor (2014-06-13) 2 commits
  (merged to 'next' on 2014-06-20 at ddaa722)
 + blame: simplify prepare_lines()
 + blame: factor out get_next_line()

 Will merge to 'master'.


* rs/ref-transaction (2014-06-20) 48 commits
 - refs.c: make write_ref_sha1 static
 - fetch.c: change s_update_ref to use a ref transaction
 - refs.c: propagate any errno==ENOTDIR from _commit back to the callers
 - refs.c: pass a skip list to name_conflict_fn
 - refs.c: call lock_ref_sha1_basic directly from commit
 - refs.c: move the check for valid refname to lock_ref_sha1_basic
 - refs.c: pass NULL as *flags to read_ref_full
 - refs.c: pass the ref log message to _create/delete/update instead of _commit
 - refs.c: add an err argument to delete_ref_loose
 - refs.c: make delete_ref use a transaction
 - refs.c: make prune_ref use a transaction to delete the ref
 - refs.c: remove lock_ref_sha1
 - refs.c: remove the update_ref_write function
 - refs.c: remove the update_ref_lock function
 - refs.c: make lock_ref_sha1 static
 - walker.c: use ref transaction for ref updates
 - fast-import.c: use a ref transaction when dumping tags
 - receive-pack.c: use a reference transaction for updating the refs
 - refs.c: change update_ref to use a transaction
 - branch.c: use ref transaction for all ref updates
 - fast-import.c: change update_branch to use ref transactions
 - sequencer.c: use ref transactions for all ref updates
 - commit.c: use ref transactions for updates
 - replace.c: use the ref transaction functions for updates
 - tag.c: use ref transactions when doing updates
 - refs.c: add transaction.status and track OPEN/CLOSED/ERROR
 - refs.c: make ref_transaction_begin take an err argument
 - refs.c: update ref_transaction_delete to check for error and return status
 - refs.c: change ref_transaction_create to do error checking and return status
 - refs.c: change ref_transaction_update() to do error checking and return status
 - refs.c: remove the onerr argument to ref_transaction_commit
 - update-ref: use err argument to get error from ref_transaction_commit
 - refs.c: make update_ref_write update a strbuf on failure
 - refs.c: make ref_update_reject_duplicates take a strbuf argument for errors
 - refs.c: log_ref_write should try to return meaningful errno
 - refs.c: make resolve_ref_unsafe set errno to something meaningful on error
 - refs.c: commit_packed_refs to return a meaningful errno on failure
 - refs.c: make remove_empty_directories always set errno to something sane
 - refs.c: verify_lock should set errno to something meaningful
 - refs.c: make sure log_ref_setup returns a meaningful errno
 - refs.c: add an err argument to repack_without_refs
 - lockfile.c: make lock_file return a meaningful errno on failurei
 - lockfile.c: add a new public function unable_to_lock_message
 - refs.c: add a strbuf argument to ref_transaction_commit for error logging
 - refs.c: allow passing NULL to ref_transaction_free
 - refs.c: constify the sha arguments for ref_transaction_create|delete|update
 - refs.c: ref_transaction_commit should not free the transaction
 - refs.c: remove ref_transaction_rollback

 Updated in response to review comments from Michael.

 Seems to be getting ready for 'next'.


* ye/doc-http-proto (2014-06-16) 1 commit
  (merged to 'next' on 2014-06-20 at 24f347d)
 + http-protocol.txt: Basic Auth is defined in RFC 2617, not RFC 2616

 Will merge to 'master'.


* jk/pretty-G-format-fixes (2014-06-17) 5 commits
  (merged to 'next' on 2014-06-20 at f504bbc)
 + pretty: avoid reading past end-of-string with "%G"
 + t7510: check %G* pretty-format output
 + t7510: test a commit signed by an unknown key
 + t7510: use consistent &&-chains in loop
 + t7510: stop referring to master in later tests

 Will merge to 'master'.


* nd/split-index (2014-06-13) 32 commits
 - t1700: new tests for split-index mode
 - t2104: make sure split index mode is off for the version test
 - read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
 - read-tree: note about dropping split-index mode or index version
 - read-tree: force split-index mode off on --index-output
 - rev-parse: add --shared-index-path to get shared index path
 - update-index --split-index: do not split if $GIT_DIR is read only
 - update-index: new options to enable/disable split index mode
 - split-index: strip pathname of on-disk replaced entries
 - split-index: do not invalidate cache-tree at read time
 - split-index: the reading part
 - split-index: the writing part
 - read-cache: mark updated entries for split index
 - read-cache: save deleted entries in split index
 - read-cache: mark new entries for split index
 - read-cache: split-index mode
 - read-cache: save index SHA-1 after reading
 - entry.c: update cache_changed if refresh_cache is set in checkout_entry()
 - cache-tree: mark istate->cache_changed on prime_cache_tree()
 - cache-tree: mark istate->cache_changed on cache tree update
 - cache-tree: mark istate->cache_changed on cache tree invalidation
 - unpack-trees: be specific what part of the index has changed
 - resolve-undo: be specific what part of the index has changed
 - update-index: be specific what part of the index has changed
 - read-cache: be specific what part of the index has changed
 - read-cache: be strict about "changed" in remove_marked_cache_entries()
 - read-cache: store in-memory flags in the first 12 bits of ce_flags
 - read-cache: relocate and unexport commit_locked_index()
 - read-cache: new API write_locked_index instead of write_index/write_cache
 - sequencer: do not update/refresh index if the lock cannot be held
 - ewah: delete unused ewah_read_mmap_native declaration
 - ewah: fix constness of ewah_read_mmap


* ep/avoid-test-a-o (2014-06-19) 20 commits
  (merged to 'next' on 2014-06-20 at c47322b)
 + git-submodule.sh: avoid "echo" path-like values
 + git-submodule.sh: avoid "test <cond> -a/-o <cond>"
 + t/test-lib-functions.sh: avoid "test <cond> -a/-o <cond>"
 + t/t9814-git-p4-rename.sh: avoid "test <cond> -a/-o <cond>"
 + t/t5538-push-shallow.sh: avoid "test <cond> -a/-o <cond>"
 + t/t5403-post-checkout-hook.sh: avoid "test <cond> -a/-o <cond>"
 + t/t5000-tar-tree.sh: avoid "test <cond> -a/-o <cond>"
 + t/t4102-apply-rename.sh: avoid "test <cond> -a/-o <cond>"
 + t/t0026-eol-config.sh: avoid "test <cond> -a/-o <cond>"
 + t/t0025-crlf-auto.sh: avoid "test <cond> -a/-o <cond>"
 + t/lib-httpd.sh: avoid "test <cond> -a/-o <cond>"
 + git-rebase--interactive.sh: avoid "test <cond> -a/-o <cond>"
 + git-mergetool.sh: avoid "test <cond> -a/-o <cond>"
 + git-bisect.sh: avoid "test <cond> -a/-o <cond>"
 + contrib/examples/git-resolve.sh: avoid "test <cond> -a/-o <cond>"
 + contrib/examples/git-repack.sh: avoid "test <cond> -a/-o <cond>"
 + contrib/examples/git-merge.sh: avoid "test <cond> -a/-o <cond>"
 + contrib/examples/git-commit.sh: avoid "test <cond> -a/-o <cond>"
 + contrib/examples/git-clone.sh: avoid "test <cond> -a/-o <cond>"
 + check_bindir: avoid "test <cond> -a/-o <cond>"

 Update tests and scripts to avoid "test ... -a ...", which is often
 more error-prone than "test ... && test ...".

 Squashed misconversion fix-up into git-submodule.sh updates.

 Will merge to 'master'.


* jc/test-lazy-prereq (2014-06-13) 1 commit
 - tests: drop GIT_*_TIMING_TESTS environment variable support


* jk/commit-buffer-length (2014-06-13) 18 commits
  (merged to 'next' on 2014-06-16 at b2d2d7b)
 + reuse cached commit buffer when parsing signatures
 + commit: record buffer length in cache
 + commit: convert commit->buffer to a slab
 + commit-slab: provide a static initializer
 + use get_commit_buffer everywhere
 + convert logmsg_reencode to get_commit_buffer
 + use get_commit_buffer to avoid duplicate code
 + use get_cached_commit_buffer where appropriate
 + provide helpers to access the commit buffer
 + provide a helper to set the commit buffer
 + provide a helper to free commit buffer
 + sequencer: use logmsg_reencode in get_message
 + logmsg_reencode: return const buffer
 + do not create "struct commit" with xcalloc
 + commit: push commit_index update into alloc_commit_node
 + alloc: include any-object allocations in alloc_report
 + replace dangerous uses of strbuf_attach
 + commit_tree: take a pointer/len pair rather than a const strbuf

 Move "commit->buffer" out of the in-core commit object and keep
 track of their lengths.  Use this to optimize the code paths to
 validate GPG signatures in commit objects.

 Will merge to 'master'.


* sk/mingw-dirent (2014-06-09) 5 commits
 - Win32 dirent: improve dirent implementation
 - Win32 dirent: clarify #include directives
 - Win32 dirent: change FILENAME_MAX to MAX_PATH
 - Win32 dirent: remove unused dirent.d_reclen member
 - Win32 dirent: remove unused dirent.d_ino member


* sk/mingw-main (2014-06-10) 2 commits
 - mingw: avoid const warning
 - Win32: move main macro to a function
 (this branch is used by sk/mingw-uni-console and sk/mingw-unicode-spawn-args.)


* sk/mingw-uni-console (2014-06-16) 7 commits
 - Win32: reliably detect console pipe handles
 - Win32: fix broken pipe detection
 - Win32: Thread-safe windows console output
 - Win32: add Unicode conversion functions
 - Win32: warn if the console font doesn't support Unicode
 - Win32: detect console streams more reliably
 - Win32: support Unicode console output
 (this branch is used by sk/mingw-unicode-spawn-args; uses sk/mingw-main.)

 Now, are Windows folks happy with all four mingw topics?


* jk/repack-pack-keep-objects (2014-06-10) 3 commits
  (merged to 'next' on 2014-06-16 at 89716c9)
 + repack: s/write_bitmap/&s/ in code
 + repack: respect pack.writebitmaps
 + repack: do not accidentally pack kept objects by default
 (this branch is used by jk/repack-pack-writebitmaps-config.)

 Recent updates to "git repack" started to duplicate objects that
 are in packfiles marked with .keep flag into the new packfile by
 mistake.

 Will merge to 'master'.


* jk/repack-pack-writebitmaps-config (2014-06-12) 4 commits
  (merged to 'next' on 2014-06-16 at 777005d)
 + t7700: drop explicit --no-pack-kept-objects from .keep test
 + repack: introduce repack.writeBitmaps config option
 + repack: simplify handling of --write-bitmap-index
 + pack-objects: stop respecting pack.writebitmaps
 (this branch uses jk/repack-pack-keep-objects.)

 Will merge to 'master'.


* nd/init-restore-env (2014-06-10) 1 commit
  (merged to 'next' on 2014-06-16 at ecbbfca)
 + git potty: restore environments after alias expansion

 Will merge to 'master'.


* jl/git-gui-show-added-submodule-changes (2014-04-15) 1 commit
 - git-gui: show staged submodules regardless of ignore config

 Tentatively queued what I expect to receive via Pat Thoyts.


* jl/gitk-show-added-submodule-changes (2014-04-15) 3 commits
 - gitk: show staged submodules regardless of ignore config
 - gitk: Merge branch 'new' of https://github.com/vnwildman/gitk
 - l10n: Init Vietnamese translation

 Will drop, as I heard from Paul that these are queued in his tree.


* mt/patch-id-stable (2014-06-10) 1 commit
 - patch-id: change default to stable

 Teaches "git patch-id" to compute the patch ID that does not change
 when the files in a single patch is reordered. As this new algorithm
 is backward incompatible, the last bit to flip it to be the default
 is left out of 'master' for now.
 * mt/patch-id-stable (2014-06-10) 1 commit
 - patch-id: change default to stable

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jun 2014, #06; Thu, 26)
@ 2014-06-26 22:02  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-06-26 22:02 UTC (permalink / raw)
  To: git

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

Fixes accumulated on the 'master' front made into 2.0.1.  The topics
in flight continue to separate into two distinct layers (i.e.
stalled-and-need-to-be-rerolld vs sure-to-graduate-soon).

Four mingw series are still in limbo--are they in good enough shape
for Windows folks who wanted to upstream them?

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

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

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

* ep/avoid-test-a-o (2014-06-19) 20 commits
  (merged to 'next' on 2014-06-20 at c47322b)
 + git-submodule.sh: avoid "echo" path-like values
 + git-submodule.sh: avoid "test <cond> -a/-o <cond>"
 + t/test-lib-functions.sh: avoid "test <cond> -a/-o <cond>"
 + t/t9814-git-p4-rename.sh: avoid "test <cond> -a/-o <cond>"
 + t/t5538-push-shallow.sh: avoid "test <cond> -a/-o <cond>"
 + t/t5403-post-checkout-hook.sh: avoid "test <cond> -a/-o <cond>"
 + t/t5000-tar-tree.sh: avoid "test <cond> -a/-o <cond>"
 + t/t4102-apply-rename.sh: avoid "test <cond> -a/-o <cond>"
 + t/t0026-eol-config.sh: avoid "test <cond> -a/-o <cond>"
 + t/t0025-crlf-auto.sh: avoid "test <cond> -a/-o <cond>"
 + t/lib-httpd.sh: avoid "test <cond> -a/-o <cond>"
 + git-rebase--interactive.sh: avoid "test <cond> -a/-o <cond>"
 + git-mergetool.sh: avoid "test <cond> -a/-o <cond>"
 + git-bisect.sh: avoid "test <cond> -a/-o <cond>"
 + contrib/examples/git-resolve.sh: avoid "test <cond> -a/-o <cond>"
 + contrib/examples/git-repack.sh: avoid "test <cond> -a/-o <cond>"
 + contrib/examples/git-merge.sh: avoid "test <cond> -a/-o <cond>"
 + contrib/examples/git-commit.sh: avoid "test <cond> -a/-o <cond>"
 + contrib/examples/git-clone.sh: avoid "test <cond> -a/-o <cond>"
 + check_bindir: avoid "test <cond> -a/-o <cond>"

 Update tests and scripts to avoid "test ... -a ...", which is often
 more error-prone than "test ... && test ...".

 Squashed misconversion fix-up into git-submodule.sh updates.


* fr/sequencer-fail-with-not-one-upon-no-ff (2014-06-09) 1 commit
  (merged to 'next' on 2014-06-16 at 29734cc)
 + sequencer: signal failed ff as an aborted, not a conflicted merge


* jk/repack-pack-keep-objects (2014-06-10) 3 commits
  (merged to 'next' on 2014-06-16 at 89716c9)
 + repack: s/write_bitmap/&s/ in code
 + repack: respect pack.writebitmaps
 + repack: do not accidentally pack kept objects by default
 (this branch is used by jk/repack-pack-writebitmaps-config.)

 Recent updates to "git repack" started to duplicate objects that
 are in packfiles marked with .keep flag into the new packfile by
 mistake.


* jk/repack-pack-writebitmaps-config (2014-06-12) 4 commits
  (merged to 'next' on 2014-06-16 at 777005d)
 + t7700: drop explicit --no-pack-kept-objects from .keep test
 + repack: introduce repack.writeBitmaps config option
 + repack: simplify handling of --write-bitmap-index
 + pack-objects: stop respecting pack.writebitmaps
 (this branch uses jk/repack-pack-keep-objects.)


* jm/dedup-name-compare (2014-06-20) 2 commits
 + cleanup duplicate name_compare() functions
 + name-hash.c: replace cache_name_compare() with memcmp(3)


* mc/doc-submodule-sync-recurse (2014-06-13) 1 commit
  (merged to 'next' on 2014-06-20 at 04815e3)
 + submodule: document "sync --recursive"


* mc/git-p4-prepare-p4-only (2014-06-13) 1 commit
  (merged to 'next' on 2014-06-16 at 3c05e19)
 + git-p4: fix submit in non --prepare-p4-only mode


* nd/init-restore-env (2014-06-10) 1 commit
  (merged to 'next' on 2014-06-16 at ecbbfca)
 + git potty: restore environments after alias expansion


* pb/trim-trailing-spaces (2014-06-13) 1 commit
  (merged to 'next' on 2014-06-20 at 6985153)
 + t0008: do not depend on 'echo' handling backslashes specially


* rs/blame-refactor (2014-06-13) 2 commits
  (merged to 'next' on 2014-06-20 at ddaa722)
 + blame: simplify prepare_lines()
 + blame: factor out get_next_line()


* sp/complete-ext-alias (2014-06-13) 1 commit
  (merged to 'next' on 2014-06-16 at 399679e)
 + completion: handle '!f() { ... }; f' and "!sh -c '...' -" aliases


* tb/unicode-7.0-display-width (2014-06-18) 1 commit
  (merged to 'next' on 2014-06-20 at 111b246)
 + Update of unicode_width.h to Unicode Version 7.0


* ye/doc-http-proto (2014-06-16) 1 commit
  (merged to 'next' on 2014-06-20 at 24f347d)
 + http-protocol.txt: Basic Auth is defined in RFC 2617, not RFC 2616

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

* jc/fix-clone-single-starting-at-a-tag (2014-06-23) 1 commit
 - builtin/clone.c: detect a clone starting at a tag correctly

 Will merge to 'next'.

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

* cc/replace-graft (2014-06-09) 5 commits
 - DONTMERGE: wise to wait for peff's commit->buffer length series
 - contrib: add convert-grafts-to-replace-refs.sh
 - Documentation: replace: add --graft option
 - replace: add test for --graft
 - replace: add --graft option

 "git replace" learned a "--graft" option to rewrite parents of a
 commit.

 Expecting a reroll on top of jk/commit-buffer-length.


* ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
 - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
 - git-add--interactive: Preserve diff heading when splitting hunks

 Waiting for a reroll.


* jn/gitweb-utf8-in-links (2014-05-27) 1 commit
 - gitweb: Harden UTF-8 handling in generated links

 $gmane/250758?


* rh/prompt-tests (2014-06-05) 11 commits
 - t9904: new __git_ps1 tests for Zsh
 - test-lib: make it possible to override how test code is eval'd
 - lib-prompt-tests.sh: add variable for string that encodes percent in PS1
 - lib-prompt-tests.sh: put all tests inside a function
 - t9903: move prompt tests to a new lib-prompt-tests.sh file
 - t9903: move PS1 color code variable definitions to lib-bash.sh
 - t9903: include "Bash" in test names via new $shellname var
 - t9903: run pc mode tests again with PS1 expansion disabled
 - t9903: move test name prefix to a separate variable
 - t9903: put the Bash pc mode prompt test cases in a function
 - t9903: remove Zsh test from the suite of Bash prompt tests

 Expecting a reroll to limit the damage to test_eval_; also reported
 to be broken with older zsh that are still in the field ($gmane/251231).


* ss/userdiff-update-csharp-java (2014-06-02) 2 commits
 - userdiff: support Java try keyword
 - userdiff: support C# async methods and correct C# keywords

 Reviews sent; waiting for a response.


* cc/interpret-trailers (2014-05-28) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from file or stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from input message and arguments
 - trailer: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.

 What is the status of this one?  I think I saw reviews by Michael
 but after that I do not recall seeing any updates.


* mh/lockfile (2014-04-15) 25 commits
 - trim_last_path_elm(): replace last_path_elm()
 - resolve_symlink(): take a strbuf parameter
 - resolve_symlink(): use a strbuf for internal scratch space
 - change lock_file::filename into a strbuf
 - commit_lock_file(): use a strbuf to manage temporary space
 - try_merge_strategy(): use a statically-allocated lock_file object
 - try_merge_strategy(): remove redundant lock_file allocation
 - struct lock_file: declare some fields volatile
 - lockfile: avoid transitory invalid states
 - commit_lock_file(): die() if called for unlocked lockfile object
 - commit_lock_file(): inline temporary variable
 - remove_lock_file(): call rollback_lock_file()
 - lock_file(): exit early if lockfile cannot be opened
 - write_packed_entry_fn(): convert cb_data into a (const int *)
 - prepare_index(): declare return value to be (const char *)
 - delete_ref_loose(): don't muck around in the lock_file's filename
 - cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
 - lockfile.c: document the various states of lock_file objects
 - lock_file(): always add lock_file object to lock_file_list
 - hold_lock_file_for_append(): release lock on errors
 - lockfile: unlock file if lockfile permissions cannot be adjusted
 - rollback_lock_file(): set fd to -1
 - rollback_lock_file(): do not clear filename redundantly
 - api-lockfile: expand the documentation
 - unable_to_lock_die(): rename function from unable_to_lock_index_die()

 Refactor and fix corner-case bugs in the lockfile API, all looked
 sensible.

 Expecting a reroll.


* bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
 - git-rebase: print name of rev when using shorthand

 Teach "git rebase -" to report the concrete name of the branch
 (i.e. the previous one).

 But it stops short and does not do the same for "git rebase @{-1}".
 Expecting a reroll.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Needs to be rebased, now kb/fast-hashmap topic is in.


* jk/makefile (2014-02-05) 16 commits
 . FIXUP
 . move LESS/LV pager environment to Makefile
 . Makefile: teach scripts to include make variables
 . FIXUP
 . Makefile: auto-build C strings from make variables
 . Makefile: drop *_SQ variables
 . FIXUP
 . Makefile: add c-quote helper function
 . Makefile: introduce sq function for shell-quoting
 . Makefile: always create files via make-var
 . Makefile: store GIT-* sentinel files in MAKE/
 . Makefile: prefer printf to echo for GIT-*
 . Makefile: use tempfile/mv strategy for GIT-*
 . Makefile: introduce make-var helper function
 . Makefile: fix git-instaweb dependency on gitweb
 . Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 . t1507 (rev-parse-upstream): fix typo in test title
 . implement @{publish} shorthand
 . branch_get: provide per-branch pushremote pointers
 . branch_get: return early on error
 . sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Ejected from 'pu' to unclutter.


* fc/publish-vs-upstream (2014-04-21) 8 commits
 . sha1_name: add support for @{publish} marks
 . sha1_name: simplify track finding
 . sha1_name: cleanup interpret_branch_name()
 . branch: display publish branch
 . push: add --set-publish option
 . branch: add --set-publish-to option
 . Add concept of 'publish' branch
 . t5516 (fetch-push): fix test restoration

 Add branch@{publish}; it seems that this is somewhat different from
 Ram and Peff started working on.  At least the tip needs to be
 rerolled not to squat on @{p} which @{push} and possibly @{pull}
 may want to share.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Needs to be rebased, now the pack-bitmap series is in.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.


* jh/submodule-tests (2014-04-17) 1 commit
 - t7410: 210 tests for various 'git submodule update' scenarios

 More or less abandoned.  Will drop.


* nd/multiple-work-trees (2014-03-25) 28 commits
 . count-objects: report unused files in $GIT_DIR/repos/...
 . gc: support prune --repos
 . gc: style change -- no SP before closing bracket
 . prune: strategies for linked checkouts
 . checkout: detach if the branch is already checked out elsewhere
 . checkout: clean up half-prepared directories in --to mode
 . checkout: support checking out into a new working directory
 . use new wrapper write_file() for simple file writing
 . wrapper.c: wrapper to open a file, fprintf then close
 . setup.c: support multi-checkout repo setup
 . setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 . setup.c: convert check_repository_format_gently to use strbuf
 . setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 . setup.c: convert is_git_directory() to use strbuf
 . git-stash: avoid hardcoding $GIT_DIR/logs/....
 . *.sh: avoid hardcoding $GIT_DIR/hooks/...
 . git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 . $GIT_COMMON_DIR: a new environment variable
 . commit: use SEQ_DIR instead of hardcoding "sequencer"
 . fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 . reflog: avoid constructing .lock path with git_path
 . *.sh: respect $GIT_INDEX_FILE
 . git_path(): be aware of file relocation in $GIT_DIR
 . path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 . path.c: rename vsnpath() to do_git_path()
 . git_snpath(): retire and replace with strbuf_git_path()
 . path.c: make get_pathname() call sites return const char *
 . path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.

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

* mg/verify-commit (2014-06-23) 5 commits
 - t7510: test verify-commit
 - t7510: exit for loop with test result
 - verify-commit: scriptable commit signature verification
 - gpg-interface: provide access to the payload
 - gpg-interface: provide clear helper for struct signature_check

 Add 'verify-commit' to be used in a way similar to 'verify-tag' is
 used.  Further work on verifying the mergetags might be needed.

 Will merge to 'next'.


* dt/refs-check-refname-component-sse (2014-06-18) 1 commit
  (merged to 'next' on 2014-06-20 at d286027)
 + refs.c: SSE2 optimizations for check_refname_component

 Further micro-optimization of a leaf-function.

 Will merge to 'master'.


* ye/http-extract-charset (2014-06-17) 1 commit
  (merged to 'next' on 2014-06-20 at 9492bae)
 + http: fix charset detection of extract_content_type()

 Will merge to 'master'.


* jk/skip-prefix (2014-06-20) 18 commits
  (merged to 'next' on 2014-06-23 at cd387a6)
 + http-push: refactor parsing of remote object names
 + imap-send: use skip_prefix instead of using magic numbers
 + use skip_prefix to avoid repeated calculations
 + git: avoid magic number with skip_prefix
 + fetch-pack: refactor parsing in get_ack
 + fast-import: refactor parsing of spaces
 + stat_opt: check extra strlen call
 + daemon: use skip_prefix to avoid magic numbers
 + fast-import: use skip_prefix for parsing input
 + use skip_prefix to avoid repeating strings
 + use skip_prefix to avoid magic numbers
 + transport-helper: avoid reading past end-of-string
 + fast-import: fix read of uninitialized argv memory
 + apply: use skip_prefix instead of raw addition
 + refactor skip_prefix to return a boolean
 + avoid using skip_prefix as a boolean
 + daemon: mark some strings as const
 + parse_diff_color_slot: drop ofs parameter

 Will merge to 'master'.


* jk/xstrfmt (2014-06-25) 11 commits
  (merged to 'next' on 2014-06-25 at 5031d4e)
 + setup_git_env(): introduce git_path_from_env() helper
  (merged to 'next' on 2014-06-23 at 64f2558)
 + unique_path: fix unlikely heap overflow
 + walker_fetch: fix minor memory leak
 + merge: use argv_array when spawning merge strategy
 + sequencer: use argv_array_pushf
 + setup_git_env: use git_pathdup instead of xmalloc + sprintf
 + use xstrfmt to replace xmalloc + strcpy/strcat
 + use xstrfmt to replace xmalloc + sprintf
 + use xstrdup instead of xmalloc + strcpy
 + use xstrfmt in favor of manual size calculations
 + strbuf: add xstrfmt helper

 Will merge to 'master'.


* kb/perf-trace (2014-06-20) 11 commits
 - git: add performance tracing for git's main() function to debug scripts
 - trace: add trace_performance facility to debug performance issues
 - trace: add high resolution timer function to debug performance issues
 - trace: add 'file:line' to all trace output
 - trace: move code around, in preparation to file:line output
 - trace: add current timestamp to all trace output
 - trace: add infrastructure to augment trace output with additional info
 - trace: factor out printing to the trace file
 - trace: remove redundant printf format attribute
 - trace: consistently name the format parameter
 - trace: move trace declarations from cache.h to new trace.h

 Expecting a reroll.


* hv/submodule-config (2014-06-13) 6 commits
 - SQUASH compilation fix
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names
 - hashmap: add enum for hashmap free_entries option

 Expecting a reroll.


* bc/fix-rebase-merge-skip (2014-06-16) 1 commit
  (merged to 'next' on 2014-06-20 at 01f81f5)
 + rebase--merge: fix --skip with two conflicts in a row

 "git rebase --skip" did not work well when it stopped due to a
 conflict twice in a row.

 Will merge to 'master'.


* jl/submodule-tests (2014-06-20) 15 commits
 - revert: add t3513 for submodule updates
 - stash: add t3906 for submodule updates
 - am: add t4255 for submodule updates
 - cherry-pick: add t3512 for submodule updates
 - pull: add t5572 for submodule updates
 - rebase: add t3426 for submodule updates
 - merge: add t7613 for submodule updates
 - bisect: add t6041 for submodule updates
 - reset: add t7112 for submodule updates
 - read-tree: add t1013 for submodule updates
 - apply: add t4137 for submodule updates
 - checkout: call the new submodule update test framework
 - SQUASH???
 - submodules: Add the lib-submodule-update.sh test library
 - test-lib: add test_dir_is_empty()

 Expecting a reroll.


* po/error-message-style (2014-06-16) 1 commit
 - doc: state coding guideline for error message punctuation

 Expecting a reroll.


* rs/ref-transaction (2014-06-20) 48 commits
 - refs.c: make write_ref_sha1 static
 - fetch.c: change s_update_ref to use a ref transaction
 - refs.c: propagate any errno==ENOTDIR from _commit back to the callers
 - refs.c: pass a skip list to name_conflict_fn
 - refs.c: call lock_ref_sha1_basic directly from commit
 - refs.c: move the check for valid refname to lock_ref_sha1_basic
 - refs.c: pass NULL as *flags to read_ref_full
 - refs.c: pass the ref log message to _create/delete/update instead of _commit
 - refs.c: add an err argument to delete_ref_loose
 - refs.c: make delete_ref use a transaction
 - refs.c: make prune_ref use a transaction to delete the ref
 - refs.c: remove lock_ref_sha1
 - refs.c: remove the update_ref_write function
 - refs.c: remove the update_ref_lock function
 - refs.c: make lock_ref_sha1 static
 - walker.c: use ref transaction for ref updates
 - fast-import.c: use a ref transaction when dumping tags
 - receive-pack.c: use a reference transaction for updating the refs
 - refs.c: change update_ref to use a transaction
 - branch.c: use ref transaction for all ref updates
 - fast-import.c: change update_branch to use ref transactions
 - sequencer.c: use ref transactions for all ref updates
 - commit.c: use ref transactions for updates
 - replace.c: use the ref transaction functions for updates
 - tag.c: use ref transactions when doing updates
 - refs.c: add transaction.status and track OPEN/CLOSED/ERROR
 - refs.c: make ref_transaction_begin take an err argument
 - refs.c: update ref_transaction_delete to check for error and return status
 - refs.c: change ref_transaction_create to do error checking and return status
 - refs.c: change ref_transaction_update() to do error checking and return status
 - refs.c: remove the onerr argument to ref_transaction_commit
 - update-ref: use err argument to get error from ref_transaction_commit
 - refs.c: make update_ref_write update a strbuf on failure
 - refs.c: make ref_update_reject_duplicates take a strbuf argument for errors
 - refs.c: log_ref_write should try to return meaningful errno
 - refs.c: make resolve_ref_unsafe set errno to something meaningful on error
 - refs.c: commit_packed_refs to return a meaningful errno on failure
 - refs.c: make remove_empty_directories always set errno to something sane
 - refs.c: verify_lock should set errno to something meaningful
 - refs.c: make sure log_ref_setup returns a meaningful errno
 - refs.c: add an err argument to repack_without_refs
 - lockfile.c: make lock_file return a meaningful errno on failurei
 - lockfile.c: add a new public function unable_to_lock_message
 - refs.c: add a strbuf argument to ref_transaction_commit for error logging
 - refs.c: allow passing NULL to ref_transaction_free
 - refs.c: constify the sha arguments for ref_transaction_create|delete|update
 - refs.c: ref_transaction_commit should not free the transaction
 - refs.c: remove ref_transaction_rollback

 Updated in response to review comments from Michael.

 Portability workaround may be needed on top ($gmane/252496).
 Will merge to 'next'.



* jk/pretty-G-format-fixes (2014-06-25) 6 commits
  (merged to 'next' on 2014-06-26 at 7138407)
 + move "%G" format test from t7510 to t6006
  (merged to 'next' on 2014-06-20 at f504bbc)
 + pretty: avoid reading past end-of-string with "%G"
 + t7510: check %G* pretty-format output
 + t7510: test a commit signed by an unknown key
 + t7510: use consistent &&-chains in loop
 + t7510: stop referring to master in later tests

 Will merge to 'master'.


* nd/split-index (2014-06-13) 32 commits
 - t1700: new tests for split-index mode
 - t2104: make sure split index mode is off for the version test
 - read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
 - read-tree: note about dropping split-index mode or index version
 - read-tree: force split-index mode off on --index-output
 - rev-parse: add --shared-index-path to get shared index path
 - update-index --split-index: do not split if $GIT_DIR is read only
 - update-index: new options to enable/disable split index mode
 - split-index: strip pathname of on-disk replaced entries
 - split-index: do not invalidate cache-tree at read time
 - split-index: the reading part
 - split-index: the writing part
 - read-cache: mark updated entries for split index
 - read-cache: save deleted entries in split index
 - read-cache: mark new entries for split index
 - read-cache: split-index mode
 - read-cache: save index SHA-1 after reading
 - entry.c: update cache_changed if refresh_cache is set in checkout_entry()
 - cache-tree: mark istate->cache_changed on prime_cache_tree()
 - cache-tree: mark istate->cache_changed on cache tree update
 - cache-tree: mark istate->cache_changed on cache tree invalidation
 - unpack-trees: be specific what part of the index has changed
 - resolve-undo: be specific what part of the index has changed
 - update-index: be specific what part of the index has changed
 - read-cache: be specific what part of the index has changed
 - read-cache: be strict about "changed" in remove_marked_cache_entries()
 - read-cache: store in-memory flags in the first 12 bits of ce_flags
 - read-cache: relocate and unexport commit_locked_index()
 - read-cache: new API write_locked_index instead of write_index/write_cache
 - sequencer: do not update/refresh index if the lock cannot be held
 - ewah: delete unused ewah_read_mmap_native declaration
 - ewah: fix constness of ewah_read_mmap

 What's the doneness of this one?


* jc/test-lazy-prereq (2014-06-13) 1 commit
 - tests: drop GIT_*_TIMING_TESTS environment variable support

 Test-script clean-up.

 Will hold.


* jk/commit-buffer-length (2014-06-13) 18 commits
  (merged to 'next' on 2014-06-16 at b2d2d7b)
 + reuse cached commit buffer when parsing signatures
 + commit: record buffer length in cache
 + commit: convert commit->buffer to a slab
 + commit-slab: provide a static initializer
 + use get_commit_buffer everywhere
 + convert logmsg_reencode to get_commit_buffer
 + use get_commit_buffer to avoid duplicate code
 + use get_cached_commit_buffer where appropriate
 + provide helpers to access the commit buffer
 + provide a helper to set the commit buffer
 + provide a helper to free commit buffer
 + sequencer: use logmsg_reencode in get_message
 + logmsg_reencode: return const buffer
 + do not create "struct commit" with xcalloc
 + commit: push commit_index update into alloc_commit_node
 + alloc: include any-object allocations in alloc_report
 + replace dangerous uses of strbuf_attach
 + commit_tree: take a pointer/len pair rather than a const strbuf

 Move "commit->buffer" out of the in-core commit object and keep
 track of their lengths.  Use this to optimize the code paths to
 validate GPG signatures in commit objects.

 Will merge to 'master'.


* sk/mingw-unicode-spawn-args (2014-06-16) 6 commits
 - Win32: Unicode arguments (incoming)
 - Win32: Unicode arguments (outgoing)
 - MinGW: disable CRT command line globbing
 - Win32: fix potential multi-threading issue
 - Win32: simplify internal mingw_spawn* APIs
 - Win32: let mingw_execve() return an int
 (this branch uses sk/mingw-main and sk/mingw-uni-console.)

 Are Windows folks happy with all four mingw topics?


* sk/mingw-dirent (2014-06-09) 5 commits
 - Win32 dirent: improve dirent implementation
 - Win32 dirent: clarify #include directives
 - Win32 dirent: change FILENAME_MAX to MAX_PATH
 - Win32 dirent: remove unused dirent.d_reclen member
 - Win32 dirent: remove unused dirent.d_ino member

 Are Windows folks happy with all four mingw topics?


* sk/mingw-main (2014-06-10) 2 commits
 - mingw: avoid const warning
 - Win32: move main macro to a function
 (this branch is used by sk/mingw-uni-console and sk/mingw-unicode-spawn-args.)

 Are Windows folks happy with all four mingw topics?


* sk/mingw-uni-console (2014-06-16) 7 commits
 - Win32: reliably detect console pipe handles
 - Win32: fix broken pipe detection
 - Win32: Thread-safe windows console output
 - Win32: add Unicode conversion functions
 - Win32: warn if the console font doesn't support Unicode
 - Win32: detect console streams more reliably
 - Win32: support Unicode console output
 (this branch is used by sk/mingw-unicode-spawn-args; uses sk/mingw-main.)

 Are Windows folks happy with all four mingw topics?


* mt/patch-id-stable (2014-06-10) 1 commit
 - patch-id: change default to stable

 Teaches "git patch-id" to compute the patch ID that does not change
 when the files in a single patch is reordered. As this new algorithm
 is backward incompatible, the last bit to flip it to be the default
 is left out of 'master' for now.

 Will hold.

--------------------------------------------------
[Discarded]

* jl/git-gui-show-added-submodule-changes (2014-04-15) 1 commit
 . git-gui: show staged submodules regardless of ignore config

 Merged to the upstream.


* jl/gitk-show-added-submodule-changes (2014-04-15) 1 commit
 . gitk: show staged submodules regardless of ignore config

 Merged to the upstream.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jul 2014, #01; Tue, 8)
@ 2014-07-08 21:47  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-07-08 21:47 UTC (permalink / raw)
  To: git

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

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

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

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

* bc/fix-rebase-merge-skip (2014-06-16) 1 commit
  (merged to 'next' on 2014-06-20 at 01f81f5)
 + rebase--merge: fix --skip with two conflicts in a row

 "git rebase --skip" did not work well when it stopped due to a
 conflict twice in a row.


* dt/refs-check-refname-component-sse (2014-06-18) 1 commit
  (merged to 'next' on 2014-06-20 at d286027)
 + refs.c: SSE2 optimizations for check_refname_component

 Further micro-optimization of a leaf-function.


* jk/commit-buffer-length (2014-06-13) 18 commits
  (merged to 'next' on 2014-06-16 at b2d2d7b)
 + reuse cached commit buffer when parsing signatures
 + commit: record buffer length in cache
 + commit: convert commit->buffer to a slab
 + commit-slab: provide a static initializer
 + use get_commit_buffer everywhere
 + convert logmsg_reencode to get_commit_buffer
 + use get_commit_buffer to avoid duplicate code
 + use get_cached_commit_buffer where appropriate
 + provide helpers to access the commit buffer
 + provide a helper to set the commit buffer
 + provide a helper to free commit buffer
 + sequencer: use logmsg_reencode in get_message
 + logmsg_reencode: return const buffer
 + do not create "struct commit" with xcalloc
 + commit: push commit_index update into alloc_commit_node
 + alloc: include any-object allocations in alloc_report
 + replace dangerous uses of strbuf_attach
 + commit_tree: take a pointer/len pair rather than a const strbuf

 Move "commit->buffer" out of the in-core commit object and keep
 track of their lengths.  Use this to optimize the code paths to
 validate GPG signatures in commit objects.


* ye/http-extract-charset (2014-06-17) 1 commit
  (merged to 'next' on 2014-06-20 at 9492bae)
 + http: fix charset detection of extract_content_type()

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

* cc/replace-edit (2014-06-25) 3 commits
 - replace: use argv_array in export_object
 - avoid double close of descriptors handed to run_command
 - replace: replace spaces with tabs in indentation
 (this branch is used by jk/replace-edit-raw.)

 Will merge to 'next'.


* ep/submodule-code-cleanup (2014-06-30) 1 commit
 - submodule.c: use the ARRAY_SIZE macro

 Will merge to 'next'.


* jk/replace-edit-raw (2014-06-25) 1 commit
 - replace: add a --raw mode for --edit
 (this branch uses cc/replace-edit.)

 Will merge to 'next'.


* jk/strip-suffix (2014-06-30) 9 commits
 - prepare_packed_git_one: refactor duplicate-pack check
 - verify-pack: use strbuf_strip_suffix
 - strbuf: implement strbuf_strip_suffix
 - index-pack: use strip_suffix to avoid magic numbers
 - use strip_suffix instead of ends_with in simple cases
 - replace has_extension with ends_with
 - implement ends_with via strip_suffix
 - add strip_suffix function
 - sha1_file: replace PATH_MAX buffer with strbuf in prepare_packed_git_one()

 Will merge to 'next'.


* jk/tag-contains (2014-06-30) 8 commits
 - perf: add tests for tag --contains
 - tag: use commit_contains
 - commit: provide a fast multi-tip contains function
 - string-list: add pos to iterator callback
 - add functions for memory-efficient bitmaps
 - paint_down_to_common: use prio_queue
 - tag: factor out decision to stream tags
 - tag: allow --sort with -n

 Expecting a reroll.


* mg/fix-log-mergetag-color (2014-06-30) 1 commit
 - log: correctly identify mergetag signature verification status

 Will merge to 'next'.


* mk/merge-incomplete-files (2014-06-30) 2 commits
 - git-merge-file: do not add LF at EOF while applying unrelated change
 - t6023-merge-file.sh: fix and mark as broken invalid tests

 Will merge to 'next'.


* rs/status-code-clean-up (2014-06-29) 2 commits
  (merged to 'next' on 2014-07-08 at db67965)
 + wt-status: simplify building of summary limit argument
 + wt-status: use argv_array for environment

 Will merge to 'master'.


* tb/crlf-tests (2014-07-08) 2 commits
  (merged to 'next' on 2014-07-08 at 40764b7)
 + t0027: combinations of core.autocrlf, core.eol and text
 + t0025: rename the test files

 Will merge to 'master'.


* ak/profile-feedback-build (2014-07-08) 4 commits
 - Fix profile feedback with -jN and add profile-fast
 - Run the perf test suite for profile feedback too
 - Don't define away __attribute__ on gcc
 - Use BASIC_FLAGS for profile feedback

 Will merge to 'next'.


* cb/filter-branch-prune-empty-degenerate-merges (2014-07-01) 1 commit
 - filter-branch: eliminate duplicate mapped parents

 Will merge to 'next'.


* cc/for-each-mergetag (2014-07-07) 1 commit
 - commit: add for_each_mergetag()
 (this branch is used by cc/replace-graft.)

 Will merge to 'next'.


* dt/cache-tree-repair (2014-07-08) 4 commits
 - cache-tree: write updated cache-tree after commit
 - cache-tree: subdirectory tests
 - test-dump-cache-tree: invalid trees are not errors
 - cache-tree: create/update cache-tree on checkout

 Reviews seen; waiting for a response.


* jl/test-lint-scripts (2014-07-07) 3 commits
 - DONTMERGE: missing sign-off
 - t/Makefile: always test all lint targets when running tests
 - t/Makefile: check helper scripts for non-portable shell commands too


* kb/hashmap-updates (2014-07-07) 4 commits
 - hashmap: add string interning API
 - hashmap: add simplified hashmap_get_from_hash() API
 - hashmap: improve struct hashmap member documentation
 - hashmap: factor out getting a hash code from a SHA1

 Reviews sent; waiting for a response.


* kb/path-max-must-go (2014-07-07) 2 commits
  (merged to 'next' on 2014-07-08 at 4d41c18)
 + dir: remove PATH_MAX limitation
 + symlinks: remove PATH_MAX limitation

 Will merge to 'master'.


* rs/fix-alt-odb-path-comparison (2014-07-01) 1 commit
  (merged to 'next' on 2014-07-08 at f9c69e5)
 + sha1_file: avoid overrunning alternate object base string

 Will merge to 'master'.


* rs/simplify-archive-tests (2014-07-07) 1 commit
  (merged to 'next' on 2014-07-08 at c46cfac)
 + t5000, t5003: simplify commit

 Will merge to 'master'.


* zk/log-graph-showsig (2014-07-08) 1 commit
 - log: fix indentation for --graph --show-signature

 The "--show-signature" option did not pay much attention to
 "--graph".

 Will merge to 'next'.

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

* ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
 - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
 - git-add--interactive: Preserve diff heading when splitting hunks

 Waiting for a reroll.


* jn/gitweb-utf8-in-links (2014-05-27) 1 commit
 - gitweb: Harden UTF-8 handling in generated links

 $gmane/250758?


* rh/prompt-tests (2014-06-05) 11 commits
 - t9904: new __git_ps1 tests for Zsh
 - test-lib: make it possible to override how test code is eval'd
 - lib-prompt-tests.sh: add variable for string that encodes percent in PS1
 - lib-prompt-tests.sh: put all tests inside a function
 - t9903: move prompt tests to a new lib-prompt-tests.sh file
 - t9903: move PS1 color code variable definitions to lib-bash.sh
 - t9903: include "Bash" in test names via new $shellname var
 - t9903: run pc mode tests again with PS1 expansion disabled
 - t9903: move test name prefix to a separate variable
 - t9903: put the Bash pc mode prompt test cases in a function
 - t9903: remove Zsh test from the suite of Bash prompt tests

 Expecting a reroll to limit the damage to test_eval_; also reported
 to be broken with older zsh that are still in the field ($gmane/251231).


* ss/userdiff-update-csharp-java (2014-06-02) 2 commits
 - userdiff: support Java try keyword
 - userdiff: support C# async methods and correct C# keywords

 Reviews sent; waiting for a response.


* cc/interpret-trailers (2014-05-28) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from file or stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from input message and arguments
 - trailer: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.

 What is the status of this one?  I think I saw reviews by Michael
 but after that I do not recall seeing any updates.


* mh/lockfile (2014-04-15) 25 commits
 - trim_last_path_elm(): replace last_path_elm()
 - resolve_symlink(): take a strbuf parameter
 - resolve_symlink(): use a strbuf for internal scratch space
 - change lock_file::filename into a strbuf
 - commit_lock_file(): use a strbuf to manage temporary space
 - try_merge_strategy(): use a statically-allocated lock_file object
 - try_merge_strategy(): remove redundant lock_file allocation
 - struct lock_file: declare some fields volatile
 - lockfile: avoid transitory invalid states
 - commit_lock_file(): die() if called for unlocked lockfile object
 - commit_lock_file(): inline temporary variable
 - remove_lock_file(): call rollback_lock_file()
 - lock_file(): exit early if lockfile cannot be opened
 - write_packed_entry_fn(): convert cb_data into a (const int *)
 - prepare_index(): declare return value to be (const char *)
 - delete_ref_loose(): don't muck around in the lock_file's filename
 - cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
 - lockfile.c: document the various states of lock_file objects
 - lock_file(): always add lock_file object to lock_file_list
 - hold_lock_file_for_append(): release lock on errors
 - lockfile: unlock file if lockfile permissions cannot be adjusted
 - rollback_lock_file(): set fd to -1
 - rollback_lock_file(): do not clear filename redundantly
 - api-lockfile: expand the documentation
 - unable_to_lock_die(): rename function from unable_to_lock_index_die()

 Refactor and fix corner-case bugs in the lockfile API, all looked
 sensible.

 Expecting a reroll.


* bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
 - git-rebase: print name of rev when using shorthand

 Teach "git rebase -" to report the concrete name of the branch
 (i.e. the previous one).

 But it stops short and does not do the same for "git rebase @{-1}".
 Expecting a reroll.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Needs to be rebased, now kb/fast-hashmap topic is in.


* jk/makefile (2014-02-05) 16 commits
 . FIXUP
 . move LESS/LV pager environment to Makefile
 . Makefile: teach scripts to include make variables
 . FIXUP
 . Makefile: auto-build C strings from make variables
 . Makefile: drop *_SQ variables
 . FIXUP
 . Makefile: add c-quote helper function
 . Makefile: introduce sq function for shell-quoting
 . Makefile: always create files via make-var
 . Makefile: store GIT-* sentinel files in MAKE/
 . Makefile: prefer printf to echo for GIT-*
 . Makefile: use tempfile/mv strategy for GIT-*
 . Makefile: introduce make-var helper function
 . Makefile: fix git-instaweb dependency on gitweb
 . Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 . t1507 (rev-parse-upstream): fix typo in test title
 . implement @{publish} shorthand
 . branch_get: provide per-branch pushremote pointers
 . branch_get: return early on error
 . sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Ejected from 'pu' to unclutter.


* fc/publish-vs-upstream (2014-04-21) 8 commits
 . sha1_name: add support for @{publish} marks
 . sha1_name: simplify track finding
 . sha1_name: cleanup interpret_branch_name()
 . branch: display publish branch
 . push: add --set-publish option
 . branch: add --set-publish-to option
 . Add concept of 'publish' branch
 . t5516 (fetch-push): fix test restoration

 Add branch@{publish}; it seems that this is somewhat different from
 Ram and Peff started working on.  At least the tip needs to be
 rerolled not to squat on @{p} which @{push} and possibly @{pull}
 may want to share.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Needs to be rebased, now the pack-bitmap series is in.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.


* jh/submodule-tests (2014-04-17) 1 commit
 - t7410: 210 tests for various 'git submodule update' scenarios

 More or less abandoned.  Will drop.


* nd/multiple-work-trees (2014-03-25) 28 commits
 . count-objects: report unused files in $GIT_DIR/repos/...
 . gc: support prune --repos
 . gc: style change -- no SP before closing bracket
 . prune: strategies for linked checkouts
 . checkout: detach if the branch is already checked out elsewhere
 . checkout: clean up half-prepared directories in --to mode
 . checkout: support checking out into a new working directory
 . use new wrapper write_file() for simple file writing
 . wrapper.c: wrapper to open a file, fprintf then close
 . setup.c: support multi-checkout repo setup
 . setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 . setup.c: convert check_repository_format_gently to use strbuf
 . setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 . setup.c: convert is_git_directory() to use strbuf
 . git-stash: avoid hardcoding $GIT_DIR/logs/....
 . *.sh: avoid hardcoding $GIT_DIR/hooks/...
 . git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 . $GIT_COMMON_DIR: a new environment variable
 . commit: use SEQ_DIR instead of hardcoding "sequencer"
 . fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 . reflog: avoid constructing .lock path with git_path
 . *.sh: respect $GIT_INDEX_FILE
 . git_path(): be aware of file relocation in $GIT_DIR
 . path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 . path.c: rename vsnpath() to do_git_path()
 . git_snpath(): retire and replace with strbuf_git_path()
 . path.c: make get_pathname() call sites return const char *
 . path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.

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

* cc/replace-graft (2014-07-07) 9 commits
 - replace: add test for --graft with a mergetag
 - replace: check mergetags when using --graft
 - replace: add test for --graft with signed commit
 - replace: remove signature when using --graft
 - contrib: add convert-grafts-to-replace-refs.sh
 - Documentation: replace: add --graft option
 - replace: add test for --graft
 - replace: add --graft option
 - replace: cleanup redirection style in tests
 (this branch uses cc/for-each-mergetag.)

 "git replace" learned a "--graft" option to rewrite parents of a
 commit.


* jc/fix-clone-single-starting-at-a-tag (2014-06-23) 1 commit
  (merged to 'next' on 2014-07-02 at cc0c4b1)
 + builtin/clone.c: detect a clone starting at a tag correctly

 Will merge to 'master'.


* mg/verify-commit (2014-06-23) 5 commits
  (merged to 'next' on 2014-07-02 at 6d77bcf)
 + t7510: test verify-commit
 + t7510: exit for loop with test result
 + verify-commit: scriptable commit signature verification
 + gpg-interface: provide access to the payload
 + gpg-interface: provide clear helper for struct signature_check

 Add 'verify-commit' to be used in a way similar to 'verify-tag' is
 used.  Further work on verifying the mergetags might be needed.

 Will merge to 'master'.


* dt/refs-check-refname-component-sse-fix (2014-07-08) 2 commits
  (merged to 'next' on 2014-07-08 at 35b839c)
 + refs: fix valgrind suppression file
 + refs.c: handle REFNAME_REFSPEC_PATTERN at end of page

 Fixes to a topic that is already in 'master'.

 Will merge to 'master'.


* jk/skip-prefix (2014-06-20) 18 commits
  (merged to 'next' on 2014-06-23 at cd387a6)
 + http-push: refactor parsing of remote object names
 + imap-send: use skip_prefix instead of using magic numbers
 + use skip_prefix to avoid repeated calculations
 + git: avoid magic number with skip_prefix
 + fetch-pack: refactor parsing in get_ack
 + fast-import: refactor parsing of spaces
 + stat_opt: check extra strlen call
 + daemon: use skip_prefix to avoid magic numbers
 + fast-import: use skip_prefix for parsing input
 + use skip_prefix to avoid repeating strings
 + use skip_prefix to avoid magic numbers
 + transport-helper: avoid reading past end-of-string
 + fast-import: fix read of uninitialized argv memory
 + apply: use skip_prefix instead of raw addition
 + refactor skip_prefix to return a boolean
 + avoid using skip_prefix as a boolean
 + daemon: mark some strings as const
 + parse_diff_color_slot: drop ofs parameter

 Will merge to 'master'.


* jk/xstrfmt (2014-06-25) 11 commits
  (merged to 'next' on 2014-06-25 at 5031d4e)
 + setup_git_env(): introduce git_path_from_env() helper
  (merged to 'next' on 2014-06-23 at 64f2558)
 + unique_path: fix unlikely heap overflow
 + walker_fetch: fix minor memory leak
 + merge: use argv_array when spawning merge strategy
 + sequencer: use argv_array_pushf
 + setup_git_env: use git_pathdup instead of xmalloc + sprintf
 + use xstrfmt to replace xmalloc + strcpy/strcat
 + use xstrfmt to replace xmalloc + sprintf
 + use xstrdup instead of xmalloc + strcpy
 + use xstrfmt in favor of manual size calculations
 + strbuf: add xstrfmt helper

 Will merge to 'master'.


* kb/perf-trace (2014-07-07) 17 commits
 - progress: simplify performance measurement by using getnanotime()
 - wt-status: simplify performance measurement by using getnanotime()
 - git: add performance tracing for git's main() function to debug scripts
 - trace: add trace_performance facility to debug performance issues
 - trace: add high resolution timer function to debug performance issues
 - trace: add 'file:line' to all trace output
 - trace: move code around, in preparation to file:line output
 - trace: add current timestamp to all trace output
 - trace: disable additional trace output for unit tests
 - trace: add infrastructure to augment trace output with additional info
 - sha1_file: change GIT_TRACE_PACK_ACCESS logging to use trace API
 - Documentation/git.txt: improve documentation of 'GIT_TRACE*' variables
 - trace.h: suppress some sparse warnings and errors
 - trace: improve trace performance
 - trace: remove redundant printf format attribute
 - trace: consistently name the format parameter
 - trace: move trace declarations from cache.h to new trace.h

 Will merge to 'next'.


* hv/submodule-config (2014-06-30) 4 commits
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names


* jl/submodule-tests (2014-07-07) 14 commits
 - revert: add t3513 for submodule updates
 - stash: add t3906 for submodule updates
 - am: add t4255 for submodule updates
 - cherry-pick: add t3512 for submodule updates
 - pull: add t5572 for submodule updates
 - rebase: add t3426 for submodule updates
 - merge: add t7613 for submodule updates
 - bisect: add t6041 for submodule updates
 - reset: add t7112 for submodule updates
 - read-tree: add t1013 for submodule updates
 - apply: add t4137 for submodule updates
 - checkout: call the new submodule update test framework
 - submodules: add the lib-submodule-update.sh test library
 - test-lib: add test_dir_is_empty()

 Will merge to 'next'.


* po/error-message-style (2014-06-16) 1 commit
 - doc: state coding guideline for error message punctuation

 Expecting a reroll.


* rs/ref-transaction (2014-06-20) 48 commits
 - refs.c: make write_ref_sha1 static
 - fetch.c: change s_update_ref to use a ref transaction
 - refs.c: propagate any errno==ENOTDIR from _commit back to the callers
 - refs.c: pass a skip list to name_conflict_fn
 - refs.c: call lock_ref_sha1_basic directly from commit
 - refs.c: move the check for valid refname to lock_ref_sha1_basic
 - refs.c: pass NULL as *flags to read_ref_full
 - refs.c: pass the ref log message to _create/delete/update instead of _commit
 - refs.c: add an err argument to delete_ref_loose
 - refs.c: make delete_ref use a transaction
 - refs.c: make prune_ref use a transaction to delete the ref
 - refs.c: remove lock_ref_sha1
 - refs.c: remove the update_ref_write function
 - refs.c: remove the update_ref_lock function
 - refs.c: make lock_ref_sha1 static
 - walker.c: use ref transaction for ref updates
 - fast-import.c: use a ref transaction when dumping tags
 - receive-pack.c: use a reference transaction for updating the refs
 - refs.c: change update_ref to use a transaction
 - branch.c: use ref transaction for all ref updates
 - fast-import.c: change update_branch to use ref transactions
 - sequencer.c: use ref transactions for all ref updates
 - commit.c: use ref transactions for updates
 - replace.c: use the ref transaction functions for updates
 - tag.c: use ref transactions when doing updates
 - refs.c: add transaction.status and track OPEN/CLOSED/ERROR
 - refs.c: make ref_transaction_begin take an err argument
 - refs.c: update ref_transaction_delete to check for error and return status
 - refs.c: change ref_transaction_create to do error checking and return status
 - refs.c: change ref_transaction_update() to do error checking and return status
 - refs.c: remove the onerr argument to ref_transaction_commit
 - update-ref: use err argument to get error from ref_transaction_commit
 - refs.c: make update_ref_write update a strbuf on failure
 - refs.c: make ref_update_reject_duplicates take a strbuf argument for errors
 - refs.c: log_ref_write should try to return meaningful errno
 - refs.c: make resolve_ref_unsafe set errno to something meaningful on error
 - refs.c: commit_packed_refs to return a meaningful errno on failure
 - refs.c: make remove_empty_directories always set errno to something sane
 - refs.c: verify_lock should set errno to something meaningful
 - refs.c: make sure log_ref_setup returns a meaningful errno
 - refs.c: add an err argument to repack_without_refs
 - lockfile.c: make lock_file return a meaningful errno on failurei
 - lockfile.c: add a new public function unable_to_lock_message
 - refs.c: add a strbuf argument to ref_transaction_commit for error logging
 - refs.c: allow passing NULL to ref_transaction_free
 - refs.c: constify the sha arguments for ref_transaction_create|delete|update
 - refs.c: ref_transaction_commit should not free the transaction
 - refs.c: remove ref_transaction_rollback

 Portability workaround may be needed on top ($gmane/252496).
 Updates in response to review comments from Michael ($gmane/253033)
 may be needed for later parts, but the earlier parts look ready
 for 'next'.


* jk/pretty-G-format-fixes (2014-06-25) 6 commits
  (merged to 'next' on 2014-06-26 at 7138407)
 + move "%G" format test from t7510 to t6006
  (merged to 'next' on 2014-06-20 at f504bbc)
 + pretty: avoid reading past end-of-string with "%G"
 + t7510: check %G* pretty-format output
 + t7510: test a commit signed by an unknown key
 + t7510: use consistent &&-chains in loop
 + t7510: stop referring to master in later tests

 Will merge to 'master'.


* nd/split-index (2014-06-13) 32 commits
  (merged to 'next' on 2014-07-08 at 49325ef)
 + t1700: new tests for split-index mode
 + t2104: make sure split index mode is off for the version test
 + read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
 + read-tree: note about dropping split-index mode or index version
 + read-tree: force split-index mode off on --index-output
 + rev-parse: add --shared-index-path to get shared index path
 + update-index --split-index: do not split if $GIT_DIR is read only
 + update-index: new options to enable/disable split index mode
 + split-index: strip pathname of on-disk replaced entries
 + split-index: do not invalidate cache-tree at read time
 + split-index: the reading part
 + split-index: the writing part
 + read-cache: mark updated entries for split index
 + read-cache: save deleted entries in split index
 + read-cache: mark new entries for split index
 + read-cache: split-index mode
 + read-cache: save index SHA-1 after reading
 + entry.c: update cache_changed if refresh_cache is set in checkout_entry()
 + cache-tree: mark istate->cache_changed on prime_cache_tree()
 + cache-tree: mark istate->cache_changed on cache tree update
 + cache-tree: mark istate->cache_changed on cache tree invalidation
 + unpack-trees: be specific what part of the index has changed
 + resolve-undo: be specific what part of the index has changed
 + update-index: be specific what part of the index has changed
 + read-cache: be specific what part of the index has changed
 + read-cache: be strict about "changed" in remove_marked_cache_entries()
 + read-cache: store in-memory flags in the first 12 bits of ce_flags
 + read-cache: relocate and unexport commit_locked_index()
 + read-cache: new API write_locked_index instead of write_index/write_cache
 + sequencer: do not update/refresh index if the lock cannot be held
 + ewah: delete unused ewah_read_mmap_native declaration
 + ewah: fix constness of ewah_read_mmap

 An experiment to use two files (the base file and incremental
 changes relative to it) to represent the index to reduce I/O cost
 of rewriting a large index when only small part of the working tree
 changes.

 Will merge to 'master'.


* jc/test-lazy-prereq (2014-06-13) 1 commit
 - tests: drop GIT_*_TIMING_TESTS environment variable support

 Test-script clean-up.

 Will hold.


* sk/mingw-unicode-spawn-args (2014-06-16) 6 commits
  (merged to 'next' on 2014-06-30 at c8f79d0)
 + Win32: Unicode arguments (incoming)
 + Win32: Unicode arguments (outgoing)
 + MinGW: disable CRT command line globbing
 + Win32: fix potential multi-threading issue
 + Win32: simplify internal mingw_spawn* APIs
 + Win32: let mingw_execve() return an int
 (this branch uses sk/mingw-main and sk/mingw-uni-console.)

 Will merge to 'master'.


* sk/mingw-dirent (2014-06-09) 5 commits
  (merged to 'next' on 2014-06-30 at ae9e2d6)
 + Win32 dirent: improve dirent implementation
 + Win32 dirent: clarify #include directives
 + Win32 dirent: change FILENAME_MAX to MAX_PATH
 + Win32 dirent: remove unused dirent.d_reclen member
 + Win32 dirent: remove unused dirent.d_ino member

 Will merge to 'master'.


* sk/mingw-main (2014-06-10) 2 commits
  (merged to 'next' on 2014-06-30 at 447cb50)
 + mingw: avoid const warning
 + Win32: move main macro to a function
 (this branch is used by sk/mingw-uni-console and sk/mingw-unicode-spawn-args.)

 Will merge to 'master'.


* sk/mingw-uni-console (2014-06-16) 7 commits
  (merged to 'next' on 2014-06-30 at f4fbc41)
 + Win32: reliably detect console pipe handles
 + Win32: fix broken pipe detection
 + Win32: Thread-safe windows console output
 + Win32: add Unicode conversion functions
 + Win32: warn if the console font doesn't support Unicode
 + Win32: detect console streams more reliably
 + Win32: support Unicode console output
 (this branch is used by sk/mingw-unicode-spawn-args; uses sk/mingw-main.)

 Will merge to 'master'.


* mt/patch-id-stable (2014-06-10) 1 commit
 - patch-id: change default to stable

 Teaches "git patch-id" to compute the patch ID that does not change
 when the files in a single patch is reordered. As this new algorithm
 is backward incompatible, the last bit to flip it to be the default
 is left out of 'master' for now.

 Will hold.

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.0.2
@ 2014-07-16 22:02  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-07-16 22:02 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

The latest maintenance release Git v2.0.2 is now available at
the usual places.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.0.2'
tag and the 'maint' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://code.google.com/p/git-core/
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

Git v2.0.2 Release Notes
========================

 * Documentation for "git submodule sync" forgot to say that the subcommand
   can take the "--recursive" option.

 * Mishandling of patterns in .gitignore that has trailing SPs quoted
   with backslashes (e.g. ones that end with "\ ") have been
   corrected.

 * Recent updates to "git repack" started to duplicate objects that
   are in packfiles marked with .keep flag into the new packfile by
   mistake.

 * "git clone -b brefs/tags/bar" would have mistakenly thought we were
   following a single tag, even though it was a name of the branch,
   because it incorrectly used strstr().

 * "%G" (nothing after G) is an invalid pretty format specifier, but
   the parser did not notice it as garbage.

 * Code to avoid adding the same alternate object store twice was
   subtly broken for a long time, but nobody seems to have noticed.

 * A handful of code paths had to read the commit object more than
   once when showing header fields that are usually not parsed.  The
   internal data structure to keep track of the contents of the commit
   object has been updated to reduce the need for this double-reading,
   and to allow the caller find the length of the object.

 * During "git rebase --merge", a conflicted patch could not be
   skipped with "--skip" if the next one also conflicted.

----------------------------------------------------------------

Changes since v2.0.1 are as follows:

Jeff King (27):
      repack: do not accidentally pack kept objects by default
      repack: respect pack.writebitmaps
      repack: s/write_bitmap/&s/ in code
      commit_tree: take a pointer/len pair rather than a const strbuf
      replace dangerous uses of strbuf_attach
      alloc: include any-object allocations in alloc_report
      commit: push commit_index update into alloc_commit_node
      do not create "struct commit" with xcalloc
      logmsg_reencode: return const buffer
      sequencer: use logmsg_reencode in get_message
      provide a helper to free commit buffer
      provide a helper to set the commit buffer
      provide helpers to access the commit buffer
      use get_cached_commit_buffer where appropriate
      use get_commit_buffer to avoid duplicate code
      convert logmsg_reencode to get_commit_buffer
      use get_commit_buffer everywhere
      commit-slab: provide a static initializer
      commit: convert commit->buffer to a slab
      commit: record buffer length in cache
      reuse cached commit buffer when parsing signatures
      t7510: stop referring to master in later tests
      t7510: test a commit signed by an unknown key
      t7510: check %G* pretty-format output
      pretty: avoid reading past end-of-string with "%G"
      move "%G" format test from t7510 to t6006
      t7300: repair filesystem permissions with test_when_finished

Junio C Hamano (4):
      t0008: do not depend on 'echo' handling backslashes specially
      builtin/clone.c: detect a clone starting at a tag correctly
      Start preparing for 2.0.2
      Git 2.0.2

Matthew Chen (1):
      submodule: document "sync --recursive"

Michael J Gruber (1):
      t7510: use consistent &&-chains in loop

Pasha Bolokhov (1):
      dir.c:trim_trailing_spaces(): fix for " \ " sequence

René Scharfe (2):
      sha1_file: avoid overrunning alternate object base string
      annotate: use argv_array

Ronnie Sahlberg (1):
      enums: remove trailing ',' after last item in enum

brian m. carlson (1):
      rebase--merge: fix --skip with two conflicts in a row

^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.1.0-rc0
@ 2014-07-27 23:18  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-07-27 23:18 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

An early preview release Git v2.1.0-rc0 is now available for testing
at the usual places.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the 'v2.1.0-rc0'
tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://code.google.com/p/git-core/
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

Git v2.1 Release Notes (draft)
==============================

Backward compatibility notes
----------------------------

 * The default value we give to the environment variable LESS has been
   changed from "FRSX" to "FRX", losing "S" (chop long lines instead
   of wrapping).  Existing users who prefer not to see line-wrapped
   output may want to set

     $ git config core.pager "less -S"

   to restore the traditional behaviour.  It is expected that people
   find output from the most subcommands easier to read with the new
   default, except for "blame" which tends to produce really long
   lines.  To override the new default only for "git blame", you can
   do this:

     $ git config pager.blame "less -S"

 * A few disused directories in contrib/ have been retired.


Updates since v2.0
------------------

UI, Workflows & Features

 * Since the very beginning of Git, we gave the LESS environment a
   default value "FRSX" when we spawn "less" as the pager.  "S" (chop
   long lines instead of wrapping) has been removed from this default
   set of options, because it is more or less a personal taste thing,
   as opposed to others that have good justifications (i.e. "R" is
   very much justified because many kinds of output we produce are
   colored and "FX" is justified because output we produce is often
   shorter than a page).

 * The logic and data used to compute the display width needed for
   UTF-8 strings have been updated to match Unicode 7.0 better.

 * HTTP-based transports learned to propagate the error messages from
   the webserver better to the client coming over the HTTP transport.

 * The completion script for bash (in contrib/) has been updated to
   handle aliases that define complex sequence of commands better.

 * The "core.preloadindex" configuration variable is by default
   enabled, allowing modern platforms to take advantage of the
   multiple cores they have.

 * "git clone" applies the "if cloning from a local disk, physically
   copy repository using hardlinks, unless otherwise told not to with
   --no-local" optimization when url.*.insteadOf mechanism rewrites a
   "git clone $URL" that refers to a repository over the network to a
   clone from a local disk.

 * "git commit --date=<date>" option learned to read from more
   timestamp formats, including "--date=now".

 * The `core.commentChar` configuration variable is used to specify a
   custom comment character other than the default "#" to be used in
   the commit log editor.  This can be set to `auto` to attempt to
   choose a different character that does not conflict with what
   already starts a line in the message being edited for cases like
   "git commit --amend".

 * "git format-patch" learned --signature-file=<file> to take the mail
   signature from.

 * "git grep" learned grep.fullname configuration variable to force
   "--full-name" to be default.  This may cause regressions on
   scripted users that do not expect this new behaviour.

 * "git imap-send" learned to ask the credential helper for auth
   material.

 * "git log" and friends now understand the value "auto" set to the
   "log.decorate" configuration variable to enable the "--decorate"
   option automatically when the output is sent to tty.

 * "git merge" without argument, even when there is an upstream
   defined for the current branch, refused to run until
   merge.defaultToUpstream is set to true.  Flip the default of that
   configuration variable to true.

 * "git mergetool" learned to drive the vimdiff3 backend.

 * mergetool.prompt used to default to 'true', always asking "do you
   really want to run the tool on this path?".  Among the two
   purposes this prompt serves, ignore the use case to confirm that
   the user wants to view particular path with the named tool, and
   redefine the meaning of the prompt only to confirm the choice of
   the tool made by the autodetection (for those who configured the
   tool explicitly, the prompt shown for the latter purpose is
   simply annoying).

   Strictly speaking, this is a backward incompatible change and the
   users need to explicitly set the variable to 'true' if they want
   to resurrect the now-ignored use case.

 * "git replace" learned the "--edit" subcommand to create a
   replacement by editing an existing object.

 * "git replace" learned a "--graft" option to rewrite parents of a
   commit.

 * "git send-email" learned "--to-cover" and "--cc-cover" options, to
   tell it to copy To: and Cc: headers found in the first input file
   when emitting later input files.

 * "git svn" learned to cope with malformed timestamps with only one
   digit in the hour part, e.g. 2014-01-07T5:01:02.048176Z, emitted
   by some broken subversion server implementations.

 * "git tag" when editing the tag message shows the name of the tag
   being edited as a comment in the editor.

 * "git tag" learned to pay attention to "tag.sort" configuration, to
   be used as the default sort order when no --sort=<value> the option
   is given.

 * "git verify-commit" command to check GPG signature in signed
   commits, in a way similar to "git verify-tag" is used to check
   signed tags, was added.


Performance, Internal Implementation, etc.

 * Build procedure for 'subtree' (in contrib/) has been cleaned up.

 * The support for the profile-feedback build, which has been left
   bit-rotten for quite a while, has been updated.

 * An experimental format to use two files (the base file and
   incremental changes relative to it) to represent the index has been
   introduced; this may reduce I/O cost of rewriting a large index
   when only small part of the working tree changes.

 * Effort to shrink the size of patches Windows folks maintain on top
   by upstreaming them continues.

 * Patches maintained by msysgit folks for Windows port are being
   upstreamed here a bit by bit.

 * The leaf function to check validity of a refname format has been
   micro-optimized, using SSE2 instructions when available.  A few
   breakages during its development have been caught and fixed already
   but there might remain some more still; please test and report if
   you find any.

 * The `core.deltabasecachelimit` used to default to 16 MiB , but this
   proved to be too small, and has been bumped to 96 MiB.

 * "git blame" has been optimized greatly by reorganising the data
   structure that is used to keep track of the work to be done.

 * "git diff" that compares 3-or-more trees (e.g. parents and the
   result of a merge) have been optimized.

 * The API to update/delete references are being converted to handle
   updates to multiple references in a transactional way.  As an
   example, "update-ref --stdin [-z]" has been updated to use this
   API.

 * skip_prefix() and strip_suffix() API functions are used a lot more
   widely throughout the codebase now.

 * Parts of the test scripts can be skipped by using a range notation,
   e.g. "sh t1234-test.sh --run='1-4 6 8-'" to omit test piece 5 and 7
   and run everything else.


Also contains various documentation updates and code clean-ups.


Fixes since v2.0
----------------

Unless otherwise noted, all the fixes since v2.0 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).

 * We used to unconditionally disable the pager in the pager process
   we spawn to feed out output, but that prevented people who want to
   run "less" within "less" from doing so.
   (merge c0459ca je/pager-do-not-recurse later to maint).

 * Tools that read diagnostic output in our standard error stream do
   not want to see terminal control sequence (e.g. erase-to-eol).
   Detect them by checking if the standard error stream is connected
   to a tty.
   (merge 38de156 mn/sideband-no-ansi later to maint).

 * Mishandling of patterns in .gitignore that has trailing SPs quoted
   with backslashes (e.g. ones that end with "\ ") have been
   corrected.
   (merge 97c1364be6b pb/trim-trailing-spaces later to maint).

 * Reworded the error message given upon a failure to open an existing
   loose object file due to e.g. permission issues; it was reported as
   the object being corrupt, but that is not quite true.
   (merge d6c8a05 jk/report-fail-to-read-objects-better later to maint).

 * "git log -2master" is a common typo that shows two commits starting
   from whichever random branch that is not 'master' that happens to
   be checked out currently.
   (merge e3fa568 jc/revision-dash-count-parsing later to maint).

 * Code to avoid adding the same alternate object store twice was
   subtly broken for a long time, but nobody seems to have noticed.
   (merge 80b4785 rs/fix-alt-odb-path-comparison later to maint).
   (merge 539e750 ek/alt-odb-entry-fix later to maint).

 * The "%<(10,trunc)%s" pretty format specifier in the log family of
   commands is used to truncate the string to a given length (e.g. 10
   in the example) with padding to column-align the output, but did
   not take into account that number of bytes and number of display
   columns are different.
   (merge 7d50987 as/pretty-truncate later to maint).

 * "%G" (nothing after G) is an invalid pretty format specifier, but
   the parser did not notice it as garbage.
   (merge 958b2eb jk/pretty-G-format-fixes later to maint).

 * A handful of code paths had to read the commit object more than
   once when showing header fields that are usually not parsed.  The
   internal data structure to keep track of the contents of the commit
   object has been updated to reduce the need for this double-reading,
   and to allow the caller find the length of the object.
   (merge 218aa3a jk/commit-buffer-length later to maint).

 * The "mailmap.file" configuration option did not support the tilde
   expansion (i.e. ~user/path and ~/path).
   (merge 9352fd5 ow/config-mailmap-pathname later to maint).

 * The completion scripts (in contrib/) did not know about quite a few
   options that are common between "git merge" and "git pull", and a
   couple of options unique to "git merge".
   (merge 8fee872 jk/complete-merge-pull later to maint).

 * The unix-domain socket used by the sample credential cache daemon
   tried to unlink an existing stale one at a wrong path, if the path
   to the socket was given as an overlong path that does not fit in
   sun_path member of the sockaddr_un structure.
   (merge 2869b3e rs/fix-unlink-unix-socket later to maint).

 * An ancient rewrite passed a wrong pointer to a curl library
   function in a rarely used code path.
   (merge 479eaa8 ah/fix-http-push later to maint).

 * "--ignore-space-change" option of "git apply" ignored the spaces
   at the beginning of line too aggressively, which is inconsistent
   with the option of the same name "diff" and "git diff" have.
   (merge 14d3bb4 jc/apply-ignore-whitespace later to maint).

 * "git blame" miscounted number of columns needed to show localized
   timestamps, resulting in jaggy left-side-edge of the source code
   lines in its output.
   (merge dd75553 jx/blame-align-relative-time later to maint).

 * "git blame" assigned the blame to the copy in the working-tree if
   the repository is set to core.autocrlf=input and the file used CRLF
   line endings.
   (merge 4d4813a bc/blame-crlf-test later to maint).

 * "git clone -b brefs/tags/bar" would have mistakenly thought we were
   following a single tag, even though it was a name of the branch,
   because it incorrectly used strstr().
   (merge 60a5f5f jc/fix-clone-single-starting-at-a-tag later to maint).

 * "git commit --allow-empty-messag -C $commit" did not work when the
   commit did not have any log message.
   (merge 076cbd6 jk/commit-C-pick-empty later to maint).

 * "git diff --find-copies-harder" sometimes pretended as if the mode
   bits have changed for paths that are marked with assume-unchanged
   bit.
   (merge 5304810 jk/diff-files-assume-unchanged later to maint).

 * "filter-branch" left an empty single-parent commit that results when
   all parents of a merge commit gets mapped to the same commit, even
   under "--prune-empty".
   (merge 79bc4ef cb/filter-branch-prune-empty-degenerate-merges later to maint).

 * "git format-patch" did not enforce the rule that the "--follow"
   option from the log/diff family of commands must be used with
   exactly one pathspec.
   (merge dd63f16 jk/diff-follow-must-take-one-pathspec later to maint).

 * "git gc --auto" was recently changed to run in the background to
   give control back early to the end-user sitting in front of the
   terminal, but it forgot that housekeeping involving reflogs should
   be done without other processes competing for accesses to the refs.
   (merge 62aad18 nd/daemonize-gc later to maint).

 * "git grep -O" to show the lines that hit in the pager did not work
   well with case insensitive search.  We now spawn "less" with its
   "-I" option when it is used as the pager (which is the default).
   (merge f7febbe sk/spawn-less-case-insensitively-from-grep-O-i later to maint).

 * We used to disable threaded "git index-pack" on platforms without
   thread-safe pread(); use a different workaround for such
   platforms to allow threaded "git index-pack".
   (merge 3953949 nd/index-pack-one-fd-per-thread later to maint).

 * The error reporting from "git index-pack" has been improved to
   distinguish missing objects from type errors.
   (merge 77583e7 jk/index-pack-report-missing later to maint).

 * "log --show-signature" incorrectly decided the color to paint a
   mergetag that was and was not correctly validated.
   (merge 42c55ce mg/fix-log-mergetag-color later to maint).

 * "log --show-signature" did not pay attention to "--graph" option.
   (merge cf3983d zk/log-graph-showsig later to maint).

 * "git mailinfo" used to read beyond the end of header string while
   parsing an incoming e-mail message to extract the patch.
   (merge b1a013d rs/mailinfo-header-cmp later to maint).

 * On a case insensitive filesystem, merge-recursive incorrectly
   deleted the file that is to be renamed to a name that is the same
   except for case differences.
   (merge baa37bf dt/merge-recursive-case-insensitive later to maint).

 * Merging changes into a file that ends in an incomplete line made the
   last line into a complete one, even when the other branch did not
   change anything around the end of file.
   (merge ba31180 mk/merge-incomplete-files later to maint).

 * "git pack-objects" unnecessarily copied the previous contents when
   extending the hashtable, even though it will populate the table
   from scratch anyway.
   (merge fb79947 rs/pack-objects-no-unnecessary-realloc later to maint).

 * Recent updates to "git repack" started to duplicate objects that
   are in packfiles marked with .keep flag into the new packfile by
   mistake.
   (merge d078d85 jk/repack-pack-keep-objects later to maint).

 * "git rerere forget" did not work well when merge.conflictstyle
   was set to a non-default value.
   (merge de3d8bb fc/rerere-conflict-style later to maint).

 * "git remote rm" and "git remote prune" can involve removing many
   refs at once, which is not a very efficient thing to do when very
   many refs exist in the packed-refs file.
   (merge e6bea66 jl/remote-rm-prune later to maint).

 * "git log --exclude=<glob> --all | git shortlog" worked as expected,
   but "git shortlog --exclude=<glob> --all", which is supposed to be
   identical to the above pipeline, was not accepted at the command
   line argument parser level.
   (merge eb07774 jc/shortlog-ref-exclude later to maint).

 * The autostash mode of "git rebase -i" did not restore the dirty
   working tree state if the user aborted the interactive rebase by
   emptying the insn sheet.
   (merge ddb5432 rr/rebase-autostash-fix later to maint).

 * "git rebase --fork-point" did not filter out patch-identical
   commits correctly.

 * During "git rebase --merge", a conflicted patch could not be
   skipped with "--skip" if the next one also conflicted.
   (merge 95104c7 bc/fix-rebase-merge-skip later to maint).

 * "git show -s" (i.e. show log message only) used to incorrectly emit
   an extra blank line after a merge commit.
   (merge ad2f725 mk/show-s-no-extra-blank-line-for-merges later to maint).

 * "git status", even though it is a read-only operation, tries to
   update the index with refreshed lstat(2) info to optimize future
   accesses to the working tree opportunistically, but this could
   race with a "read-write" operation that modify the index while it
   is running.  Detect such a race and avoid overwriting the index.
   (merge 426ddee ym/fix-opportunistic-index-update-race later to maint).

 * "git status" (and "git commit") behaved as if changes in a modified
   submodule are not there if submodule.*.ignore configuration is set,
   which was misleading.  The configuration is only to unclutter diff
   output during the course of development, and should not to hide
   changes in the "status" output to cause the users forget to commit
   them.
   (merge c215d3d jl/status-added-submodule-is-never-ignored later to maint).

 * Documentation for "git submodule sync" forgot to say that the subcommand
   can take the "--recursive" option.
   (merge 9393ae7 mc/doc-submodule-sync-recurse later to maint).

 * "git update-index --cacheinfo" in 2.0 release crashed on a
   malformed command line.
   (merge c8e1ee4 jc/rev-parse-argh-dashed-multi-words later to maint).

 * The mode to run tests with HTTP server tests disabled was broken.
   (merge afa53fe na/no-http-test-in-the-middle later to maint).

----------------------------------------------------------------

Changes since v2.0.0, 643 non-merge changes from 80 contributors,
are as follows:

Abbaad Haider (1):
      http-push.c: make CURLOPT_IOCTLDATA a usable pointer

Alexey Shumkin (5):
      t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs
      t4041, t4205, t6006, t7102: don't hardcode tested encoding value
      t4205 (log-pretty-format): use `tformat` rather than `format`
      t4205, t6006: add tests that fail with i18n.logOutputEncoding set
      pretty.c: format string with truncate respects logOutputEncoding

Anders Kaseorg (1):
      gitk: Allow displaying time zones from author and commit dates timestamps

Andi Kleen (4):
      Use BASIC_FLAGS for profile feedback
      Don't define away __attribute__ on gcc
      Run the perf test suite for profile feedback too
      Fix profile feedback with -jN and add profile-fast

Andreas Schwab (1):
      grep: add grep.fullName config variable

Ben Walton (1):
      compat/bswap.h: fix endianness detection

Brian Gesiak (14):
      strbuf: use _rtrim and _ltrim in strbuf_trim
      api-strbuf.txt: add docs for _trim and _ltrim
      builtin/ls-remote.c: rearrange xcalloc arguments
      builtin/remote.c: rearrange xcalloc arguments
      commit.c: rearrange xcalloc arguments
      config.c: rearrange xcalloc arguments
      diff.c: rearrange xcalloc arguments
      http-push.c: rearrange xcalloc arguments
      imap-send.c: rearrange xcalloc arguments
      notes.c: rearrange xcalloc arguments
      pack-revindex.c: rearrange xcalloc arguments
      reflog-walk.c: rearrange xcalloc arguments
      remote.c: rearrange xcalloc arguments
      transport-helper.c: rearrange xcalloc arguments

Cezary Zawadka (1):
      Windows: allow using UNC path for git repository

Charles Bailey (3):
      compat/bswap.h: detect endianness on more platforms that don't use BYTE_ORDER
      filter-branch: eliminate duplicate mapped parents
      Fix contrib/subtree Makefile to patch #! line

Christian Couder (16):
      replace: make sure --edit results in a different object
      replace: refactor checking ref validity
      replace: die early if replace ref already exists
      replace: add tests for --edit
      replace: add --edit to usage string
      Documentation: replace: describe new --edit option
      commit: add for_each_mergetag()
      replace: cleanup redirection style in tests
      replace: add --graft option
      replace: add test for --graft
      Documentation: replace: add --graft option
      contrib: add convert-grafts-to-replace-refs.sh
      replace: remove signature when using --graft
      replace: add test for --graft with signed commit
      replace: check mergetags when using --graft
      replace: add test for --graft with a mergetag

Dan Albert (1):
      imap-send: use git-credential

David Aguilar (3):
      gitk: Honor TMPDIR when viewing external diffs
      gitk: Use mktemp -d to avoid predictable temporary directories
      gitk: Catch mkdtemp errors

David Kastrup (2):
      blame: large-scale performance rewrite
      Bump core.deltaBaseCacheLimit to 96m

David Turner (7):
      docs: document RUN_SETUP_GENTLY and clarify RUN_SETUP
      merge-recursive.c: fix case-changing merge bug
      mv: allow renaming to fix case on case insensitive filesystems
      refs.c: optimize check_refname_component()
      refs.c: SSE2 optimizations for check_refname_component
      refs.c: handle REFNAME_REFSPEC_PATTERN at end of page
      refs: fix valgrind suppression file

Elia Pinto (62):
      t9365-continuing-queries.sh: use the $( ... ) construct for command substitution
      test-gitmw-lib.sh: use the $( ... ) construct for command substitution
      t7900-subtree.sh: use the $( ... ) construct for command substitution
      appp.sh: use the $( ... ) construct for command substitution
      git-pull.sh: use the $( ... ) construct for command substitution
      git-rebase--merge.sh: use the $( ... ) construct for command substitution
      git-rebase.sh: use the $( ... ) construct for command substitution
      git-stash.sh: use the $( ... ) construct for command substitution
      git-web--browse.sh: use the $( ... ) construct for command substitution
      lib-credential.sh: use the $( ... ) construct for command substitution
      lib-cvs.sh: use the $( ... ) construct for command substitution
      lib-gpg.sh: use the $( ... ) construct for command substitution
      p5302-pack-index.sh: use the $( ... ) construct for command substitution
      t0001-init.sh: use the $( ... ) construct for command substitution
      t0010-racy-git.sh: use the $( ... ) construct for command substitution
      t0020-crlf.sh: use the $( ... ) construct for command substitution
      t0025-crlf-auto.sh: use the $( ... ) construct for command substitution
      t0026-eol-config.sh: use the $( ... ) construct for command substitution
      t0030-stripspace.sh: use the $( ... ) construct for command substitution
      t0300-credentials.sh: use the $( ... ) construct for command substitution
      t1000-read-tree-m-3way.sh: use the $( ... ) construct for command substitution
      t1001-read-tree-m-2way.sh: use the $( ... ) construct for command substitution
      t1002-read-tree-m-u-2way.sh: use the $( ... ) construct for command substitution
      t1003-read-tree-prefix.sh: use the $( ... ) construct for command substitution
      t1004-read-tree-m-u-wf.sh: use the $( ... ) construct for command substitution
      t1020-subdirectory.sh: use the $( ... ) construct for command substitution
      t1050-large.sh: use the $( ... ) construct for command substitution
      t3905-stash-include-untracked.sh: use the $( ... ) construct for command substitution
      t3910-mac-os-precompose.sh: use the $( ... ) construct for command substitution
      t4006-diff-mode.sh: use the $( ... ) construct for command substitution
      t4010-diff-pathspec.sh: use the $( ... ) construct for command substitution
      t4012-diff-binary.sh: use the $( ... ) construct for command substitution
      t4013-diff-various.sh: use the $( ... ) construct for command substitution
      t4014-format-patch.sh: use the $( ... ) construct for command substitution
      t4036-format-patch-signer-mime.sh: use the $( ... ) construct for command substitution
      t4038-diff-combined.sh: use the $( ... ) construct for command substitution
      t4057-diff-combined-paths.sh: use the $( ... ) construct for command substitution
      t4116-apply-reverse.sh: use the $( ... ) construct for command substitution
      t4119-apply-config.sh: use the $( ... ) construct for command substitution
      t4204-patch-id.sh: use the $( ... ) construct for command substitution
      t5000-tar-tree.sh: use the $( ... ) construct for command substitution
      scripts: "export VAR=VALUE" construct is not portable
      check_bindir: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-clone.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-commit.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-merge.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-repack.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-resolve.sh: avoid "test <cond> -a/-o <cond>"
      git-bisect.sh: avoid "test <cond> -a/-o <cond>"
      git-mergetool.sh: avoid "test <cond> -a/-o <cond>"
      git-rebase--interactive.sh: avoid "test <cond> -a/-o <cond>"
      t/lib-httpd.sh: avoid "test <cond> -a/-o <cond>"
      t/t0025-crlf-auto.sh: avoid "test <cond> -a/-o <cond>"
      t/t0026-eol-config.sh: avoid "test <cond> -a/-o <cond>"
      t/t4102-apply-rename.sh: avoid "test <cond> -a/-o <cond>"
      t/t5000-tar-tree.sh: avoid "test <cond> -a/-o <cond>"
      t/t5403-post-checkout-hook.sh: avoid "test <cond> -a/-o <cond>"
      t/t5538-push-shallow.sh: avoid "test <cond> -a/-o <cond>"
      t/t9814-git-p4-rename.sh: avoid "test <cond> -a/-o <cond>"
      t/test-lib-functions.sh: avoid "test <cond> -a/-o <cond>"
      git-submodule.sh: avoid "test <cond> -a/-o <cond>"
      submodule.c: use the ARRAY_SIZE macro

Ephrim Khong (1):
      sha1_file: do not add own object directory as alternate

Eric Wong (1):
      config: preserve config file permissions on edits

Erik Faye-Lund (1):
      send-email: recognize absolute path on Windows

Fabian Ruch (1):
      sequencer: signal failed ff as an aborted, not a conflicted merge

Felipe Contreras (13):
      fast-export: improve argument parsing
      fast-export: add new --refspec option
      transport-helper: add support for old:new refspec
      transport-helper: add support to push symbolic refs
      fast-import: add support to delete refs
      fast-export: add support to delete refs
      transport-helper: add support to delete branches
      transport-helper: remove unnecessary strbuf resets
      mergetools: add vimdiff3 mode
      mergetool: run prompt only if guessed tool
      merge: enable defaulttoupstream by default
      rerere: fix for merge.conflictstyle
      silence a bunch of format-zero-length warnings

Ilya Bobyr (4):
      test-lib: document short options in t/README
      test-lib: tests skipped by GIT_SKIP_TESTS say so
      test-lib: '--run' to run only specific tests
      gitk: Replace SHA1 entry field on keyboard paste

Jacek Konieczny (1):
      pull: do not abuse 'break' inside a shell 'case'

Jacob Keller (2):
      tag: fix --sort tests to use cat<<-\EOF format
      tag: support configuring --sort via .gitconfig

James Denholm (6):
      contrib/subtree/Makefile: scrap unused $(gitdir)
      contrib/subtree/Makefile: use GIT-VERSION-FILE
      contrib/subtree/Makefile: s/libexecdir/gitexecdir/
      contrib/subtree/Makefile: clean up rules to generate documentation
      contrib/subtree/Makefile: clean up rule for "clean"
      contrib/subtree: allow adding an annotated tag

Jason St. John (1):
      Documentation: use "command-line" when used as a compound adjective, and fix other minor grammatical issues

Jean-Jacques Lafay (1):
      git tag --contains: avoid stack overflow

Jeff King (131):
      run_external_diff: use an argv_array for the environment
      run_external_diff: clean up error handling
      run_external_diff: drop fflush(NULL)
      run_external_diff: hoist common bits out of conditional
      run_external_diff: refactor cmdline setup logic
      commit: do not complain of empty messages from -C
      t3910: show failure of core.precomposeunicode with decomposed filenames
      replace: refactor command-mode determination
      replace: use OPT_CMDMODE to handle modes
      replace: factor object resolution out of replace_object
      replace: add --edit option
      commit: use split_ident_line to compare author/committer
      pretty: make show_ident_date public
      commit: print "Date" line when the user has set date
      commit: accept more date formats for "--date"
      inline constant return from error() function
      let clang use the constant-return error() macro
      grep: use run-command's "dir" option for --open-files-in-pager
      t/lib-httpd: require SANITY prereq
      index-pack: distinguish missing objects from type errors
      run_diff_files: do not look at uninitialized stat data
      run-command: store an optional argv_array
      run_column_filter: use argv_array
      git_connect: use argv_array
      get_helper: use run-command's internal argv_array
      get_exporter: use argv_array
      get_importer: use run-command's internal argv_array
      argv-array: drop "detach" code
      open_sha1_file: report "most interesting" errno
      move "--follow needs one pathspec" rule to diff_setup_done
      format-patch: make newline after signature conditional
      daemon/config: factor out duplicate xstrdup_tolower
      test-lib: preserve GIT_CURL_VERBOSE from the environment
      t/lib-httpd: use write_script to copy CGI scripts
      t5550: test display of remote http error messages
      strbuf: add strbuf_tolower function
      http: extract type/subtype portion of content-type
      http: optionally extract charset parameter from content-type
      strbuf: add strbuf_reencode helper
      remote-curl: reencode http error messages
      http: default text charset to iso-8859-1
      t5537: re-drop http tests
      error_resolve_conflict: rewrap advice message
      error_resolve_conflict: drop quotations around operation
      update-index: fix segfault with missing --cacheinfo argument
      repack: do not accidentally pack kept objects by default
      repack: respect pack.writebitmaps
      repack: s/write_bitmap/&s/ in code
      pack-objects: stop respecting pack.writebitmaps
      repack: simplify handling of --write-bitmap-index
      repack: introduce repack.writeBitmaps config option
      commit_tree: take a pointer/len pair rather than a const strbuf
      replace dangerous uses of strbuf_attach
      alloc: include any-object allocations in alloc_report
      commit: push commit_index update into alloc_commit_node
      do not create "struct commit" with xcalloc
      logmsg_reencode: return const buffer
      sequencer: use logmsg_reencode in get_message
      t7700: drop explicit --no-pack-kept-objects from .keep test
      provide a helper to free commit buffer
      provide a helper to set the commit buffer
      provide helpers to access the commit buffer
      use get_cached_commit_buffer where appropriate
      use get_commit_buffer to avoid duplicate code
      convert logmsg_reencode to get_commit_buffer
      use get_commit_buffer everywhere
      commit-slab: provide a static initializer
      commit: convert commit->buffer to a slab
      commit: record buffer length in cache
      reuse cached commit buffer when parsing signatures
      t7510: stop referring to master in later tests
      t7510: test a commit signed by an unknown key
      t7510: check %G* pretty-format output
      pretty: avoid reading past end-of-string with "%G"
      parse_diff_color_slot: drop ofs parameter
      daemon: mark some strings as const
      avoid using skip_prefix as a boolean
      strbuf: add xstrfmt helper
      use xstrfmt in favor of manual size calculations
      use xstrdup instead of xmalloc + strcpy
      use xstrfmt to replace xmalloc + sprintf
      use xstrfmt to replace xmalloc + strcpy/strcat
      setup_git_env: use git_pathdup instead of xmalloc + sprintf
      sequencer: use argv_array_pushf
      merge: use argv_array when spawning merge strategy
      walker_fetch: fix minor memory leak
      unique_path: fix unlikely heap overflow
      refactor skip_prefix to return a boolean
      apply: use skip_prefix instead of raw addition
      fast-import: fix read of uninitialized argv memory
      transport-helper: avoid reading past end-of-string
      use skip_prefix to avoid magic numbers
      use skip_prefix to avoid repeating strings
      fast-import: use skip_prefix for parsing input
      daemon: use skip_prefix to avoid magic numbers
      stat_opt: check extra strlen call
      fast-import: refactor parsing of spaces
      fetch-pack: refactor parsing in get_ack
      git: avoid magic number with skip_prefix
      use skip_prefix to avoid repeated calculations
      http-push: refactor parsing of remote object names
      setup_git_env(): introduce git_path_from_env() helper
      move "%G" format test from t7510 to t6006
      replace: replace spaces with tabs in indentation
      avoid double close of descriptors handed to run_command
      replace: use argv_array in export_object
      replace: add a --raw mode for --edit
      add strip_suffix function
      implement ends_with via strip_suffix
      replace has_extension with ends_with
      use strip_suffix instead of ends_with in simple cases
      index-pack: use strip_suffix to avoid magic numbers
      strbuf: implement strbuf_strip_suffix
      verify-pack: use strbuf_strip_suffix
      prepare_packed_git_one: refactor duplicate-pack check
      t7300: repair filesystem permissions with test_when_finished
      remote-curl: do not complain on EOF from parent git
      remote-curl: use error instead of fprintf(stderr)
      remote-curl: mark helper-protocol errors more clearly
      tag: use skip_prefix instead of magic numbers
      alloc: write out allocator definitions
      move setting of object->type to alloc_* functions
      parse_object_buffer: do not set object type
      add object_as_type helper for casting objects
      alloc: factor out commit index
      object_as_type: set commit index
      diff-tree: avoid lookup_unknown_object
      prio-queue: factor out compare and swap operations
      prio-queue: make output stable with respect to insertion
      paint_down_to_common: use prio_queue
      t5539: update a flaky test

Jens Lehmann (21):
      status/commit: show staged submodules regardless of ignore config
      commit -m: commit staged submodules regardless of ignore config
      git-gui: show staged submodules regardless of ignore config
      git-gui: tolerate major version changes when comparing the git version
      gitk: Show staged submodules regardless of ignore config
      test-lib: add test_dir_is_empty()
      t/Makefile: check helper scripts for non-portable shell commands too
      t/Makefile: always test all lint targets when running tests
      submodules: add the lib-submodule-update.sh test library
      checkout: call the new submodule update test framework
      apply: add t4137 for submodule updates
      read-tree: add t1013 for submodule updates
      reset: add t7112 for submodule updates
      bisect: add t6041 for submodule updates
      merge: add t7613 for submodule updates
      rebase: add t3426 for submodule updates
      pull: add t5572 for submodule updates
      cherry-pick: add t3512 for submodule updates
      am: add t4255 for submodule updates
      stash: add t3906 for submodule updates
      revert: add t3513 for submodule updates

Jens Lindström (3):
      remote rm: delete remote configuration as the last
      remote: repack packed-refs once when deleting multiple refs
      remote prune: optimize "dangling symref" check/warning

Jeremiah Mahler (7):
      format-patch: add "--signature-file=<file>" option
      t9138-git-svn-authors-prog.sh fixups
      Documentation: wording fixes in the user manual and glossary
      t/t7810-grep.sh: remove duplicate test_config()
      api-strbuf.txt minor typos
      name-hash.c: replace cache_name_compare() with memcmp(3)
      cleanup duplicate name_compare() functions

Jiang Xin (2):
      blame: fix broken time_buf paddings in relative timestamp
      blame: dynamic blame_date_width for different locales

Johannes Schindelin (2):
      git grep -O -i: if the pager is 'less', pass the '-I' option
      Win32: let mingw_execve() return an int

Johannes Sixt (1):
      fix brown paper bag breakage in t5150-request-pull.sh

John Keeping (4):
      completion: add a note that merge options are shared
      completion: add missing options for git-merge
      rebase--am: use --cherry-pick instead of --ignore-if-in-upstream
      rebase: omit patch-identical commits with --fork-point

Jonathan McCrohan (1):
      git-instaweb: add support for Apache 2.4

Jonathan Nieder (4):
      contrib: remove vim support instructions
      contrib: remove git-diffall
      test-lint: find unportable sed, echo, test, and export usage after &&
      test doc: test_write_lines does not split its arguments

Junio C Hamano (49):
      apply --ignore-space-change: lines with and without leading whitespaces do not match
      send-email: windows drive prefix (e.g. C:) appears only at the beginning
      mergetool: document the default for --[no-]prompt
      compat/bswap.h: restore preference __BIG_ENDIAN over BIG_ENDIAN
      CodingGuidelines: once it is in, it is not worth the code churn
      CodingGuidelines: give an example for case/esac statement
      CodingGuidelines: give an example for redirection
      CodingGuidelines: give an example for control statements
      CodingGuidelines: give an example for shell function preamble
      CodingGuidelines: do not call the conditional statement "if()"
      CodingGuidelines: on comparison
      CodingGuidelines: on splitting a long line
      CodingGuidelines: avoid "test <cond> -a/-o <cond>"
      scripts: more "export VAR=VALUE" fixes
      Git 1.9.4
      fetch doc: update introductory part for clarity
      fetch doc: update note on '+' in front of the refspec
      fetch doc: remove notes on outdated "mixed layout"
      First batch for 2.1
      shortlog: allow --exclude=<glob> to be passed
      fetch doc: on pulling multiple refspecs
      fetch doc: update refspec format description
      fetch doc: remove "short-cut" section
      fetch doc: add a section on configured remote-tracking branches
      fetch: allow explicit --refmap to override configuration
      Second batch for 2.1
      Update draft release notes to 2.1
      test: turn EXPENSIVE into a lazy prerequisite
      test: turn USR_BIN_TIME into a lazy prerequisite
      t3302: coding style updates
      t3302: do not chdir around in the primary test process
      t3302: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
      t3419: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
      revision: parse "git log -<count>" more carefully
      t0008: do not depend on 'echo' handling backslashes specially
      Third batch for 2.1
      git-submodule.sh: avoid "echo" path-like values
      Fourth batch for 2.1
      builtin/clone.c: detect a clone starting at a tag correctly
      Git 2.0.1
      Fifth batch for 2.1
      Sixth batch for 2.1
      Start preparing for 2.0.2
      Seventh batch for 2.1
      Git 2.0.2
      Eighth batch for 2.1
      Ninth batch for 2.1
      Git 2.0.3
      Git 2.1.0-rc0

Jörn Engel (1):
      pager: do allow spawning pager recursively

Karsten Blees (46):
      MSVC: link dynamically to the CRT
      Win32 dirent: remove unused dirent.d_ino member
      Win32 dirent: remove unused dirent.d_reclen member
      Win32 dirent: change FILENAME_MAX to MAX_PATH
      Win32 dirent: clarify #include directives
      Win32 dirent: improve dirent implementation
      Win32: move main macro to a function
      Win32: support Unicode console output
      Win32: detect console streams more reliably
      Win32: warn if the console font doesn't support Unicode
      Win32: add Unicode conversion functions
      Win32: Thread-safe windows console output
      Win32: fix broken pipe detection
      Win32: reliably detect console pipe handles
      Win32: simplify internal mingw_spawn* APIs
      Win32: fix potential multi-threading issue
      MinGW: disable CRT command line globbing
      Win32: Unicode arguments (outgoing)
      Win32: Unicode arguments (incoming)
      trace: move trace declarations from cache.h to new trace.h
      trace: consistently name the format parameter
      trace: remove redundant printf format attribute
      symlinks: remove PATH_MAX limitation
      hashmap: factor out getting a hash code from a SHA1
      hashmap: improve struct hashmap member documentation
      hashmap: add simplified hashmap_get_from_hash() API
      hashmap: add string interning API
      cache.h: rename cache_def_free to cache_def_clear
      trace: improve trace performance
      Documentation/git.txt: improve documentation of 'GIT_TRACE*' variables
      sha1_file: change GIT_TRACE_PACK_ACCESS logging to use trace API
      trace: add infrastructure to augment trace output with additional info
      trace: disable additional trace output for unit tests
      trace: add current timestamp to all trace output
      trace: move code around, in preparation to file:line output
      trace: add 'file:line' to all trace output
      trace: add high resolution timer function to debug performance issues
      trace: add trace_performance facility to debug performance issues
      git: add performance tracing for git's main() function to debug scripts
      wt-status: simplify performance measurement by using getnanotime()
      progress: simplify performance measurement by using getnanotime()
      api-trace.txt: add trace API documentation
      Win32: Unicode file name support (except dirent)
      Win32: Unicode file name support (dirent)
      MinGW: fix compile error due to missing ELOOP
      config: use chmod() instead of fchmod()

Kirill Smelkov (20):
      combine-diff: move show_log_first logic/action out of paths scanning
      combine-diff: move changed-paths scanning logic into its own function
      tree-diff: no need to manually verify that there is no mode change for a path
      tree-diff: no need to pass match to skip_uninteresting()
      tree-diff: show_tree() is not needed
      tree-diff: consolidate code for emitting diffs and recursion in one place
      tree-diff: don't assume compare_tree_entry() returns -1,0,1
      tree-diff: move all action-taking code out of compare_tree_entry()
      tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
      tree-diff: show_path prototype is not needed anymore
      tree-diff: simplify tree_entry_pathcmp
      tree-diff: remove special-case diff-emitting code for empty-tree cases
      tree-diff: diff_tree() should now be static
      tree-diff: rework diff_tree interface to be sha1 based
      tree-diff: no need to call "full" diff_tree_sha1 from show_path()
      tree-diff: reuse base str(buf) memory on sub-tree recursion
      Portable alloca for Git
      tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
      combine-diff: speed it up, by using multiparent diff tree-walker directly
      mingw: activate alloca

Linus Torvalds (1):
      git log: support "auto" decorations

Luis R. Rodriguez (1):
      git.c: treat RUN_SETUP_GENTLY and RUN_SETUP as mutually exclusive

Marc Branchaud (2):
      fetch doc: move FETCH_HEAD material lower and add an example
      docs: Explain the purpose of fetch's and pull's <refspec> parameter.

Matthew Chen (1):
      submodule: document "sync --recursive"

Matthieu Moy (4):
      git-remote-mediawiki: allow stop/start-ing the test server
      git-remote-mediawiki: fix encoding issue for UTF-8 media files
      pager: remove 'S' from $LESS by default
      rebase -i: test "Nothing to do" case with autostash

Max Kirillov (5):
      git-show: fix 'git show -s' to not add extra terminator after merge commit
      gitk: Switch to patch mode when searching for line origin
      gitk: Add visiblerefs option, which lists always-shown branches
      t6023-merge-file.sh: fix and mark as broken invalid tests
      git-merge-file: do not add LF at EOF while applying unrelated change

Maxime Coste (2):
      git-p4: Do not include diff in spec file when just preparing p4
      git-p4: fix submit in non --prepare-p4-only mode

Michael Barabanov (1):
      use local cloning if insteadOf makes a local URL

Michael Haggerty (27):
      t1400: fix name and expected result of one test
      t1400: provide more usual input to the command
      parse_arg(): really test that argument is properly terminated
      t1400: add some more tests involving quoted arguments
      refs.h: rename the action_on_err constants
      update_refs(): fix constness
      update-ref --stdin: read the whole input at once
      parse_cmd_verify(): copy old_sha1 instead of evaluating <oldvalue> twice
      update-ref.c: extract a new function, parse_refname()
      update-ref --stdin: improve error messages for invalid values
      update-ref --stdin: make error messages more consistent
      update-ref --stdin: simplify error messages for missing oldvalues
      t1400: test that stdin -z update treats empty <newvalue> as zeros
      update-ref.c: extract a new function, parse_next_sha1()
      update-ref --stdin -z: deprecate interpreting the empty string as zeros
      t1400: test one mistake at a time
      update-ref --stdin: improve the error message for unexpected EOF
      update-ref --stdin: harmonize error messages
      refs: add a concept of a reference transaction
      update-ref --stdin: reimplement using reference transactions
      refs: remove API function update_refs()
      struct ref_update: rename field "ref_name" to "refname"
      struct ref_update: store refname as a FLEX_ARRAY
      ref_transaction_commit(): simplify code using temporary variables
      struct ref_update: add a lock field
      struct ref_update: add a type field
      ref_transaction_commit(): work with transaction->updates in place

Michael J Gruber (7):
      t7510: use consistent &&-chains in loop
      gpg-interface: provide clear helper for struct signature_check
      gpg-interface: provide access to the payload
      verify-commit: scriptable commit signature verification
      t7510: exit for loop with test result
      t7510: test verify-commit
      log: correctly identify mergetag signature verification status

Michael Naumov (1):
      sideband.c: do not use ANSI control sequence on non-terminal

Michael S. Tsirkin (6):
      git-send-email: two new options: to-cover, cc-cover
      test/send-email: to-cover, cc-cover tests
      rebase --keep-empty -i: add test
      test: add test_write_lines helper
      patch-id: make it stable against hunk reordering
      patch-id-test: test stable and unstable behaviour

Nguyễn Thái Ngọc Duy (40):
      index-pack: work around thread-unsafe pread()
      ewah: fix constness of ewah_read_mmap
      ewah: delete unused ewah_read_mmap_native declaration
      sequencer: do not update/refresh index if the lock cannot be held
      config: be strict on core.commentChar
      commit: allow core.commentChar=auto for character auto selection
      gc --auto: do not lock refs in the background
      git potty: restore environments after alias expansion
      read-cache: new API write_locked_index instead of write_index/write_cache
      read-cache: relocate and unexport commit_locked_index()
      read-cache: store in-memory flags in the first 12 bits of ce_flags
      read-cache: be strict about "changed" in remove_marked_cache_entries()
      read-cache: be specific what part of the index has changed
      update-index: be specific what part of the index has changed
      resolve-undo: be specific what part of the index has changed
      unpack-trees: be specific what part of the index has changed
      cache-tree: mark istate->cache_changed on cache tree invalidation
      cache-tree: mark istate->cache_changed on cache tree update
      cache-tree: mark istate->cache_changed on prime_cache_tree()
      entry.c: update cache_changed if refresh_cache is set in checkout_entry()
      read-cache: save index SHA-1 after reading
      read-cache: split-index mode
      read-cache: mark new entries for split index
      read-cache: save deleted entries in split index
      read-cache: mark updated entries for split index
      split-index: the writing part
      split-index: the reading part
      split-index: do not invalidate cache-tree at read time
      split-index: strip pathname of on-disk replaced entries
      update-index: new options to enable/disable split index mode
      update-index --split-index: do not split if $GIT_DIR is read only
      rev-parse: add --shared-index-path to get shared index path
      read-tree: force split-index mode off on --index-output
      read-tree: note about dropping split-index mode or index version
      read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
      t2104: make sure split index mode is off for the version test
      t1700: new tests for split-index mode
      dir.c: coding style fix
      dir.h: move struct exclude declaration to top level
      prep_exclude: remove the artificial PATH_MAX limit

Nick Alcock (1):
      t5538: move http push tests out to t5542

Pasha Bolokhov (1):
      dir.c:trim_trailing_spaces(): fix for " \ " sequence

Pat Thoyts (2):
      wincred: add install target
      wincred: avoid overwriting configured variables

Philip Oakley (1):
      doc: give some guidelines for error messages

Ramkumar Ramachandra (1):
      rebase -i: handle "Nothing to do" case with autostash

Ramsay Allan Jones (2):
      t0000-*.sh: fix the GIT_SKIP_TESTS sub-tests
      alloc.c: remove the alloc_raw_commit_node() function

René Scharfe (28):
      mailinfo: use strcmp() for string comparison
      pack-objects: use free()+xcalloc() instead of xrealloc()+memset()
      Use starts_with() for C strings instead of memcmp()
      blame: factor out get_next_line()
      blame: simplify prepare_lines()
      wt-status: use argv_array for environment
      wt-status: simplify building of summary limit argument
      sha1_file: replace PATH_MAX buffer with strbuf in prepare_packed_git_one()
      sha1_file: avoid overrunning alternate object base string
      t5000, t5003: simplify commit
      diff-tree: call free_commit_list() instead of duplicating its code
      line-log: use commit_list_append() instead of duplicating its code
      use strbuf_addbuf for adding strbufs
      use strbuf_addch for adding single characters
      merge: simplify merge_trivial() by using commit_list_append()
      commit: use commit_list_append() instead of duplicating its code
      fsck: simplify fsck_commit_buffer() by using commit_list_count()
      annotate: use argv_array
      strbuf: use strbuf_addstr() for adding C strings
      use commit_list_count() to count the members of commit_lists
      run-command: use internal argv_array of struct child_process in run_hook_ve()
      transport: simplify fetch_objs_via_rsync() using argv_array
      fast-import: use hashcmp() for SHA1 hash comparison
      bundle: use internal argv_array of struct child_process in create_bundle()
      remote-testsvn: use internal argv_array of struct child_process in cmd_import()
      unix-socket: remove stale socket before calling chdir()
      use xcalloc() to allocate zero-initialized memory
      use xmemdupz() to allocate copies of strings given by start and length

RomanBelinsky (1):
      SVN.pm::parse_svn_date: allow timestamps with a single-digit hour

Ronnie Sahlberg (27):
      sequencer.c: check for lock failure and bail early in fast_forward_to
      commit.c: check for lock error and return early
      refs.c: add new functions reflog_exists and delete_reflog
      checkout.c: use ref_exists instead of file_exist
      refs.c: change read_ref_at to use the reflog iterators
      enums: remove trailing ',' after last item in enum
      enums: remove trailing ',' after last item in enum
      refs.c: remove ref_transaction_rollback
      refs.c: ref_transaction_commit should not free the transaction
      refs.c: constify the sha arguments for ref_transaction_create|delete|update
      refs.c: allow passing NULL to ref_transaction_free
      refs.c: add a strbuf argument to ref_transaction_commit for error logging
      lockfile.c: add a new public function unable_to_lock_message
      lockfile.c: make lock_file return a meaningful errno on failurei
      refs.c: add an err argument to repack_without_refs
      refs.c: make sure log_ref_setup returns a meaningful errno
      refs.c: verify_lock should set errno to something meaningful
      refs.c: make remove_empty_directories always set errno to something sane
      refs.c: commit_packed_refs to return a meaningful errno on failure
      refs.c: make resolve_ref_unsafe set errno to something meaningful on error
      refs.c: log_ref_write should try to return meaningful errno
      refs.c: make ref_update_reject_duplicates take a strbuf argument for errors
      refs.c: make update_ref_write update a strbuf on failure
      update-ref: use err argument to get error from ref_transaction_commit
      refs.c: remove the onerr argument to ref_transaction_commit
      refs.c: change ref_transaction_update() to do error checking and return status
      refs.c: add a public is_branch function

Stefan Beller (3):
      .mailmap: map different names with the same email address together
      git.1: switch homepage for stats
      .mailmap: combine Stefan Beller's emails

Steffen Prohaska (1):
      completion: handle '!f() { ... }; f' and "!sh -c '...' -" aliases

Stepan Kasal (3):
      Revert "submodules: fix ambiguous absolute paths under Windows"
      t5000, t5003: do not use test_cmp to compare binary files
      mingw: avoid const warning

Stephen P. Smith (1):
      How to keep a project's canonical history correct.

Steve Hoelzer (1):
      environment.c: enable core.preloadindex by default

Tanay Abhra (4):
      string-list: spell all values out that are given to a string_list initializer
      imap-send: use skip_prefix instead of using magic numbers
      string-list: add string_list initializer helper function
      replace memset with string-list initializers

Theodore Leblond (1):
      compat/poll: sleep 1 millisecond to avoid busy wait

Thorsten Glaser (1):
      builtin/tag.c: show tag name to hint in the message editor

Torsten Bögershausen (7):
      utf8.c: use a table for double_width
      utf8: make it easier to auto-update git_wcwidth()
      t5551: fix the 50,000 tag test
      t9001: avoid non-portable '\n' with sed
      Update of unicode_width.h to Unicode Version 7.0
      t0025: rename the test files
      t0027: combinations of core.autocrlf, core.eol and text

Trần Ngọc Quân (1):
      l10n: Init Vietnamese translation

W. Trevor King (1):
      Documentation: mention config sources for @{upstream}

William Giokas (1):
      svn-fe: conform to pep8

Yi EungJun (2):
      http-protocol.txt: Basic Auth is defined in RFC 2617, not RFC 2616
      http: fix charset detection of extract_content_type()

Yiannis Marangos (2):
      wrapper.c: add xpread() similar to xread()
      read-cache.c: verify index file before we opportunistically update it

Zoltan Klinger (1):
      log: fix indentation for --graph --show-signature

brian m. carlson (3):
      blame: correctly handle files regardless of autocrlf
      rebase--merge: fix --skip with two conflicts in a row
      Documentation: fix missing text for rev-parse --verify

Øystein Walle (1):
      config: respect '~' and '~user' in mailmap.file

Øyvind A. Holm (1):
      .gitignore: "git-verify-commit" is a generated file

^ permalink raw reply	[relevance 3%]

* Re: Sharing merge conflict resolution between multiple developers
  @ 2014-08-11 18:44  3% ` Junio C Hamano
  2014-08-11 23:29  2%   ` Chris Packham
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2014-08-11 18:44 UTC (permalink / raw)
  To: Chris Packham; +Cc: GIT

Chris Packham <judge.packham@gmail.com> writes:

> Is there any way where we could share the conflict resolution around
> but still end up with a single merge commit.

One idea that immediately comes to me is to use something like
"rerere" (not its implementation and storage, but the underlying
idea) enhanced with the trick I use to fix-up merges in my daily
integration cycle (look for "merge-fix" in howto/maintain-git.txt
in Documentation/).

> developer A:
>   git merge $upstream
>   <conflicts>

And then commit this immediately, together with conflict markers
(i.e. "commit -a"), and discard it with "reset --hard HEAD^" *after*
storing it somewhere safe.  And then redo the same merge, resolve
the conflicts and commit the usual way.

The difference between the final conflict resolution and the
original conflicted state can be used as a reference for others to
redo the same conflict resolution later elsewhere.  That can most
easily be done by creating a commit that records the final state
whose parent is the one you recorded the initial conflicted state.

So, the "recording" phase may go something like this:

    git checkout $this
    git merge $that
    git commit -a -m 'merge-fix/$this-$that preimage'
    git branch merge-fix/$this-$that
    git reset --hard HEAD^
    git merge $that
    edit
    git commit -a -m 'merge $that to $this'
    git checkout merge-fix/$this-$that
    git read-tree -m -u HEAD $this
    git commit -a -m 'merge-fix/$this-$that postimage'

The rough idea is "git show merge-fix/$this-$that" will show the
"patch" you can apply on top of the conflicted state other people
would get by running "git merge $that" while on "$this" branch.

"rerere" essentially does the above recording (and replaying)
per-path and it comes with a clever indexing scheme to identify
which previous conflict resolution would apply to the conflicts you
see in your working tree.

^ permalink raw reply	[relevance 3%]

* Re: Sharing merge conflict resolution between multiple developers
  2014-08-11 18:44  3% ` Junio C Hamano
@ 2014-08-11 23:29  2%   ` Chris Packham
  2014-08-12  1:57  2%     ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Chris Packham @ 2014-08-11 23:29 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: GIT

On Tue, Aug 12, 2014 at 6:44 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Chris Packham <judge.packham@gmail.com> writes:
>
>> Is there any way where we could share the conflict resolution around
>> but still end up with a single merge commit.
>
> One idea that immediately comes to me is to use something like
> "rerere" (not its implementation and storage, but the underlying
> idea) enhanced with the trick I use to fix-up merges in my daily
> integration cycle (look for "merge-fix" in howto/maintain-git.txt
> in Documentation/).
>
>> developer A:
>>   git merge $upstream
>>   <conflicts>
>
> And then commit this immediately, together with conflict markers
> (i.e. "commit -a"), and discard it with "reset --hard HEAD^" *after*
> storing it somewhere safe.  And then redo the same merge, resolve
> the conflicts and commit the usual way.
>
> The difference between the final conflict resolution and the
> original conflicted state can be used as a reference for others to
> redo the same conflict resolution later elsewhere.  That can most
> easily be done by creating a commit that records the final state
> whose parent is the one you recorded the initial conflicted state.
>
> So, the "recording" phase may go something like this:
>
>     git checkout $this
>     git merge $that
>     git commit -a -m 'merge-fix/$this-$that preimage'
>     git branch merge-fix/$this-$that
>     git reset --hard HEAD^
>     git merge $that
>     edit
>     git commit -a -m 'merge $that to $this'
>     git checkout merge-fix/$this-$that
>     git read-tree -m -u HEAD $this
>     git commit -a -m 'merge-fix/$this-$that postimage'
>
> The rough idea is "git show merge-fix/$this-$that" will show the
> "patch" you can apply on top of the conflicted state other people
> would get by running "git merge $that" while on "$this" branch.

So how would someone else pickup that postimage and use it?

  git checkout $this
  git merge $that
  git fetch $remote ':/merge-fix/$this-$that postimage'
  git show ':/merge-fix/$this-$that postimage' | git apply (or patch -p1)
  edit

>
> "rerere" essentially does the above recording (and replaying)
> per-path and it comes with a clever indexing scheme to identify
> which previous conflict resolution would apply to the conflicts you
> see in your working tree.

I feel a toy patch coming on.

^ permalink raw reply	[relevance 2%]

* Re: Sharing merge conflict resolution between multiple developers
  2014-08-11 23:29  2%   ` Chris Packham
@ 2014-08-12  1:57  2%     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-08-12  1:57 UTC (permalink / raw)
  To: Chris Packham; +Cc: GIT

On Mon, Aug 11, 2014 at 4:29 PM, Chris Packham <judge.packham@gmail.com> wrote:

>> So, the "recording" phase may go something like this:
>> ...
>>     git checkout merge-fix/$this-$that
>>     git read-tree -m -u HEAD $this
>>     git commit -a -m 'merge-fix/$this-$that postimage'
>>
>> The rough idea is "git show merge-fix/$this-$that" will show the
>> "patch" you can apply on top of the conflicted state other people
>> would get by running "git merge $that" while on "$this" branch.
>
> So how would someone else pickup that postimage and use it?
>
>   git checkout $this
>   git merge $that
>   git fetch $remote ':/merge-fix/$this-$that postimage'
>   git show ':/merge-fix/$this-$that postimage' | git apply (or patch -p1)

For a simpler case that would work, but because we are not saving
just a patch but two full trees to compare (i.e. merge-fix/$this-$that
is the postimage, its ^1 is the preimage), you should be able to use
the three-way merge in a similar way cherry-pick works. In fact, that
is how rerere replays the recorded resolution, not with a "patch -p1".

^ permalink raw reply	[relevance 2%]

* [PATCH 3/3] checkout -m: attempt merge when deletion of path was staged
  @ 2014-08-13  0:03  1%     ` Jonathan Nieder
  2014-08-13  0:38  0%       ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Jonathan Nieder @ 2014-08-13  0:03 UTC (permalink / raw)
  To: Stefan Beller; +Cc: gitster, Johannes.Schindelin, barkalow, git

twoway_merge() is missing an o->gently check in the case where a file
that needs to be modified is missing from the index but present in the
old and new trees.  As a result, in this case 'git checkout -m' errors
out instead of trying to perform a merge.

Fix it by checking o->gently.  While at it, inline the o->gently check
into reject_merge to prevent future call sites from making the same
mistake.

Noticed by code inspection.  The motivating case hasn't been tested.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
This is the most iffy of the three patches, mostly because I was too
lazy to write a test.  I believe it's safe as-is nonetheless.

Thanks for reading.

 unpack-trees.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/unpack-trees.c b/unpack-trees.c
index 187b15b..6c45af7 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -1178,7 +1178,8 @@ return_failed:
 static int reject_merge(const struct cache_entry *ce,
 			struct unpack_trees_options *o)
 {
-	return add_rejected_path(o, ERROR_WOULD_OVERWRITE, ce->name);
+	return o->gently ? -1 :
+		add_rejected_path(o, ERROR_WOULD_OVERWRITE, ce->name);
 }
 
 static int same(const struct cache_entry *a, const struct cache_entry *b)
@@ -1633,7 +1634,7 @@ int threeway_merge(const struct cache_entry * const *stages,
 	/* #14, #14ALT, #2ALT */
 	if (remote && !df_conflict_head && head_match && !remote_match) {
 		if (index && !same(index, remote) && !same(index, head))
-			return o->gently ? -1 : reject_merge(index, o);
+			return reject_merge(index, o);
 		return merged_entry(remote, index, o);
 	}
 	/*
@@ -1641,7 +1642,7 @@ int threeway_merge(const struct cache_entry * const *stages,
 	 * make sure that it matches head.
 	 */
 	if (index && !same(index, head))
-		return o->gently ? -1 : reject_merge(index, o);
+		return reject_merge(index, o);
 
 	if (head) {
 		/* #5ALT, #15 */
@@ -1770,7 +1771,7 @@ int twoway_merge(const struct cache_entry * const *src,
 				else
 					return merged_entry(newtree, current, o);
 			}
-			return o->gently ? -1 : reject_merge(current, o);
+			return reject_merge(current, o);
 		} else if ((!oldtree && !newtree) || /* 4 and 5 */
 			 (!oldtree && newtree &&
 			  same(current, newtree)) || /* 6 and 7 */
@@ -1788,7 +1789,7 @@ int twoway_merge(const struct cache_entry * const *src,
 			/* 20 or 21 */
 			return merged_entry(newtree, current, o);
 		} else
-			return o->gently ? -1 : reject_merge(current, o);
+			return reject_merge(current, o);
 	}
 	else if (newtree) {
 		if (oldtree && !o->initial_checkout) {
-- 

^ permalink raw reply related	[relevance 1%]

* Re: [PATCH 3/3] checkout -m: attempt merge when deletion of path was staged
  2014-08-13  0:03  1%     ` [PATCH 3/3] checkout -m: attempt merge when deletion of path was staged Jonathan Nieder
@ 2014-08-13  0:38  0%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-08-13  0:38 UTC (permalink / raw)
  To: Jonathan Nieder
  Cc: Stefan Beller, Johannes Schindelin, Daniel Barkalow,
	Git Mailing List

On Tue, Aug 12, 2014 at 5:03 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
> twoway_merge() is missing an o->gently check in the case where a file
> that needs to be modified is missing from the index but present in the
> old and new trees.  As a result, in this case 'git checkout -m' errors
> out instead of trying to perform a merge.
>
> Fix it by checking o->gently.  While at it, inline the o->gently check
> into reject_merge to prevent future call sites from making the same
> mistake.
>
> Noticed by code inspection.  The motivating case hasn't been tested.

That sounds sloppy X-<.  I may comment more after figuring out
what _other_ reject_merge() caller that does not appear in the
patch would change its behaviour with this patch.

  side note: of course, if this were two patches, one that adds the
  same o->gently ? -1 : reject thing to places where they forget to
  do so, and the other that moves the gently thing to reject helper,
  then we can read all the necessary information to judge the change
  in the patch ;-)

Thanks.

>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> ---
> This is the most iffy of the three patches, mostly because I was too
> lazy to write a test.  I believe it's safe as-is nonetheless.
>
> Thanks for reading.
>
>  unpack-trees.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/unpack-trees.c b/unpack-trees.c
> index 187b15b..6c45af7 100644
> --- a/unpack-trees.c
> +++ b/unpack-trees.c
> @@ -1178,7 +1178,8 @@ return_failed:
>  static int reject_merge(const struct cache_entry *ce,
>                         struct unpack_trees_options *o)
>  {
> -       return add_rejected_path(o, ERROR_WOULD_OVERWRITE, ce->name);
> +       return o->gently ? -1 :
> +               add_rejected_path(o, ERROR_WOULD_OVERWRITE, ce->name);
>  }
>
>  static int same(const struct cache_entry *a, const struct cache_entry *b)
> @@ -1633,7 +1634,7 @@ int threeway_merge(const struct cache_entry * const *stages,
>         /* #14, #14ALT, #2ALT */
>         if (remote && !df_conflict_head && head_match && !remote_match) {
>                 if (index && !same(index, remote) && !same(index, head))
> -                       return o->gently ? -1 : reject_merge(index, o);
> +                       return reject_merge(index, o);
>                 return merged_entry(remote, index, o);
>         }
>         /*
> @@ -1641,7 +1642,7 @@ int threeway_merge(const struct cache_entry * const *stages,
>          * make sure that it matches head.
>          */
>         if (index && !same(index, head))
> -               return o->gently ? -1 : reject_merge(index, o);
> +               return reject_merge(index, o);
>
>         if (head) {
>                 /* #5ALT, #15 */
> @@ -1770,7 +1771,7 @@ int twoway_merge(const struct cache_entry * const *src,
>                                 else
>                                         return merged_entry(newtree, current, o);
>                         }
> -                       return o->gently ? -1 : reject_merge(current, o);
> +                       return reject_merge(current, o);
>                 } else if ((!oldtree && !newtree) || /* 4 and 5 */
>                          (!oldtree && newtree &&
>                           same(current, newtree)) || /* 6 and 7 */
> @@ -1788,7 +1789,7 @@ int twoway_merge(const struct cache_entry * const *src,
>                         /* 20 or 21 */
>                         return merged_entry(newtree, current, o);
>                 } else
> -                       return o->gently ? -1 : reject_merge(current, o);
> +                       return reject_merge(current, o);
>         }
>         else if (newtree) {
>                 if (oldtree && !o->initial_checkout) {
> --

^ permalink raw reply	[relevance 0%]

* [PATCH] git-svn: merge: fix rooturl/branchurl match check
@ 2014-10-15 12:39  2% Tommaso Colombo
  2014-10-20  6:24  2% ` Eric Wong
  0 siblings, 1 reply; 200+ results
From: Tommaso Colombo @ 2014-10-15 12:39 UTC (permalink / raw)
  To: git; +Cc: Tommaso Colombo

When populating svn:mergeinfo, git-svn merge checks if the merge parent
of the merged branch is under the same root as the git-svn repository.
This was implemented comparing $gs->repos_root with the return value of
of cmt_metadata for the merge parent. However, the first may contain a
username, whereas the second does not. In this case the comparison
fails.

Remove the username from $gs->repos_root before performing the
comparison.
---
 git-svn.perl | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index b6e2186..0a5a5ff 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -707,7 +707,8 @@ sub populate_merge_info {
 		my $all_parents_ok = 1;
 		my $aggregate_mergeinfo = '';
 		my $rooturl = $gs->repos_root;
-		my ($target_branch) = $gs->full_pushurl =~ /^\Q$rooturl\E(.*)/;
+		Git::SVN::remove_username($rooturl);
+		my $target_branch = $gs->path;
 
 		if (defined($rewritten_parent)) {
 			# Replace first parent with newly-rewritten version
@@ -729,7 +730,7 @@ sub populate_merge_info {
 			}
 			my $branchpath = $1;
 
-			my $ra = Git::SVN::Ra->new($branchurl);
+			my $ra = Git::SVN::Ra->new(add_path_to_url($gs->repos_root, $branchpath));
 			my (undef, undef, $props) =
 				$ra->get_dir(canonicalize_path("."), $svnrev);
 			my $par_mergeinfo = $props->{'svn:mergeinfo'};
@@ -921,6 +922,7 @@ sub cmd_dcommit {
 		# information from different SVN repos, and paths
 		# which are not underneath this repository root.
 		my $rooturl = $gs->repos_root;
+		Git::SVN::remove_username($rooturl);
 		foreach my $d (@$linear_refs) {
 			my %parentshash;
 			read_commit_parents(\%parentshash, $d);
-- 
2.1.2.443.g670a3c1.dirty

^ permalink raw reply related	[relevance 2%]

* Re: [PATCH] git-svn: merge: fix rooturl/branchurl match check
  2014-10-15 12:39  2% [PATCH] git-svn: merge: fix rooturl/branchurl match check Tommaso Colombo
@ 2014-10-20  6:24  2% ` Eric Wong
  0 siblings, 0 replies; 200+ results
From: Eric Wong @ 2014-10-20  6:24 UTC (permalink / raw)
  To: Tommaso Colombo; +Cc: git, Tommaso Colombo

Tommaso Colombo <tommaso.colombo@outlook.com> wrote:
> When populating svn:mergeinfo, git-svn merge checks if the merge parent
> of the merged branch is under the same root as the git-svn repository.
> This was implemented comparing $gs->repos_root with the return value of
> of cmt_metadata for the merge parent. However, the first may contain a
> username, whereas the second does not. In this case the comparison
> fails.
> 
> Remove the username from $gs->repos_root before performing the
> comparison.

Thanks.  Commit makes sense, but one of the test cases fails for me,
can you check it out?
$ make && make t9161-git-svn-mergeinfo-push.sh -C t GIT_TEST_OPTS='-i -v'
<snip successes>
ok 11 - reintegration merge

expecting success: 
	mergeinfo=$(svn_cmd propget svn:mergeinfo "$svnrepo"/branches/svnb4)
	test "$mergeinfo" = "/branches/svnb1:2-4,7-9,13-18
/branches/svnb2:3,8,16-17
/branches/svnb3:4,9
/branches/svnb5:6,11"
	
not ok 12 - check reintegration mergeinfo
#	
#		mergeinfo=$(svn_cmd propget svn:mergeinfo "$svnrepo"/branches/svnb4)
#		test "$mergeinfo" = "/branches/svnb1:2-4,7-9,13-18
#	/branches/svnb2:3,8,16-17
#	/branches/svnb3:4,9
#	/branches/svnb5:6,11"
#		
make: *** [t9161-git-svn-mergeinfo-push.sh] Error 1
make: Leaving directory `/home/ew/git-core/t'


You'll also need to sign-off (see Documentation/SubmittingPatches)
It is required (project policy, not mine)

> @@ -729,7 +730,7 @@ sub populate_merge_info {
>  			}
>  			my $branchpath = $1;
>  
> -			my $ra = Git::SVN::Ra->new($branchurl);
> +			my $ra = Git::SVN::Ra->new(add_path_to_url($gs->repos_root, $branchpath));

Also, please keep long lines wrapped to <= 80 columns.
Thanks again.

^ permalink raw reply	[relevance 2%]

* [PATCH] merge: Fix English grammar in please-commit-before-merge message.
@ 2015-10-02  4:25  3% Alex Henrie
  0 siblings, 0 replies; 200+ results
From: Alex Henrie @ 2015-10-02  4:25 UTC (permalink / raw)
  To: pyokagan, avarab, gitster, git; +Cc: Alex Henrie

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
---
 advice.c                     | 2 +-
 contrib/examples/git-pull.sh | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/advice.c b/advice.c
index 4965686..4dc5cf1 100644
--- a/advice.c
+++ b/advice.c
@@ -100,7 +100,7 @@ void NORETURN die_conclude_merge(void)
 {
 	error(_("You have not concluded your merge (MERGE_HEAD exists)."));
 	if (advice_resolve_conflict)
-		advise(_("Please, commit your changes before you can merge."));
+		advise(_("Please, commit your changes before merging."));
 	die(_("Exiting because of unfinished merge."));
 }
 
diff --git a/contrib/examples/git-pull.sh b/contrib/examples/git-pull.sh
index e8dc2e0..6b3a03f 100755
--- a/contrib/examples/git-pull.sh
+++ b/contrib/examples/git-pull.sh
@@ -69,7 +69,7 @@ as appropriate to mark resolution and make a commit.")"
 die_merge () {
     if [ $(git config --bool --get advice.resolveConflict || echo true) = "true" ]; then
 	die "$(gettext "You have not concluded your merge (MERGE_HEAD exists).
-Please, commit your changes before you can merge.")"
+Please, commit your changes before merging.")"
     else
 	die "$(gettext "You have not concluded your merge (MERGE_HEAD exists).")"
     fi
-- 
2.6.0

^ permalink raw reply related	[relevance 3%]

* [PATCH 0/1]  merge: fix cache_entry use-after-free
@ 2015-10-08 18:47  5% David Turner
  2015-10-08 18:47  1% ` David Turner
  0 siblings, 1 reply; 200+ results
From: David Turner @ 2015-10-08 18:47 UTC (permalink / raw)
  To: git; +Cc: David Turner

Keith diagnosed the problem and wrote the patch.  I wrote the commit
message and am sending it upstream with his OK.

Keith McGuigan (1):
  merge: fix cache_entry use-after-free

 cache.h        | 27 +++++++++++++++++++++++++++
 name-hash.c    |  7 ++++++-
 read-cache.c   |  5 ++++-
 split-index.c  | 12 +++++++-----
 unpack-trees.c |  6 ++++--
 5 files changed, 48 insertions(+), 9 deletions(-)

-- 
2.4.2.644.g97b850b-twtrsrc

^ permalink raw reply	[relevance 5%]

* [PATCH 0/1] merge: fix cache_entry use-after-free
  2015-10-08 18:47  5% [PATCH 0/1] merge: fix cache_entry use-after-free David Turner
@ 2015-10-08 18:47  1% ` David Turner
  2015-10-08 20:00  2%   ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: David Turner @ 2015-10-08 18:47 UTC (permalink / raw)
  To: git; +Cc: Keith McGuigan, David Turner

From: Keith McGuigan <kmcguigan@twitter.com>

During merges, we would previously free entries that we no longer need
in the destination index.  But those entries might also be stored in
the dir_entry cache, and when a later call to add_to_index found them,
they would be used after being freed.

To prevent this, add a ref count for struct cache_entry.  Whenever
a cache entry is added to a data structure, the ref count is incremented;
when it is removed from the data structure, it is decremented.  When
it hits zero, the cache_entry is freed.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
---
 cache.h        | 27 +++++++++++++++++++++++++++
 name-hash.c    |  7 ++++++-
 read-cache.c   |  5 ++++-
 split-index.c  | 12 +++++++-----
 unpack-trees.c |  6 ++++--
 5 files changed, 48 insertions(+), 9 deletions(-)

diff --git a/cache.h b/cache.h
index 752031e..7563658 100644
--- a/cache.h
+++ b/cache.h
@@ -149,6 +149,7 @@ struct stat_data {
 
 struct cache_entry {
 	struct hashmap_entry ent;
+	unsigned int ref_count; /* count the number of refs to this in dir_hash */
 	struct stat_data ce_stat_data;
 	unsigned int ce_mode;
 	unsigned int ce_flags;
@@ -213,6 +214,32 @@ struct cache_entry {
 struct pathspec;
 
 /*
+ * Increment the cache_entry reference count.  Should be called
+ * whenever a pointer to a cache_entry is retained in a data structure,
+ * thus marking it as alive.
+ */
+static inline void add_ce_ref(struct cache_entry *ce)
+{
+	assert(ce != NULL && ce->ref_count >= 0);
+	++ce->ref_count;
+}
+
+/*
+ * Decrement the cache_entry reference count.  Should be called whenever
+ * a pointer to a cache_entry is dropped.  Once the counter drops to 0
+ * the cache_entry memory will be safely freed.
+ */
+static inline void drop_ce_ref(struct cache_entry *ce)
+{
+	if (ce != NULL) {
+		assert(ce->ref_count >= 0);
+		if (--ce->ref_count < 1) {
+			free(ce);
+		}
+	}
+}
+
+/*
  * Copy the sha1 and stat state of a cache entry from one to
  * another. But we never change the name, or the hash state!
  */
diff --git a/name-hash.c b/name-hash.c
index 702cd05..f12c919 100644
--- a/name-hash.c
+++ b/name-hash.c
@@ -66,6 +66,7 @@ static struct dir_entry *hash_dir_entry(struct index_state *istate,
 		dir = xcalloc(1, sizeof(struct dir_entry));
 		hashmap_entry_init(dir, memihash(ce->name, namelen));
 		dir->namelen = namelen;
+		add_ce_ref(ce);
 		dir->ce = ce;
 		hashmap_add(&istate->dir_hash, dir);
 
@@ -92,7 +93,9 @@ static void remove_dir_entry(struct index_state *istate, struct cache_entry *ce)
 	struct dir_entry *dir = hash_dir_entry(istate, ce, ce_namelen(ce));
 	while (dir && !(--dir->nr)) {
 		struct dir_entry *parent = dir->parent;
-		hashmap_remove(&istate->dir_hash, dir, NULL);
+		struct dir_entry *removed = hashmap_remove(&istate->dir_hash, dir, NULL);
+		assert(removed == dir);
+		drop_ce_ref(dir->ce);
 		free(dir);
 		dir = parent;
 	}
@@ -105,6 +108,7 @@ static void hash_index_entry(struct index_state *istate, struct cache_entry *ce)
 	ce->ce_flags |= CE_HASHED;
 	hashmap_entry_init(ce, memihash(ce->name, ce_namelen(ce)));
 	hashmap_add(&istate->name_hash, ce);
+	add_ce_ref(ce);
 
 	if (ignore_case)
 		add_dir_entry(istate, ce);
@@ -147,6 +151,7 @@ void remove_name_hash(struct index_state *istate, struct cache_entry *ce)
 		return;
 	ce->ce_flags &= ~CE_HASHED;
 	hashmap_remove(&istate->name_hash, ce, ce);
+	drop_ce_ref(ce);
 
 	if (ignore_case)
 		remove_dir_entry(istate, ce);
diff --git a/read-cache.c b/read-cache.c
index 87204a5..442de34 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -53,6 +53,7 @@ static const char *alternate_index_output;
 static void set_index_entry(struct index_state *istate, int nr, struct cache_entry *ce)
 {
 	istate->cache[nr] = ce;
+	add_ce_ref(ce);
 	add_name_hash(istate, ce);
 }
 
@@ -62,7 +63,7 @@ static void replace_index_entry(struct index_state *istate, int nr, struct cache
 
 	replace_index_entry_in_base(istate, old, ce);
 	remove_name_hash(istate, old);
-	free(old);
+	drop_ce_ref(old);
 	set_index_entry(istate, nr, ce);
 	ce->ce_flags |= CE_UPDATE_IN_BASE;
 	istate->cache_changed |= CE_ENTRY_CHANGED;
@@ -75,6 +76,7 @@ void rename_index_entry_at(struct index_state *istate, int nr, const char *new_n
 
 	new = xmalloc(cache_entry_size(namelen));
 	copy_cache_entry(new, old);
+	new->ref_count = 0;
 	new->ce_flags &= ~CE_HASHED;
 	new->ce_namelen = namelen;
 	new->index = 0;
@@ -1426,6 +1428,7 @@ static struct cache_entry *cache_entry_from_ondisk(struct ondisk_cache_entry *on
 {
 	struct cache_entry *ce = xmalloc(cache_entry_size(len));
 
+	ce->ref_count = 0;
 	ce->ce_stat_data.sd_ctime.sec = get_be32(&ondisk->ctime.sec);
 	ce->ce_stat_data.sd_mtime.sec = get_be32(&ondisk->mtime.sec);
 	ce->ce_stat_data.sd_ctime.nsec = get_be32(&ondisk->ctime.nsec);
diff --git a/split-index.c b/split-index.c
index 968b780..ad28f7b 100644
--- a/split-index.c
+++ b/split-index.c
@@ -124,7 +124,7 @@ static void replace_entry(size_t pos, void *data)
 	src->ce_flags |= CE_UPDATE_IN_BASE;
 	src->ce_namelen = dst->ce_namelen;
 	copy_cache_entry(dst, src);
-	free(src);
+	drop_ce_ref(src);
 	si->nr_replacements++;
 }
 
@@ -227,7 +227,7 @@ void prepare_to_write_split_index(struct index_state *istate)
 			base->ce_flags = base_flags;
 			if (ret)
 				ce->ce_flags |= CE_UPDATE_IN_BASE;
-			free(base);
+			drop_ce_ref(base);
 			si->base->cache[ce->index - 1] = ce;
 		}
 		for (i = 0; i < si->base->cache_nr; i++) {
@@ -302,7 +302,7 @@ void save_or_free_index_entry(struct index_state *istate, struct cache_entry *ce
 	    ce == istate->split_index->base->cache[ce->index - 1])
 		ce->ce_flags |= CE_REMOVE;
 	else
-		free(ce);
+		drop_ce_ref(ce);
 }
 
 void replace_index_entry_in_base(struct index_state *istate,
@@ -314,8 +314,10 @@ void replace_index_entry_in_base(struct index_state *istate,
 	    istate->split_index->base &&
 	    old->index <= istate->split_index->base->cache_nr) {
 		new->index = old->index;
-		if (old != istate->split_index->base->cache[new->index - 1])
-			free(istate->split_index->base->cache[new->index - 1]);
+		if (old != istate->split_index->base->cache[new->index - 1]) {
+			struct cache_entry *ce = istate->split_index->base->cache[new->index - 1];
+			drop_ce_ref(ce);
+		}
 		istate->split_index->base->cache[new->index - 1] = new;
 	}
 }
diff --git a/unpack-trees.c b/unpack-trees.c
index f932e80..1a0a637 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -606,8 +606,10 @@ static int unpack_nondirectories(int n, unsigned long mask,
 					o);
 		for (i = 0; i < n; i++) {
 			struct cache_entry *ce = src[i + o->merge];
-			if (ce != o->df_conflict_entry)
-				free(ce);
+			if (ce != o->df_conflict_entry) {
+				drop_ce_ref(ce);
+				src[i + o->merge] = NULL;
+			}
 		}
 		return rc;
 	}
-- 
2.4.2.644.g97b850b-twtrsrc

^ permalink raw reply related	[relevance 1%]

* Re: [PATCH 0/1] merge: fix cache_entry use-after-free
  2015-10-08 18:47  1% ` David Turner
@ 2015-10-08 20:00  2%   ` Junio C Hamano
  2015-10-09 22:16  2%     ` David Turner
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2015-10-08 20:00 UTC (permalink / raw)
  To: David Turner; +Cc: git, Keith McGuigan

David Turner <dturner@twopensource.com> writes:

> From: Keith McGuigan <kmcguigan@twitter.com>
>
> During merges, we would previously free entries that we no longer need
> in the destination index.  But those entries might also be stored in
> the dir_entry cache, and when a later call to add_to_index found them,
> they would be used after being freed.
>
> To prevent this, add a ref count for struct cache_entry.  Whenever
> a cache entry is added to a data structure, the ref count is incremented;
> when it is removed from the data structure, it is decremented.  When
> it hits zero, the cache_entry is freed.
>
> Signed-off-by: David Turner <dturner@twopensource.com>
> Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
> ---

Thanks.

> @@ -213,6 +214,32 @@ struct cache_entry {
>  struct pathspec;
>  
>  /*
> + * Increment the cache_entry reference count.  Should be called
> + * whenever a pointer to a cache_entry is retained in a data structure,
> + * thus marking it as alive.
> + */
> +static inline void add_ce_ref(struct cache_entry *ce)
> +{
> +	assert(ce != NULL && ce->ref_count >= 0);
> +	++ce->ref_count;
> +}

We tend to prefer post-increment when the distinction between pre-
or post- does not make any difference, which is the case here.

> diff --git a/name-hash.c b/name-hash.c
> index 702cd05..f12c919 100644
> --- a/name-hash.c
> +++ b/name-hash.c
> @@ -92,7 +93,9 @@ static void remove_dir_entry(struct index_state *istate, struct cache_entry *ce)
>  	struct dir_entry *dir = hash_dir_entry(istate, ce, ce_namelen(ce));
>  	while (dir && !(--dir->nr)) {
>  		struct dir_entry *parent = dir->parent;
> -		hashmap_remove(&istate->dir_hash, dir, NULL);
> +		struct dir_entry *removed = hashmap_remove(&istate->dir_hash, dir, NULL);
> +		assert(removed == dir);
> +		drop_ce_ref(dir->ce);

This is curious.  In remove_name_hash() you do not have the
corresponding assert.  Why is it necessary here (or is it
unnecessary over there)?

> @@ -147,6 +151,7 @@ void remove_name_hash(struct index_state *istate, struct cache_entry *ce)
>  		return;
>  	ce->ce_flags &= ~CE_HASHED;
>  	hashmap_remove(&istate->name_hash, ce, ce);
> +	drop_ce_ref(ce);
>  
>  	if (ignore_case)
>  		remove_dir_entry(istate, ce);
> diff --git a/read-cache.c b/read-cache.c
> index 87204a5..442de34 100644
> --- a/read-cache.c
> +++ b/read-cache.c
> @@ -53,6 +53,7 @@ static const char *alternate_index_output;
>  static void set_index_entry(struct index_state *istate, int nr, struct cache_entry *ce)
>  {
>  	istate->cache[nr] = ce;
> +	add_ce_ref(ce);
>  	add_name_hash(istate, ce);
>  }

What happens to the existing entry that used to be istate->cache[nr],
which may or may not be 'ce' that is replacing it?

It turns out that all three calling sites are safe, but it is not
immediately obvious why.  Perhaps some comment in front of the
function is in order, to warn those who may have to add a new caller
or restructure the existing calling chain, that istate->cache[nr] is
expected not to hold a live reference when the function is called,
or something?

> @@ -314,8 +314,10 @@ void replace_index_entry_in_base(struct index_state *istate,
>  	    istate->split_index->base &&
>  	    old->index <= istate->split_index->base->cache_nr) {
>  		new->index = old->index;
> -		if (old != istate->split_index->base->cache[new->index - 1])
> -			free(istate->split_index->base->cache[new->index - 1]);
> +		if (old != istate->split_index->base->cache[new->index - 1]) {
> +			struct cache_entry *ce = istate->split_index->base->cache[new->index - 1];
> +			drop_ce_ref(ce);
> +		}
>  		istate->split_index->base->cache[new->index - 1] = new;

Does 'new' already have the right refcount at this point?

^ permalink raw reply	[relevance 2%]

* Re: [PATCH 0/1] merge: fix cache_entry use-after-free
  2015-10-08 20:00  2%   ` Junio C Hamano
@ 2015-10-09 22:16  2%     ` David Turner
  2015-10-09 22:51  2%       ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: David Turner @ 2015-10-09 22:16 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git mailing list, Duy Nguyen

+Duy Nguyen, who knows the split index better.

On Thu, 2015-10-08 at 13:00 -0700, Junio C Hamano wrote:
> David Turner <dturner@twopensource.com> writes:
> 
> > From: Keith McGuigan <kmcguigan@twitter.com>
> >
> > During merges, we would previously free entries that we no longer need
> > in the destination index.  But those entries might also be stored in
> > the dir_entry cache, and when a later call to add_to_index found them,
> > they would be used after being freed.
> >
> > To prevent this, add a ref count for struct cache_entry.  Whenever
> > a cache entry is added to a data structure, the ref count is incremented;
> > when it is removed from the data structure, it is decremented.  When
> > it hits zero, the cache_entry is freed.
> >
> > Signed-off-by: David Turner <dturner@twopensource.com>
> > Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
> > ---
> 
> Thanks.
> 
> > @@ -213,6 +214,32 @@ struct cache_entry {
> >  struct pathspec;
> >  
> >  /*
> > + * Increment the cache_entry reference count.  Should be called
> > + * whenever a pointer to a cache_entry is retained in a data structure,
> > + * thus marking it as alive.
> > + */
> > +static inline void add_ce_ref(struct cache_entry *ce)
> > +{
> > +	assert(ce != NULL && ce->ref_count >= 0);
> > +	++ce->ref_count;
> > +}
> 
> We tend to prefer post-increment when the distinction between pre-
> or post- does not make any difference, which is the case here.

Will fix.

> > diff --git a/name-hash.c b/name-hash.c
> > index 702cd05..f12c919 100644
> > --- a/name-hash.c
> > +++ b/name-hash.c
> > @@ -92,7 +93,9 @@ static void remove_dir_entry(struct index_state *istate, struct cache_entry *ce)
> >  	struct dir_entry *dir = hash_dir_entry(istate, ce, ce_namelen(ce));
> >  	while (dir && !(--dir->nr)) {
> >  		struct dir_entry *parent = dir->parent;
> > -		hashmap_remove(&istate->dir_hash, dir, NULL);
> > +		struct dir_entry *removed = hashmap_remove(&istate->dir_hash, dir, NULL);
> > +		assert(removed == dir);
> > +		drop_ce_ref(dir->ce);
> 
> This is curious.  In remove_name_hash() you do not have the
> corresponding assert.  Why is it necessary here (or is it
> unnecessary over there)?

It is unnecessary in any case: it's an assert rather than a check for an
expected (or even unexpected) case.  That just happens to be where Keith
first managed to track down the use-after free, so that's where he
happened to put the assert while trying to debug it.  I'm in general in
favor of more asserts rather than fewer, so I would prefer to keep it
in.  But I can remove it if you like.

> > @@ -147,6 +151,7 @@ void remove_name_hash(struct index_state *istate, struct cache_entry *ce)
> >  		return;
> >  	ce->ce_flags &= ~CE_HASHED;
> >  	hashmap_remove(&istate->name_hash, ce, ce);
> > +	drop_ce_ref(ce);
> >  
> >  	if (ignore_case)
> >  		remove_dir_entry(istate, ce);
> > diff --git a/read-cache.c b/read-cache.c
> > index 87204a5..442de34 100644
> > --- a/read-cache.c
> > +++ b/read-cache.c
> > @@ -53,6 +53,7 @@ static const char *alternate_index_output;
> >  static void set_index_entry(struct index_state *istate, int nr, struct cache_entry *ce)
> >  {
> >  	istate->cache[nr] = ce;
> > +	add_ce_ref(ce);
> >  	add_name_hash(istate, ce);
> >  }
> 
> What happens to the existing entry that used to be istate->cache[nr],
> which may or may not be 'ce' that is replacing it?
> 
> It turns out that all three calling sites are safe, but it is not
> immediately obvious why.  Perhaps some comment in front of the
> function is in order, to warn those who may have to add a new caller
> or restructure the existing calling chain, that istate->cache[nr] is
> expected not to hold a live reference when the function is called,
> or something?

Happy to add it if you want, but to me it was clear without because if
there were a value in istate->cache[nr], that old value would be leaked.
Let me know.

> > @@ -314,8 +314,10 @@ void replace_index_entry_in_base(struct index_state *istate,
> >  	    istate->split_index->base &&
> >  	    old->index <= istate->split_index->base->cache_nr) {
> >  		new->index = old->index;
> > -		if (old != istate->split_index->base->cache[new->index - 1])
> > -			free(istate->split_index->base->cache[new->index - 1]);
> > +		if (old != istate->split_index->base->cache[new->index - 1]) {
> > +			struct cache_entry *ce = istate->split_index->base->cache[new->index - 1];
> > +			drop_ce_ref(ce);
> > +		}
> >  		istate->split_index->base->cache[new->index - 1] = new;
> 
> Does 'new' already have the right refcount at this point?

I spoke to Keith, and he thinks we do need an add_ce_ref there. I'll fix
that on the reroll.  Duy, do you agree?

^ permalink raw reply	[relevance 2%]

* Re: [PATCH 0/1] merge: fix cache_entry use-after-free
  2015-10-09 22:16  2%     ` David Turner
@ 2015-10-09 22:51  2%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-09 22:51 UTC (permalink / raw)
  To: David Turner; +Cc: git mailing list, Duy Nguyen

David Turner <dturner@twopensource.com> writes:

>> > +		assert(removed == dir);
>> > +		drop_ce_ref(dir->ce);
>> 
>> This is curious.  In remove_name_hash() you do not have the
>> corresponding assert.  Why is it necessary here (or is it
>> unnecessary over there)?
>
> It is unnecessary in any case: it's an assert rather than a check for an
> expected (or even unexpected) case.  That just happens to be where Keith
> first managed to track down the use-after free, so that's where he
> happened to put the assert while trying to debug it.  I'm in general in
> favor of more asserts rather than fewer, so I would prefer to keep it
> in.  But I can remove it if you like.

OK, it was just the inconsistency between the two made them look
curious, as if one of them is more likely to get broken, or the
patch author was not so sure about the assumption, or something.

>> > +	add_ce_ref(ce);
>> >  	add_name_hash(istate, ce);
>> >  }
>> 
>> What happens to the existing entry that used to be istate->cache[nr],
>> which may or may not be 'ce' that is replacing it?
>> 
>> It turns out that all three calling sites are safe, but it is not
>> immediately obvious why.  Perhaps some comment in front of the
>> function is in order, to warn those who may have to add a new caller
>> or restructure the existing calling chain, that istate->cache[nr] is
>> expected not to hold a live reference when the function is called,
>> or something?
>
> Happy to add it if you want, but to me it was clear without because if
> there were a value in istate->cache[nr], that old value would be leaked.

OK, that's sort-of-cheating, but is a sound short-cut ;-).

>> > +		if (old != istate->split_index->base->cache[new->index - 1]) {
>> > +			struct cache_entry *ce = istate->split_index->base->cache[new->index - 1];
>> > +			drop_ce_ref(ce);
>> > +		}
>> >  		istate->split_index->base->cache[new->index - 1] = new;
>> 
>> Does 'new' already have the right refcount at this point?
>
> I spoke to Keith, and he thinks we do need an add_ce_ref there. I'll fix
> that on the reroll.  Duy, do you agree?

^ permalink raw reply	[relevance 2%]

* [PATCH v2] merge: fix cache_entry use-after-free
@ 2015-10-12 22:03  1% David Turner
  2015-10-12 22:28  2% ` Junio C Hamano
  2015-10-14 21:17  2% ` Junio C Hamano
  0 siblings, 2 replies; 200+ results
From: David Turner @ 2015-10-12 22:03 UTC (permalink / raw)
  To: git; +Cc: Keith McGuigan

From: Keith McGuigan <kmcguigan@twitter.com>

During merges, we would previously free entries that we no longer need
in the destination index.  But those entries might also be stored in
the dir_entry cache, and when a later call to add_to_index found them,
they would be used after being freed.

To prevent this, add a ref count for struct cache_entry.  Whenever
a cache entry is added to a data structure, the ref count is incremented;
when it is removed from the data structure, it is decremented.  When
it hits zero, the cache_entry is freed.

Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
---

This version addresses Junio's comments on v1.  It adds a missing
add_ce_ref, and fixes a formatting nit.

 cache.h        | 27 +++++++++++++++++++++++++++
 name-hash.c    |  7 ++++++-
 read-cache.c   |  6 +++++-
 split-index.c  | 13 ++++++++-----
 unpack-trees.c |  6 ++++--
 5 files changed, 50 insertions(+), 9 deletions(-)

diff --git a/cache.h b/cache.h
index 752031e..738f76d 100644
--- a/cache.h
+++ b/cache.h
@@ -149,6 +149,7 @@ struct stat_data {
 
 struct cache_entry {
 	struct hashmap_entry ent;
+	unsigned int ref_count; /* count the number of refs to this in dir_hash */
 	struct stat_data ce_stat_data;
 	unsigned int ce_mode;
 	unsigned int ce_flags;
@@ -213,6 +214,32 @@ struct cache_entry {
 struct pathspec;
 
 /*
+ * Increment the cache_entry reference count.  Should be called
+ * whenever a pointer to a cache_entry is retained in a data structure,
+ * thus marking it as alive.
+ */
+static inline void add_ce_ref(struct cache_entry *ce)
+{
+	assert(ce != NULL && ce->ref_count >= 0);
+	ce->ref_count++;
+}
+
+/*
+ * Decrement the cache_entry reference count.  Should be called whenever
+ * a pointer to a cache_entry is dropped.  Once the counter drops to 0
+ * the cache_entry memory will be safely freed.
+ */
+static inline void drop_ce_ref(struct cache_entry *ce)
+{
+	if (ce != NULL) {
+		assert(ce->ref_count >= 0);
+		if (--ce->ref_count < 1) {
+			free(ce);
+		}
+	}
+}
+
+/*
  * Copy the sha1 and stat state of a cache entry from one to
  * another. But we never change the name, or the hash state!
  */
diff --git a/name-hash.c b/name-hash.c
index 702cd05..f12c919 100644
--- a/name-hash.c
+++ b/name-hash.c
@@ -66,6 +66,7 @@ static struct dir_entry *hash_dir_entry(struct index_state *istate,
 		dir = xcalloc(1, sizeof(struct dir_entry));
 		hashmap_entry_init(dir, memihash(ce->name, namelen));
 		dir->namelen = namelen;
+		add_ce_ref(ce);
 		dir->ce = ce;
 		hashmap_add(&istate->dir_hash, dir);
 
@@ -92,7 +93,9 @@ static void remove_dir_entry(struct index_state *istate, struct cache_entry *ce)
 	struct dir_entry *dir = hash_dir_entry(istate, ce, ce_namelen(ce));
 	while (dir && !(--dir->nr)) {
 		struct dir_entry *parent = dir->parent;
-		hashmap_remove(&istate->dir_hash, dir, NULL);
+		struct dir_entry *removed = hashmap_remove(&istate->dir_hash, dir, NULL);
+		assert(removed == dir);
+		drop_ce_ref(dir->ce);
 		free(dir);
 		dir = parent;
 	}
@@ -105,6 +108,7 @@ static void hash_index_entry(struct index_state *istate, struct cache_entry *ce)
 	ce->ce_flags |= CE_HASHED;
 	hashmap_entry_init(ce, memihash(ce->name, ce_namelen(ce)));
 	hashmap_add(&istate->name_hash, ce);
+	add_ce_ref(ce);
 
 	if (ignore_case)
 		add_dir_entry(istate, ce);
@@ -147,6 +151,7 @@ void remove_name_hash(struct index_state *istate, struct cache_entry *ce)
 		return;
 	ce->ce_flags &= ~CE_HASHED;
 	hashmap_remove(&istate->name_hash, ce, ce);
+	drop_ce_ref(ce);
 
 	if (ignore_case)
 		remove_dir_entry(istate, ce);
diff --git a/read-cache.c b/read-cache.c
index 87204a5..8b685bb 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -52,7 +52,9 @@ static const char *alternate_index_output;
 
 static void set_index_entry(struct index_state *istate, int nr, struct cache_entry *ce)
 {
+	/* istate->cache[nr] is assumed to not hold a live value */
 	istate->cache[nr] = ce;
+	add_ce_ref(ce);
 	add_name_hash(istate, ce);
 }
 
@@ -62,7 +64,7 @@ static void replace_index_entry(struct index_state *istate, int nr, struct cache
 
 	replace_index_entry_in_base(istate, old, ce);
 	remove_name_hash(istate, old);
-	free(old);
+	drop_ce_ref(old);
 	set_index_entry(istate, nr, ce);
 	ce->ce_flags |= CE_UPDATE_IN_BASE;
 	istate->cache_changed |= CE_ENTRY_CHANGED;
@@ -75,6 +77,7 @@ void rename_index_entry_at(struct index_state *istate, int nr, const char *new_n
 
 	new = xmalloc(cache_entry_size(namelen));
 	copy_cache_entry(new, old);
+	new->ref_count = 0;
 	new->ce_flags &= ~CE_HASHED;
 	new->ce_namelen = namelen;
 	new->index = 0;
@@ -1426,6 +1429,7 @@ static struct cache_entry *cache_entry_from_ondisk(struct ondisk_cache_entry *on
 {
 	struct cache_entry *ce = xmalloc(cache_entry_size(len));
 
+	ce->ref_count = 0;
 	ce->ce_stat_data.sd_ctime.sec = get_be32(&ondisk->ctime.sec);
 	ce->ce_stat_data.sd_mtime.sec = get_be32(&ondisk->mtime.sec);
 	ce->ce_stat_data.sd_ctime.nsec = get_be32(&ondisk->ctime.nsec);
diff --git a/split-index.c b/split-index.c
index 968b780..61b5631 100644
--- a/split-index.c
+++ b/split-index.c
@@ -124,7 +124,7 @@ static void replace_entry(size_t pos, void *data)
 	src->ce_flags |= CE_UPDATE_IN_BASE;
 	src->ce_namelen = dst->ce_namelen;
 	copy_cache_entry(dst, src);
-	free(src);
+	drop_ce_ref(src);
 	si->nr_replacements++;
 }
 
@@ -227,7 +227,7 @@ void prepare_to_write_split_index(struct index_state *istate)
 			base->ce_flags = base_flags;
 			if (ret)
 				ce->ce_flags |= CE_UPDATE_IN_BASE;
-			free(base);
+			drop_ce_ref(base);
 			si->base->cache[ce->index - 1] = ce;
 		}
 		for (i = 0; i < si->base->cache_nr; i++) {
@@ -302,7 +302,7 @@ void save_or_free_index_entry(struct index_state *istate, struct cache_entry *ce
 	    ce == istate->split_index->base->cache[ce->index - 1])
 		ce->ce_flags |= CE_REMOVE;
 	else
-		free(ce);
+		drop_ce_ref(ce);
 }
 
 void replace_index_entry_in_base(struct index_state *istate,
@@ -314,8 +314,11 @@ void replace_index_entry_in_base(struct index_state *istate,
 	    istate->split_index->base &&
 	    old->index <= istate->split_index->base->cache_nr) {
 		new->index = old->index;
-		if (old != istate->split_index->base->cache[new->index - 1])
-			free(istate->split_index->base->cache[new->index - 1]);
+		if (old != istate->split_index->base->cache[new->index - 1]) {
+			struct cache_entry *ce = istate->split_index->base->cache[new->index - 1];
+			drop_ce_ref(ce);
+		}
 		istate->split_index->base->cache[new->index - 1] = new;
+		add_ce_ref(new);
 	}
 }
diff --git a/unpack-trees.c b/unpack-trees.c
index f932e80..1a0a637 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -606,8 +606,10 @@ static int unpack_nondirectories(int n, unsigned long mask,
 					o);
 		for (i = 0; i < n; i++) {
 			struct cache_entry *ce = src[i + o->merge];
-			if (ce != o->df_conflict_entry)
-				free(ce);
+			if (ce != o->df_conflict_entry) {
+				drop_ce_ref(ce);
+				src[i + o->merge] = NULL;
+			}
 		}
 		return rc;
 	}
-- 
2.4.2.644.g97b850b-twtrsrc

^ permalink raw reply related	[relevance 1%]

* Re: [PATCH v2] merge: fix cache_entry use-after-free
  2015-10-12 22:03  1% [PATCH v2] " David Turner
@ 2015-10-12 22:28  2% ` Junio C Hamano
  2015-10-13 19:22  2%   ` David Turner
  2015-10-14 21:17  2% ` Junio C Hamano
  1 sibling, 1 reply; 200+ results
From: Junio C Hamano @ 2015-10-12 22:28 UTC (permalink / raw)
  To: David Turner; +Cc: git, Keith McGuigan

David Turner <dturner@twopensource.com> writes:

> From: Keith McGuigan <kmcguigan@twitter.com>
>
> During merges, we would previously free entries that we no longer need
> in the destination index.  But those entries might also be stored in
> the dir_entry cache, and when a later call to add_to_index found them,
> they would be used after being freed.
>
> To prevent this, add a ref count for struct cache_entry.  Whenever
> a cache entry is added to a data structure, the ref count is incremented;
> when it is removed from the data structure, it is decremented.  When
> it hits zero, the cache_entry is freed.
>
> Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
> ---

I'll forge your "messenger's sign-off" here ;-)

> diff --git a/unpack-trees.c b/unpack-trees.c
> index f932e80..1a0a637 100644
> --- a/unpack-trees.c
> +++ b/unpack-trees.c
> @@ -606,8 +606,10 @@ static int unpack_nondirectories(int n, unsigned long mask,
>  					o);
>  		for (i = 0; i < n; i++) {
>  			struct cache_entry *ce = src[i + o->merge];
> -			if (ce != o->df_conflict_entry)
> -				free(ce);
> +			if (ce != o->df_conflict_entry) {
> +				drop_ce_ref(ce);
> +				src[i + o->merge] = NULL;
> +			}

This one smelled iffy.  I think it is safe because the caller does
not look at src[] other than src[0] after this function returns, and
this setting to NULL happens only when o->merge is set to 1, so I do
not think this is buggy, but at the same time I do not think setting
to NULL is necessary.

Other than that, looks nice.  Thanks.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2] merge: fix cache_entry use-after-free
  2015-10-12 22:28  2% ` Junio C Hamano
@ 2015-10-13 19:22  2%   ` David Turner
  2015-10-13 21:05  2%     ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: David Turner @ 2015-10-13 19:22 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Keith McGuigan

On Mon, 2015-10-12 at 15:28 -0700, Junio C Hamano wrote:
> David Turner <dturner@twopensource.com> writes:
> 
> > From: Keith McGuigan <kmcguigan@twitter.com>
> >
> > During merges, we would previously free entries that we no longer need
> > in the destination index.  But those entries might also be stored in
> > the dir_entry cache, and when a later call to add_to_index found them,
> > they would be used after being freed.
> >
> > To prevent this, add a ref count for struct cache_entry.  Whenever
> > a cache entry is added to a data structure, the ref count is incremented;
> > when it is removed from the data structure, it is decremented.  When
> > it hits zero, the cache_entry is freed.
> >
> > Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
> > ---
> 
> I'll forge your "messenger's sign-off" here ;-)

Thanks.

> > diff --git a/unpack-trees.c b/unpack-trees.c
> > index f932e80..1a0a637 100644
> > --- a/unpack-trees.c
> > +++ b/unpack-trees.c
> > @@ -606,8 +606,10 @@ static int unpack_nondirectories(int n, unsigned long mask,
> >  					o);
> >  		for (i = 0; i < n; i++) {
> >  			struct cache_entry *ce = src[i + o->merge];
> > -			if (ce != o->df_conflict_entry)
> > -				free(ce);
> > +			if (ce != o->df_conflict_entry) {
> > +				drop_ce_ref(ce);
> > +				src[i + o->merge] = NULL;
> > +			}
> 
> This one smelled iffy.  I think it is safe because the caller does
> not look at src[] other than src[0] after this function returns, and
> this setting to NULL happens only when o->merge is set to 1, so I do
> not think this is buggy, but at the same time I do not think setting
> to NULL is necessary.
> 
> Other than that, looks nice.  Thanks.

I like to set a pointer to NULL after I free the thing pointed to by it,
because it helps make use-after-free bugs easier to detect.  

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2] merge: fix cache_entry use-after-free
  2015-10-13 19:22  2%   ` David Turner
@ 2015-10-13 21:05  2%     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-13 21:05 UTC (permalink / raw)
  To: David Turner; +Cc: git, Keith McGuigan

David Turner <dturner@twopensource.com> writes:

>> This one smelled iffy.  I think it is safe because the caller does
>> not look at src[] other than src[0] after this function returns, and
>> this setting to NULL happens only when o->merge is set to 1, so I do
>> not think this is buggy, but at the same time I do not think setting
>> to NULL is necessary.
>> 
>> Other than that, looks nice.  Thanks.
>
> I like to set a pointer to NULL after I free the thing pointed to by it,
> because it helps make use-after-free bugs easier to detect.  

Yes, but it also helps unintended bugs to creep in if done blindly,
and that is why I vetted what happens in the codepath of the caller
of this function after src[] entries are NULLed (the caller could be
expecting to do things only to NULLed fields, for example, in which
case clearing them like this patch would have changed the behaviour
of the caller after this function returns).

Thanks.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2] merge: fix cache_entry use-after-free
  2015-10-12 22:03  1% [PATCH v2] " David Turner
  2015-10-12 22:28  2% ` Junio C Hamano
@ 2015-10-14 21:17  2% ` Junio C Hamano
  2015-10-14 22:00  2%   ` David Turner
  1 sibling, 1 reply; 200+ results
From: Junio C Hamano @ 2015-10-14 21:17 UTC (permalink / raw)
  To: David Turner; +Cc: git, Keith McGuigan

David Turner <dturner@twopensource.com> writes:

> +	unsigned int ref_count; /* count the number of refs to this in dir_hash */

Me makes a mental note of the type used...

> @@ -213,6 +214,32 @@ struct cache_entry {
>  struct pathspec;
>  
>  /*
> + * Increment the cache_entry reference count.  Should be called
> + * whenever a pointer to a cache_entry is retained in a data structure,
> + * thus marking it as alive.
> + */
> +static inline void add_ce_ref(struct cache_entry *ce)
> +{
> +	assert(ce != NULL && ce->ref_count >= 0);

... and notices that ce->ref_count will always be non-negative here


> +	ce->ref_count++;
> +}
> +
> +/*
> + * Decrement the cache_entry reference count.  Should be called whenever
> + * a pointer to a cache_entry is dropped.  Once the counter drops to 0
> + * the cache_entry memory will be safely freed.
> + */
> +static inline void drop_ce_ref(struct cache_entry *ce)
> +{
> +	if (ce != NULL) {
> +		assert(ce->ref_count >= 0);

... and here.

By not checking integer overflow/wraparound, the code is assuming
that a ce entry will never referenced more than 4 billion times on
32-bit platform.  And that is a sensible assumption as there aren't
that many pointers in the address space to make that many reference
anyway.

Perhaps the code can assume the number won't be more than 2 billion
and use a signed type instead for the reference counting?

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2] merge: fix cache_entry use-after-free
  2015-10-14 21:17  2% ` Junio C Hamano
@ 2015-10-14 22:00  2%   ` David Turner
  0 siblings, 0 replies; 200+ results
From: David Turner @ 2015-10-14 22:00 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Keith McGuigan

On Wed, 2015-10-14 at 14:17 -0700, Junio C Hamano wrote:
> David Turner <dturner@twopensource.com> writes:
> 
> > +	unsigned int ref_count; /* count the number of refs to this in dir_hash */
> 
> Me makes a mental note of the type used...
> 
> > @@ -213,6 +214,32 @@ struct cache_entry {
> >  struct pathspec;
> >  
> >  /*
> > + * Increment the cache_entry reference count.  Should be called
> > + * whenever a pointer to a cache_entry is retained in a data structure,
> > + * thus marking it as alive.
> > + */
> > +static inline void add_ce_ref(struct cache_entry *ce)
> > +{
> > +	assert(ce != NULL && ce->ref_count >= 0);
> 
> ... and notices that ce->ref_count will always be non-negative here
> 
> 
> > +	ce->ref_count++;
> > +}
> > +
> > +/*
> > + * Decrement the cache_entry reference count.  Should be called whenever
> > + * a pointer to a cache_entry is dropped.  Once the counter drops to 0
> > + * the cache_entry memory will be safely freed.
> > + */
> > +static inline void drop_ce_ref(struct cache_entry *ce)
> > +{
> > +	if (ce != NULL) {
> > +		assert(ce->ref_count >= 0);
> 
> ... and here.
> 
> By not checking integer overflow/wraparound, the code is assuming
> that a ce entry will never referenced more than 4 billion times on
> 32-bit platform.  And that is a sensible assumption as there aren't
> that many pointers in the address space to make that many reference
> anyway.
> 
> Perhaps the code can assume the number won't be more than 2 billion
> and use a signed type instead for the reference counting?

Will do.

^ permalink raw reply	[relevance 2%]

* [PATCH v3] merge: fix cache_entry use-after-free
@ 2015-10-14 22:07  1% David Turner
  2015-10-15  3:35  2% ` René Scharfe
  0 siblings, 1 reply; 200+ results
From: David Turner @ 2015-10-14 22:07 UTC (permalink / raw)
  To: git; +Cc: Keith McGuigan, David Turner

From: Keith McGuigan <kmcguigan@twitter.com>

During merges, we would previously free entries that we no longer need
in the destination index.  But those entries might also be stored in
the dir_entry cache, and when a later call to add_to_index found them,
they would be used after being freed.

To prevent this, add a ref count for struct cache_entry.  Whenever
a cache entry is added to a data structure, the ref count is incremented;
when it is removed from the data structure, it is decremented.  When
it hits zero, the cache_entry is freed.

Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
Signed-off-by: David Turner <dturner@twopensource.com>
---

Fix type of ref_count (from unsigned int to int).


 cache.h        | 27 +++++++++++++++++++++++++++
 name-hash.c    |  7 ++++++-
 read-cache.c   |  6 +++++-
 split-index.c  | 13 ++++++++-----
 unpack-trees.c |  6 ++++--
 5 files changed, 50 insertions(+), 9 deletions(-)

diff --git a/cache.h b/cache.h
index 752031e..7906026 100644
--- a/cache.h
+++ b/cache.h
@@ -149,6 +149,7 @@ struct stat_data {
 
 struct cache_entry {
 	struct hashmap_entry ent;
+	int ref_count; /* count the number of refs to this in dir_hash */
 	struct stat_data ce_stat_data;
 	unsigned int ce_mode;
 	unsigned int ce_flags;
@@ -213,6 +214,32 @@ struct cache_entry {
 struct pathspec;
 
 /*
+ * Increment the cache_entry reference count.  Should be called
+ * whenever a pointer to a cache_entry is retained in a data structure,
+ * thus marking it as alive.
+ */
+static inline void add_ce_ref(struct cache_entry *ce)
+{
+	assert(ce != NULL && ce->ref_count >= 0);
+	ce->ref_count++;
+}
+
+/*
+ * Decrement the cache_entry reference count.  Should be called whenever
+ * a pointer to a cache_entry is dropped.  Once the counter drops to 0
+ * the cache_entry memory will be safely freed.
+ */
+static inline void drop_ce_ref(struct cache_entry *ce)
+{
+	if (ce != NULL) {
+		assert(ce->ref_count >= 0);
+		if (--ce->ref_count < 1) {
+			free(ce);
+		}
+	}
+}
+
+/*
  * Copy the sha1 and stat state of a cache entry from one to
  * another. But we never change the name, or the hash state!
  */
diff --git a/name-hash.c b/name-hash.c
index 702cd05..f12c919 100644
--- a/name-hash.c
+++ b/name-hash.c
@@ -66,6 +66,7 @@ static struct dir_entry *hash_dir_entry(struct index_state *istate,
 		dir = xcalloc(1, sizeof(struct dir_entry));
 		hashmap_entry_init(dir, memihash(ce->name, namelen));
 		dir->namelen = namelen;
+		add_ce_ref(ce);
 		dir->ce = ce;
 		hashmap_add(&istate->dir_hash, dir);
 
@@ -92,7 +93,9 @@ static void remove_dir_entry(struct index_state *istate, struct cache_entry *ce)
 	struct dir_entry *dir = hash_dir_entry(istate, ce, ce_namelen(ce));
 	while (dir && !(--dir->nr)) {
 		struct dir_entry *parent = dir->parent;
-		hashmap_remove(&istate->dir_hash, dir, NULL);
+		struct dir_entry *removed = hashmap_remove(&istate->dir_hash, dir, NULL);
+		assert(removed == dir);
+		drop_ce_ref(dir->ce);
 		free(dir);
 		dir = parent;
 	}
@@ -105,6 +108,7 @@ static void hash_index_entry(struct index_state *istate, struct cache_entry *ce)
 	ce->ce_flags |= CE_HASHED;
 	hashmap_entry_init(ce, memihash(ce->name, ce_namelen(ce)));
 	hashmap_add(&istate->name_hash, ce);
+	add_ce_ref(ce);
 
 	if (ignore_case)
 		add_dir_entry(istate, ce);
@@ -147,6 +151,7 @@ void remove_name_hash(struct index_state *istate, struct cache_entry *ce)
 		return;
 	ce->ce_flags &= ~CE_HASHED;
 	hashmap_remove(&istate->name_hash, ce, ce);
+	drop_ce_ref(ce);
 
 	if (ignore_case)
 		remove_dir_entry(istate, ce);
diff --git a/read-cache.c b/read-cache.c
index 87204a5..8b685bb 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -52,7 +52,9 @@ static const char *alternate_index_output;
 
 static void set_index_entry(struct index_state *istate, int nr, struct cache_entry *ce)
 {
+	/* istate->cache[nr] is assumed to not hold a live value */
 	istate->cache[nr] = ce;
+	add_ce_ref(ce);
 	add_name_hash(istate, ce);
 }
 
@@ -62,7 +64,7 @@ static void replace_index_entry(struct index_state *istate, int nr, struct cache
 
 	replace_index_entry_in_base(istate, old, ce);
 	remove_name_hash(istate, old);
-	free(old);
+	drop_ce_ref(old);
 	set_index_entry(istate, nr, ce);
 	ce->ce_flags |= CE_UPDATE_IN_BASE;
 	istate->cache_changed |= CE_ENTRY_CHANGED;
@@ -75,6 +77,7 @@ void rename_index_entry_at(struct index_state *istate, int nr, const char *new_n
 
 	new = xmalloc(cache_entry_size(namelen));
 	copy_cache_entry(new, old);
+	new->ref_count = 0;
 	new->ce_flags &= ~CE_HASHED;
 	new->ce_namelen = namelen;
 	new->index = 0;
@@ -1426,6 +1429,7 @@ static struct cache_entry *cache_entry_from_ondisk(struct ondisk_cache_entry *on
 {
 	struct cache_entry *ce = xmalloc(cache_entry_size(len));
 
+	ce->ref_count = 0;
 	ce->ce_stat_data.sd_ctime.sec = get_be32(&ondisk->ctime.sec);
 	ce->ce_stat_data.sd_mtime.sec = get_be32(&ondisk->mtime.sec);
 	ce->ce_stat_data.sd_ctime.nsec = get_be32(&ondisk->ctime.nsec);
diff --git a/split-index.c b/split-index.c
index 968b780..61b5631 100644
--- a/split-index.c
+++ b/split-index.c
@@ -124,7 +124,7 @@ static void replace_entry(size_t pos, void *data)
 	src->ce_flags |= CE_UPDATE_IN_BASE;
 	src->ce_namelen = dst->ce_namelen;
 	copy_cache_entry(dst, src);
-	free(src);
+	drop_ce_ref(src);
 	si->nr_replacements++;
 }
 
@@ -227,7 +227,7 @@ void prepare_to_write_split_index(struct index_state *istate)
 			base->ce_flags = base_flags;
 			if (ret)
 				ce->ce_flags |= CE_UPDATE_IN_BASE;
-			free(base);
+			drop_ce_ref(base);
 			si->base->cache[ce->index - 1] = ce;
 		}
 		for (i = 0; i < si->base->cache_nr; i++) {
@@ -302,7 +302,7 @@ void save_or_free_index_entry(struct index_state *istate, struct cache_entry *ce
 	    ce == istate->split_index->base->cache[ce->index - 1])
 		ce->ce_flags |= CE_REMOVE;
 	else
-		free(ce);
+		drop_ce_ref(ce);
 }
 
 void replace_index_entry_in_base(struct index_state *istate,
@@ -314,8 +314,11 @@ void replace_index_entry_in_base(struct index_state *istate,
 	    istate->split_index->base &&
 	    old->index <= istate->split_index->base->cache_nr) {
 		new->index = old->index;
-		if (old != istate->split_index->base->cache[new->index - 1])
-			free(istate->split_index->base->cache[new->index - 1]);
+		if (old != istate->split_index->base->cache[new->index - 1]) {
+			struct cache_entry *ce = istate->split_index->base->cache[new->index - 1];
+			drop_ce_ref(ce);
+		}
 		istate->split_index->base->cache[new->index - 1] = new;
+		add_ce_ref(new);
 	}
 }
diff --git a/unpack-trees.c b/unpack-trees.c
index f932e80..1a0a637 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -606,8 +606,10 @@ static int unpack_nondirectories(int n, unsigned long mask,
 					o);
 		for (i = 0; i < n; i++) {
 			struct cache_entry *ce = src[i + o->merge];
-			if (ce != o->df_conflict_entry)
-				free(ce);
+			if (ce != o->df_conflict_entry) {
+				drop_ce_ref(ce);
+				src[i + o->merge] = NULL;
+			}
 		}
 		return rc;
 	}
-- 
2.4.2.644.g97b850b-twtrsrc

^ permalink raw reply related	[relevance 1%]

* What's cooking in git.git (Oct 2015, #03; Wed, 14)
@ 2015-10-14 22:23  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-14 22:23 UTC (permalink / raw)
  To: git

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

With somewhat reduced review bandwidth, I'd expect that the upcoming
cycle would be slower than usual.  At tinyurl.com/gitCal, I
tentatively drew a 14-week schedule for this cycle (I plan to be
offline during weeks #7-#9 myself---hopefully we'll have capable
interim maintainers to take care of the list traffic in the meantime
as in past years).

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

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

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

* jk/asciidoctor-section-heading-markup-fix (2015-09-25) 1 commit
  (merged to 'next' on 2015-10-07 at 8bbff49)
 + Documentation: fix section header mark-up


* jk/notes-dwim-doc (2015-09-22) 1 commit
  (merged to 'next' on 2015-10-07 at c4341d1)
 + notes: correct documentation of DWIMery for notes references
 (this branch is used by mh/notes-allow-reading-treeish.)

 The way how --ref/--notes to specify the notes tree reference are
 DWIMmed was not clearly documented.


* nd/ls-remote-does-not-have-u-option (2015-09-28) 1 commit
  (merged to 'next' on 2015-10-07 at 0790a76)
 + ls-remote.txt: delete unsupported option


* pt/pull-builtin (2015-10-02) 1 commit
  (merged to 'next' on 2015-10-07 at 19af20e)
 + merge: grammofix in please-commit-before-merge message


* tk/typofix-connect-unknown-proto-error (2015-09-25) 1 commit
  (merged to 'next' on 2015-10-07 at cc3430e)
 + connect: fix typo in result string of prot_name()

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

* jc/mailinfo (2015-10-08) 1 commit
 . mailinfo: ignore in-body header that we do not care about

 Some people write arbitrary garbage at the beginning of a piece of
 e-mail (or after -- >8 -- scissors -- >8 -- line) in the commit log
 message and expect them to be discarded, even though "From:" and
 "Subject:" are the only documented in-body headers that you are
 supposed to have there.  Allow some garbage (specifically, what may
 look like RFC2822 headers like "MIME-Version: ...") to be there and
 ignore them.

 I have a feeling that that this is a step in a wrong direction.
 Excluded from 'pu' for now.


* jk/filter-branch-use-of-sed-on-incomplete-line (2015-10-12) 1 commit
 - filter-branch: remove multi-line headers in msg filter

 A recent "filter-branch --msg-filter" broke skipping of the commit
 object header, which is fixed.

 Will merge to 'next'.


* rd/test-path-utils (2015-10-08) 1 commit
 - test-path-utils.c: remove incorrect assumption

 The normalize_ceiling_entry() function does not muck with the end
 of the path it accepts, and the real world callers do rely on that,
 but a test insisted that the function drops a trailing slash.

 Will merge to 'next'.


* jc/doc-gc-prune-now (2015-10-14) 1 commit
 - Documentation/gc: warn against --prune=<now>

 "git gc" is safe to run anytime only because it has the built-in
 grace period to protect young objects.  In order to run with no
 grace period, the user must make sure that the repository is
 quiescent.

 Will merge to 'next'.


* jc/am-mailinfo-direct (2015-10-14) 1 commit
 - am: make direct call to mailinfo
 (this branch uses jc/mailinfo-lib.)

 "git am" used to spawn "git mailinfo" via run_command() API once
 per each patch, but learned to make a direct call to mailinfo()
 instead.

 Needs benchmark on platforms with slow run_command().


* jc/mailinfo-lib (2015-10-14) 30 commits
 - mailinfo: remove calls to exit() and die() deep in the callchain
 - mailinfo: handle charset conversion errors in the caller
 - mailinfo: libify
 - mailinfo: move definition of MAX_HDR_PARSED to closer to its use
 - mailinfo: move cleanup_space() before its users
 - mailinfo: move check_header() after the helpers it uses
 - mailinfo: move read_one_header_line() closer to its callers
 - mailinfo: move content/content_top to struct mailinfo
 - mailinfo: keep the parsed log message in a strbuf
 - mailinfo: move [ps]_hdr_data to struct mailinfo
 - mailinfo: move cmitmsg and patchfile to struct mailinfo
 - mailinfo: handle_commit_msg() shouldn't be called after finding patchbreak
 - mailinfo: move charset to struct mailinfo
 - mailinfo: move transfer_encoding to struct mailinfo
 - mailinfo: move metainfo_charset to struct mailinfo
 - mailinfo: move use_scissors and use_inbody_headers to struct mailinfo
 - mailinfo: move add_message_id and message_id to struct mailinfo
 - mailinfo: move patch_lines to struct mailinfo
 - mailinfo: move filter/header stage to struct mailinfo
 - mailinfo: move global "FILE *fin, *fout" to struct mailinfo
 - mailinfo: move keep_subject & keep_non_patch_bracket to struct mailinfo
 - mailinfo: introduce "struct mailinfo" to hold globals
 - mailinfo: move global "line" into mailinfo() function
 - mailinfo: always pass "line" as an argument
 - mailinfo: get rid of function-local static states
 - mailinfo: move handle_boundary() lower
 - mailinfo: fold decode_header_bq() into decode_header()
 - mailinfo: explicitly close file handle to the patch output
 - mailinfo: fix for off-by-one error in boundary stack
 - mailinfo: remove a no-op call convert_to_utf8(it, "")
 (this branch is used by jc/am-mailinfo-direct.)

 The implementation of "git mailinfo" was refactored so that a
 mailinfo() function can be directly called from inside a process.


* jc/am-3-fallback-regression-fix (2015-10-09) 1 commit
 - am -3: do not let failed merge from completing the error codepath
 (this branch is used by js/am-3-merge-recursive-direct.)

 "git am -3" had a small regression where it is aborted in its error
 handling codepath when underlying merge-recursive failed in certain
 ways, as it assumed that the internal call to merge-recursive will
 never die, which is not the case (yet).


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag
 (this branch uses jc/am-3-fallback-regression-fix.)

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.


* km/cache-entry-refcnt (2015-10-12) 1 commit
 - merge: fix cache_entry use-after-free

 Sometimes we discarded a cache-entry that is still referenced from
 name-hash (used only to hold the pathname there), leading to use
 after free errors.  Reference-count cache entries to work it
 around.


* ls/p4-test-updates (2015-10-12) 2 commits
 - git-p4: skip t9819 test case on case insensitive file systems
 - git-p4: avoid "stat" command in t9815 git-p4-submit-fail

 A few test scripts around "git p4" have been improved for
 portability.

 Will merge to 'next'.


* sb/submodule-config-parse (2015-10-12) 1 commit
 - submodule-config: "goto" removal in parse_config()

 Will merge to 'next'.


* tb/t0027-crlf (2015-10-12) 1 commit
 - t0027: improve test for not-normalized files

 The test for various line-ending conversions has been enhanced.

 Will merge to 'next'.

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

* dk/gc-idx-wo-pack (2015-08-17) 3 commits
 - DONTMERGE: log message, grace-period and tests $gmane/276058
 - gc: remove stale .idx files without corresponding .pack file
 - prepare_packed_git(): refactor garbage reporting in pack directory

 Having a leftover .idx file without correspoinding .pack file in
 the repository hurts performance; "git gc" learned to prune them.

 Waiting for a reroll.


* nd/ita-cleanup (2015-09-06) 6 commits
 - grep: make it clear i-t-a entries are ignored
 - checkout(-index): do not checkout i-t-a entries
 - apply: make sure check_preimage() does not leave empty file on error
 - apply: fix adding new files on i-t-a entries
 - add and use a convenience macro ce_intent_to_add()
 - blame: remove obsolete comment

 Paths that have been told the index about with "add -N" are not yet
 in the index, but various commands behaved as if they already are.

 Some commits need better explanation.

 Waiting for a reroll.


* ld/p4-detached-head (2015-09-09) 2 commits
 - git-p4: work with a detached head
 - git-p4: add failing test for submit from detached head

 Will be rerolled.
 ($gmane/277574)


* mr/worktree-list (2015-10-08) 5 commits
 - worktree: add 'list' command
 - worktree: add details to the worktree struct
 - worktree: add a function to get worktree details
 - worktree: refactor find_linked_symref function
 - worktree: add top-level worktree.c

 Add the "list" subcommand to "git worktree".


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962

 Becoming tired of waiting for a reroll.
 with updated log message ($gmane/268061).


* wp/sha1-name-negative-match (2015-06-08) 2 commits
 - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
 - test for '!' handling in rev-parse's named commits

 Introduce "branch^{/!-<pattern>}" notation to name a commit
 reachable from branch that does not match the given pattern.

 Becoming tired of waiting for a reroll.
 ($gmane/271213).


* ak/format-patch-odir-config (2015-06-19) 1 commit
 - format-patch: introduce format.outputDirectory configuration

 Reroll exists but didn't pick it up as it seemed to be still
 collecting review comments.

 Becoming tired of waiting for a reroll.
 ($gmane/272180).


* mh/notes-allow-reading-treeish (2015-10-08) 3 commits
 - notes: allow treeish expressions as notes ref
 + Merge branch 'jk/notes-dwim-doc' into next
 + Merge branch 'jc/merge-drop-old-syntax' into next
 (this branch uses jc/merge-drop-old-syntax.)

 Some "git notes" operations, e.g. "git log --notes=<note>", should
 be able to read notes from any tree-ish that is shaped like a notes
 tree, but the notes infrastructure required that the argument must
 be a ref under refs/notes/.  Loosen it to require a valid ref only
 when the operation would update the notes (in which case we must
 have a place to store the updated notes tree, iow, a ref).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.

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

* cc/quote-comments (2015-10-07) 2 commits
  (merged to 'next' on 2015-10-09 at fc8a359)
 + quote: move comment before sq_quote_buf()
 + quote: fix broken sq_quote_buf() related comment

 A no-op code-health maintenance.

 Will merge to 'master'.


* dt/log-follow-config (2015-10-07) 1 commit
  (merged to 'next' on 2015-10-09 at 64a30d2)
 + log: Update log.follow doc and add to config.txt

 Description of the "log.follow" configuration variable in "git log"
 documentation is now also copied to "git config" documentation.

 Will merge to 'master'.


* es/worktree-add-cleanup (2015-10-07) 1 commit
  (merged to 'next' on 2015-10-09 at 6ffd721)
 + t2026: rename worktree prune test

 A no-op code-health maintenance.

 Will merge to 'master'.


* sg/pretty-more-date-mode-format (2015-10-07) 1 commit
 - pretty: add format specifiers for short and raw date formats

 Introduce "%as" and "%aR" placeholders for "log --format" to show
 the author date in the short and raw formats.

 I have a feeling that that this is a step in a wrong direction.


* tk/doc-interpret-trailers-grammo (2015-10-07) 1 commit
  (merged to 'next' on 2015-10-09 at 37888a2)
 + Documentation/interpret-trailers: Grammar fix

 Will merge to 'master'.


* dt/refs-backend-lmdb (2015-10-12) 45 commits
 - refs: tests for db backend
 - refs: add LMDB refs backend
 - introduce "extensions" form of core.repositoryformatversion
 - refs: add register_refs_backend
 - refs: allow ref backend to be set for clone
 - refs: always handle non-normal refs in files backend
 - refs: move duplicate check to common code
 - refs: break out a ref conflict check
 - refs: make files_log_ref_write functions public
 - refs: make lock generic
 - refs-be-files.c: add method to rename refs
 - refs.c: add method for initializing refs db
 - initdb: move safe_create_dir into common code
 - refs.c: add method for initial ref transaction commit
 - refs.c: add methods for reflog
 - refs.c: add ref backend init function
 - refs.c: move should_autocreate_reflog to common code
 - refs.c: move peel_object to the common code
 - refs.c: move copy_msg to the common code
 - refs.h: document make refname_is_safe and add it to header
 - refs.c: move refname_is_safe to the common code
 - refs-be-files.c: add do_for_each_per_worktree_ref
 - refs-be-files.c: add method for for_each_reftype_...
 - refs-be-files.c: add methods for the ref iterators
 - refs-be-files.c: add methods for misc ref operations
 - refs: add a backend method structure with transaction functions
 - refs: move transaction functions into common code
 - refs.c: move head_ref_namespaced to the common code
 - refs.c: move ref iterators to the common code
 - refs.c: move prettify_refname to the common code
 - refs.c: move is_branch to the common code
 - refs.c: move check_refname_format to the common code
 - refs.c: move resolve_refdup to common
 - refs.c: move read_ref, read_ref_full and ref_exists to the common code
 - refs.c: move warn_if_dangling_symref* to the common code
 - refs.c: move dwim and friend functions to the common refs code
 - refs.c: move the hidden refs functions to the common code
 - refs.c: move read_ref_at to the common refs file
 - refs.c: move delete_ref and delete_refs to the common code
 - refs.c: move update_ref to refs.c
 - refs.c: add a new refs.c file to hold all common refs code
 - refs-be-files.c: rename refs to refs-be-files
 - refs: make repack_without_refs and is_branch public
 - refs.c: create a public version of verify_refname_available
 - Merge branch 'jk/war-on-sprintf' into HEAD
 (this branch uses jk/war-on-sprintf.)

 Pluggable ref backend.

 Expecting a reroll (as two parts series).


* gr/rebase-i-drop-warn (2015-10-05) 2 commits
  (merged to 'next' on 2015-10-09 at 0626b96)
 + rebase-i: loosen over-eager check_bad_cmd check
 + rebase-i: explicitly accept tab as separator in commands

 "git rebase -i" had a minor regression recently, which stopped
 considering a line that begins with an indented '#' in its insn
 sheet not a comment, which is now fixed.

 Will merge to 'master'.


* kn/for-each-branch-remainder (2015-10-02) 9 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: adopt get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: add support for %(path) atom
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: implement %(if), %(then), and %(else) atoms
 (this branch uses kn/for-each-branch.)

 More unification among "branch -l", "tag -l" and "for-each-ref --format".

 Expecting a reroll.
 ($gmane/278926)


* jk/war-on-sprintf (2015-10-05) 70 commits
 - name-rev: use strip_suffix to avoid magic numbers
 - use strbuf_complete to conditionally append slash
 - fsck: use for_each_loose_file_in_objdir
 - Makefile: drop D_INO_IN_DIRENT build knob
 - fsck: drop inode-sorting code
 - convert strncpy to memcpy
 - notes: document length of fanout path with a constant
 - color: add color_set helper for copying raw colors
 - prefer memcpy to strcpy
 - help: clean up kfmclient munging
 - receive-pack: simplify keep_arg computation
 - avoid sprintf and strcpy with flex arrays
 - use alloc_ref rather than hand-allocating "struct ref"
 - color: add overflow checks for parsing colors
 - drop strcpy in favor of raw sha1_to_hex
 - use sha1_to_hex_r() instead of strcpy
 - daemon: use cld->env_array when re-spawning
 - stat_tracking_info: convert to argv_array
 - http-push: use an argv_array for setup_revisions
 - fetch-pack: use argv_array for index-pack / unpack-objects
 - diagnose_invalid_index_path: use strbuf to avoid strcpy/strcat
 - write_loose_object: convert to strbuf
 - remove_leading_path: use a strbuf for internal storage
 - enter_repo: convert fixed-size buffers to strbufs
 - merge-recursive: convert malloc / strcpy to strbuf
 - transport: use strbufs for status table "quickref" strings
 - apply: convert root string to strbuf
 - init: use strbufs to store paths
 - probe_utf8_pathname_composition: use internal strbuf
 - precompose_utf8: drop unused variable
 - sha1_get_pack_name: use a strbuf
 - http-walker: store url in a strbuf
 - http-push: use strbuf instead of fwrite_buffer
 - remote-ext: simplify git pkt-line generation
 - upload-archive: convert sprintf to strbuf
 - resolve_ref: use strbufs for internal buffers
 - read_remotes_file: simplify string handling
 - read_branches_file: simplify string handling
 - mailmap: replace strcpy with xstrdup
 - help: drop prepend function in favor of xstrfmt
 - ref-filter: drop sprintf and strcpy calls
 - use strip_suffix and xstrfmt to replace suffix
 - fetch: replace static buffer with xstrfmt
 - config: use xstrfmt in normalize_value
 - replace trivial malloc + sprintf / strcpy calls with xstrfmt
 - receive-pack: convert strncpy to xsnprintf
 - http-push: replace strcat with xsnprintf
 - add_packed_git: convert strcpy into xsnprintf
 - entry.c: convert strcpy to xsnprintf
 - grep: use xsnprintf to format failure message
 - compat/hstrerror: convert sprintf to snprintf
 - stop_progress_msg: convert sprintf to xsnprintf
 - find_short_object_filename: convert sprintf to xsnprintf
 - use xsnprintf for generating git object headers
 - archive-tar: use xsnprintf for trivial formatting
 - convert trivial sprintf / strcpy calls to xsnprintf
 - compat/inet_ntop: fix off-by-one in inet_ntop4
 - test-dump-cache-tree: avoid overflow of cache-tree name
 - progress: store throughput display in a strbuf
 - trace: use strbuf for quote_crnl output
 - mailsplit: make PATH_MAX buffers dynamic
 - fsck: use strbuf to generate alternate directories
 - add reentrant variants of sha1_to_hex and find_unique_abbrev
 - strbuf: make strbuf_complete_line more generic
 - add git_path_buf helper function
 - add xsnprintf helper function
 - fsck: don't fsck alternates for connectivity-only check
 - archive-tar: fix minor indentation violation
 - mailsplit: fix FILE* leak in split_maildir
 - show-branch: avoid segfault with --reflog of unborn branch
 (this branch is used by dt/refs-backend-lmdb.)

 Many allocations that is manually counted (correctly) that are
 followed by strcpy/sprintf have been replaced with a less error
 prone constructs such as xstrfmt.

 Macintosh-specific breakage was noticed and corrected in this
 reroll.

 Will wait for a week or so before merging to 'next'.


* rp/link-curl-before-ssl (2015-09-25) 3 commits
 - configure: make curl-config path configurable
 - configure.ac: detect ssl need with libcurl
 - Makefile: link libcurl before openssl and crypto

 Rerolls exist, but are still being discussed.


* sb/http-flaky-test-fix (2015-09-25) 1 commit
  (merged to 'next' on 2015-10-09 at 9dc37f3)
 + t5561: get rid of racy appending to logfile

 Will merge to 'master'.


* sb/perf-without-installed-git (2015-09-25) 1 commit
  (merged to 'next' on 2015-10-09 at 7a1ed05)
 + t/perf: make runner work even if Git is not installed

 Performance-measurement tests did not work without an installed Git.

 Will merge to 'master'.


* js/clone-dissociate (2015-10-07) 4 commits
  (merged to 'next' on 2015-10-09 at ba30393)
 + clone --dissociate: avoid locking pack files
 + sha1_file.c: add a function to release all packs
 + sha1_file: consolidate code to close a pack's file descriptor
 + t5700: demonstrate a Windows file locking issue with `git clone --dissociate`

 "git clone --dissociate" runs a big "git repack" process at the
 end, and it helps to close file descriptors that are open on the
 packs and their idx files before doing so on filesystems that
 cannot remove a file that is still open.

 Will merge to 'master'.


* js/gc-with-stale-symref (2015-10-08) 2 commits
  (merged to 'next' on 2015-10-09 at 8b89576)
 + pack-objects: do not get distracted by broken symrefs
 + gc: demonstrate failure with stale remote HEAD

 "git gc" used to barf when a symbolic ref has gone dangling
 (e.g. the branch that used to be your upstream's default when you
 cloned from it is now gone, and you did "fetch --prune").

 Will merge to 'master'.


* js/icase-wt-detection (2015-09-28) 1 commit
  (merged to 'next' on 2015-10-09 at 78ff500)
 + setup: fix "inside work tree" detection on case-insensitive filesystems

 Will merge to 'master'.


* mm/detach-at-HEAD-reflog (2015-10-02) 2 commits
  (merged to 'next' on 2015-10-09 at 624bc87)
 + status: don't say 'HEAD detached at HEAD'
 + t3203: test 'detached at' after checkout --detach

 After "git checkout --detach", "git status" reported a fairly
 useless "HEAD detached at HEAD", instead of saying at which exact
 commit.

 Will merge to 'master'.


* pt/am-builtin (2015-09-30) 1 commit
  (merged to 'next' on 2015-10-09 at 396def8)
 + am: configure gpg at startup

 When "git am" was rewritten as a built-in, it stopped paying
 attention to user.signingkey.

 Will merge to 'master'.


* sa/send-email-smtp-batch-data-limit (2015-09-30) 1 commit
  (merged to 'next' on 2015-10-09 at c021fdf)
 + git-send-email.perl: Fixed sending of many/huge changes/patches

 When "git send-email" wanted to talk over Net::SMTP::SSL,
 Net::Cmd::datasend() did not like to be fed too many bytes at the
 same time and failed to send messages.  Send the payload one line
 at a time to work around the problem.

 Will merge to 'master'.


* ls/p4-translation-failure (2015-09-22) 2 commits
  (merged to 'next' on 2015-10-09 at b462387)
 + git-p4: handle "Translation of file content failed"
 + git-p4: add test case for "Translation of file content failed" error

 Work around "git p4" failing when the P4 depot records the contents
 in UTF-16 without UTF-16 BOM.

 Will merge to 'master'.


* kn/for-each-branch (2015-09-25) 8 commits
  (merged to 'next' on 2015-10-09 at 45723ce)
 + branch: add '--points-at' option
 + branch.c: use 'ref-filter' APIs
 + branch.c: use 'ref-filter' data structures
 + branch: drop non-commit error reporting
 + branch: move 'current' check down to the presentation layer
 + branch: roll show_detached HEAD into regular ref_list
 + branch: bump get_head_description() to the top
 + branch: refactor width computation
 (this branch is used by kn/for-each-branch-remainder.)

 Update "git branch" that list existing branches, using the
 ref-filter API that is shared with "git tag" and "git
 for-each-ref".

 Will merge to 'master'.


* jc/fsck-dropped-errors (2015-09-23) 1 commit
  (merged to 'next' on 2015-10-09 at 887fcac)
 + fsck: exit with non-zero when problems are found

 There were some classes of errors that "git fsck" diagnosed to its
 standard error that did not cause it to exit with non-zero status.

 Will merge to 'master'.


* nd/gc-auto-background-fix (2015-09-21) 1 commit
  (merged to 'next' on 2015-10-09 at 1f0fc60)
 + gc: save log from daemonized gc --auto and print it next time

 When "git gc --auto" is backgrounded, its diagnosis message is
 lost.  Save it to a file in $GIT_DIR and show it next time the "gc
 --auto" is run.

 Will merge to 'master'.


* jk/graph-format-padding (2015-09-14) 1 commit
 - pretty: pass graph width to pretty formatting for use in '%>|(N)'

 Redefine the way '%>|(N)' padding and the "--graph" option
 interacts.  It has been that the available columns to display the
 log message was measured from the edge of the area the graph ended,
 but with this it becomes the beginning of the entire output.

 I have a suspicion that 50% of the users would appreciate this
 change, and the remainder see this break their expectation.  If
 that is the case, we might need to introduce a similar but
 different alignment operator so that this new behaviour is
 available to those who want to use it, without negatively affecting
 existing uses.

 Undecided.
 ($gmane/278326)


* sb/submodule-parallel-fetch (2015-10-12) 8 commits
 - submodules: allow parallel fetching, add tests and documentation
 - fetch_populated_submodules: use new parallel job processing
 - run-command: add an asynchronous parallel child processor
 - sigchain: add command to pop all common signals
 - strbuf: add strbuf_read_once to read without blocking
 - xread_nonblock: add functionality to read from fds without blocking
 - xread: poll on non blocking fds
 - submodule.c: write "Fetching submodule <foo>" to stderr

 Add a framework to spawn a group of processes in parallel, and use
 it to run "git fetch --recurse-submodules" in parallel.

 Will merge to 'next'.


* mk/submodule-gitdir-path (2015-09-14) 2 commits
  (merged to 'next' on 2015-10-09 at cf8768e)
 + path: implement common_dir handling in git_pathdup_submodule()
 + submodule refactor: use strbuf_git_path_submodule() in add_submodule_odb()

 The submodule code has been taught to work better with separate
 work trees created via "git worktree add".

 Will merge to 'master'.


* ls/p4-lfs (2015-10-03) 7 commits
  (merged to 'next' on 2015-10-14 at 4b8c365)
 + git-p4: add Git LFS backend for large file system
 + git-p4: add support for large file systems
 + git-p4: check free space during streaming
 + git-p4: add file streaming progress in verbose mode
 + git-p4: return an empty list if a list config has no values
 + git-p4: add gitConfigInt reader
 + git-p4: add optional type specifier to gitConfig reader

 Teach "git p4" to send large blobs outside the repository by
 talking to Git LFS.

 Will merge to 'master'.


* nd/clone-linked-checkout (2015-09-28) 6 commits
  (merged to 'next' on 2015-10-09 at a93973f)
 + clone: better error when --reference is a linked checkout
 + clone: allow --local from a linked checkout
 + enter_repo: allow .git files in strict mode
 + enter_repo: avoid duplicating logic, use is_git_directory() instead
 + t0002: add test for enter_repo(), non-strict mode
 + path.c: delete an extra space

 It was not possible to use a repository-lookalike created by "git
 worktree add" as a local source of "git clone".

 Will merge to 'master'.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2015-09-14) 7 commits
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
  (merged to 'next' on 2015-10-07 at 50fed71)
 + merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch is used by mh/notes-allow-reading-treeish.)

 Originally merged to 'next' on 2015-05-28

 Stop supporting "git merge <message> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will keep in 'next' during the 2.7 cycle.

--------------------------------------------------
[Discarded]

* sb/remove-get-pathspec (2015-08-03) 1 commit
 . builtin/mv: remove get_pathspec()

 ($gmane/276104)


* nd/list-files (2015-02-09) 21 commits
 . t3080: tests for git-list-files
 . list-files: -M aka diff-cached
 . list-files -F: show submodules with the new indicator '&'
 . list-files: add -F/--classify
 . list-files: show directories as well as files
 . list-files: do not show duplicate cached entries
 . list-files: sort output and remove duplicates
 . list-files: add -t back
 . list-files: add -1 short for --no-column
 . list-files: add -R/--recursive short for --max-depth=-1
 . list-files: -u does not imply showing stages
 . list-files: make alias 'ls' default to 'list-files'
 . list-files: a user friendly version of ls-files and more
 . ls-files: support --max-depth
 . ls-files: add --column
 . ls-files: add --color to highlight file names
 . ls-files: buffer full item in strbuf before printing
 . ls_colors.c: highlight submodules like directories
 . ls_colors.c: add a function to color a file name
 . ls_colors.c: parse color.ls.* from config file
 . ls_colors.c: add $LS_COLORS parsing code

 A new "git list-files" Porcelain command, "ls-files" with bells and
 whistles.

 Reroll to base on wt-status work ($gmane/265142) has seen some
 positive discussions.

 ($gmane/265534).


* mh/numparse (2015-03-19) 14 commits
 . diff_opt_parse(): use convert_i() when handling --abbrev=<num>
 . diff_opt_parse(): use convert_i() when handling "-l<num>"
 . opt_arg(): simplify pointer handling
 . opt_arg(): report errors parsing option values
 . opt_arg(): use convert_i() in implementation
 . opt_arg(): val is always non-NULL
 . builtin_diff(): detect errors when parsing --unified argument
 . handle_revision_opt(): use convert_ui() when handling "--abbrev="
 . strtoul_ui(), strtol_i(): remove functions
 . handle_revision_opt(): use convert_i() when handling "-<digit>"
 . handle_revision_opt(): use skip_prefix() in many places
 . write_subdirectory(): use convert_ui() for parsing mode
 . cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
 . numparse: new module for parsing integral numbers

 Many codepaths use unchecked use of strtol() and friends (or even
 worse, atoi()).  Introduce a set of wrappers that try to be more
 careful.

 ($gmane/268058).


* kk/log-merges-config (2015-04-21) 5 commits
 . bash-completion: add support for git-log --merges= and log.merges
 . t4202-log: add tests for --merges=
 . Documentation: add git-log --merges= option and log.merges config. var
 . log: honor log.merges= option
 . revision: add --merges={show|only|hide} option

 "git log" (but not other commands in the "log" family) learned to
 pay attention to the log.merges configuration variable that can be
 set to "show" (the normal behaviour), "only" (hide non-merge
 commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
 can be used to override the setting from the command line.

 The documentation may need to be updated once more ($gmane/267250).


* bw/portability-solaris (2015-07-20) 3 commits
 . tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
 . tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
 . tests: modify tr expressions so that xpg4/tr handles it on Solaris

 ($gmane/274296)


* jc/clone-bundle (2015-04-30) 1 commit
 . repack: optionally create a clone.bundle

 Still an early WIP.


* mg/index-read-error-messages (2015-06-01) 2 commits
 . messages: uniform error messages for index write
 . show-index: uniform error messages for index read

 The tip was RFC.
 Waiting for a reroll.


* mk/utf8-no-iconv-warn (2015-06-08) 1 commit
 . utf8.c: print warning about disabled iconv

 Warn when a reencoding is requested in a build without iconv
 support, as the end user is likely to get an unexpected result.  I
 think the same level of safety should be added to a build with
 iconv support when the specified encoding is not available, but the
 patch does not go there.

 ($gmane/277424).


* pw/remote-set-url-fetch (2014-11-26) 1 commit
 . remote: add --fetch and --both options to set-url

 Ejected.


* tr/remerge-diff (2014-11-10) 9 commits
 . t4213: avoid "|" in sed regexp
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . merge_diff_mode: fold all merge diff variants into an enum
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 . merge-recursive: -Xindex-only to leave worktree unchanged
 . merge-recursive: internal flag to avoid touching the worktree
 . merge-recursive: remove dead conditional in update_stages()

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Waiting for a reroll.
 ($gmane/256591).


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 . perf-lib: add test_perf_cleanup target
 . perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.


* jc/show-branch (2014-03-24) 5 commits
 . show-branch: use commit slab to represent bitflags of arbitrary width
 . show-branch.c: remove "all_mask"
 . show-branch.c: abstract out "flags" operation
 . show-branch.c: lift all_mask/all_revs to a global static
 . show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v3] merge: fix cache_entry use-after-free
  2015-10-14 22:07  1% [PATCH v3] " David Turner
@ 2015-10-15  3:35  2% ` René Scharfe
  2015-10-15 19:02  2%   ` David Turner
  0 siblings, 1 reply; 200+ results
From: René Scharfe @ 2015-10-15  3:35 UTC (permalink / raw)
  To: David Turner, git; +Cc: Keith McGuigan

Am 15.10.2015 um 00:07 schrieb David Turner:
> From: Keith McGuigan <kmcguigan@twitter.com>
>
> During merges, we would previously free entries that we no longer need
> in the destination index.  But those entries might also be stored in
> the dir_entry cache, and when a later call to add_to_index found them,
> they would be used after being freed.
>
> To prevent this, add a ref count for struct cache_entry.  Whenever
> a cache entry is added to a data structure, the ref count is incremented;
> when it is removed from the data structure, it is decremented.  When
> it hits zero, the cache_entry is freed.
>
> Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
> Signed-off-by: David Turner <dturner@twopensource.com>
> ---
>
> Fix type of ref_count (from unsigned int to int).
>
>
>   cache.h        | 27 +++++++++++++++++++++++++++
>   name-hash.c    |  7 ++++++-
>   read-cache.c   |  6 +++++-
>   split-index.c  | 13 ++++++++-----
>   unpack-trees.c |  6 ++++--
>   5 files changed, 50 insertions(+), 9 deletions(-)
>
> diff --git a/cache.h b/cache.h
> index 752031e..7906026 100644
> --- a/cache.h
> +++ b/cache.h
> @@ -149,6 +149,7 @@ struct stat_data {
>
>   struct cache_entry {
>   	struct hashmap_entry ent;
> +	int ref_count; /* count the number of refs to this in dir_hash */
>   	struct stat_data ce_stat_data;
>   	unsigned int ce_mode;
>   	unsigned int ce_flags;
> @@ -213,6 +214,32 @@ struct cache_entry {
>   struct pathspec;
>
>   /*
> + * Increment the cache_entry reference count.  Should be called
> + * whenever a pointer to a cache_entry is retained in a data structure,
> + * thus marking it as alive.
> + */
> +static inline void add_ce_ref(struct cache_entry *ce)
> +{
> +	assert(ce != NULL && ce->ref_count >= 0);
> +	ce->ref_count++;
> +}
> +
> +/*
> + * Decrement the cache_entry reference count.  Should be called whenever
> + * a pointer to a cache_entry is dropped.  Once the counter drops to 0
> + * the cache_entry memory will be safely freed.
> + */
> +static inline void drop_ce_ref(struct cache_entry *ce)
> +{
> +	if (ce != NULL) {
> +		assert(ce->ref_count >= 0);

Shouldn't this be "> 0" to prevent double frees?

> +		if (--ce->ref_count < 1) {
> +			free(ce);
> +		}
> +	}
> +}

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v3] merge: fix cache_entry use-after-free
  2015-10-15  3:35  2% ` René Scharfe
@ 2015-10-15 19:02  2%   ` David Turner
  2015-10-15 20:38  2%     ` René Scharfe
  2015-10-15 20:51  2%     ` Junio C Hamano
  0 siblings, 2 replies; 200+ results
From: David Turner @ 2015-10-15 19:02 UTC (permalink / raw)
  To: René Scharfe; +Cc: git, Keith McGuigan

On Thu, 2015-10-15 at 05:35 +0200, René Scharfe wrote:
> Am 15.10.2015 um 00:07 schrieb David Turner:
> > From: Keith McGuigan <kmcguigan@twitter.com>
> >
> > During merges, we would previously free entries that we no longer need
> > in the destination index.  But those entries might also be stored in
> > the dir_entry cache, and when a later call to add_to_index found them,
> > they would be used after being freed.
> >
> > To prevent this, add a ref count for struct cache_entry.  Whenever
> > a cache entry is added to a data structure, the ref count is incremented;
> > when it is removed from the data structure, it is decremented.  When
> > it hits zero, the cache_entry is freed.
> >
> > Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
> > Signed-off-by: David Turner <dturner@twopensource.com>
> > ---
> >
> > Fix type of ref_count (from unsigned int to int).
> >
> >
> >   cache.h        | 27 +++++++++++++++++++++++++++
> >   name-hash.c    |  7 ++++++-
> >   read-cache.c   |  6 +++++-
> >   split-index.c  | 13 ++++++++-----
> >   unpack-trees.c |  6 ++++--
> >   5 files changed, 50 insertions(+), 9 deletions(-)
> >
> > diff --git a/cache.h b/cache.h
> > index 752031e..7906026 100644
> > --- a/cache.h
> > +++ b/cache.h
> > @@ -149,6 +149,7 @@ struct stat_data {
> >
> >   struct cache_entry {
> >   	struct hashmap_entry ent;
> > +	int ref_count; /* count the number of refs to this in dir_hash */
> >   	struct stat_data ce_stat_data;
> >   	unsigned int ce_mode;
> >   	unsigned int ce_flags;
> > @@ -213,6 +214,32 @@ struct cache_entry {
> >   struct pathspec;
> >
> >   /*
> > + * Increment the cache_entry reference count.  Should be called
> > + * whenever a pointer to a cache_entry is retained in a data structure,
> > + * thus marking it as alive.
> > + */
> > +static inline void add_ce_ref(struct cache_entry *ce)
> > +{
> > +	assert(ce != NULL && ce->ref_count >= 0);
> > +	ce->ref_count++;
> > +}
> > +
> > +/*
> > + * Decrement the cache_entry reference count.  Should be called whenever
> > + * a pointer to a cache_entry is dropped.  Once the counter drops to 0
> > + * the cache_entry memory will be safely freed.
> > + */
> > +static inline void drop_ce_ref(struct cache_entry *ce)
> > +{
> > +	if (ce != NULL) {
> > +		assert(ce->ref_count >= 0);
> 
> Shouldn't this be "> 0" to prevent double frees?

No.  If the ref_count is 1, then there is still some reference to the
ce.  If it is 0, there is no reference to it, and the next check (< 1)
will succeed and the ce will get freed.  

> > +		if (--ce->ref_count < 1) {
> > +			free(ce);
> > +		}
> > +	}
> > +}
> 

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v3] merge: fix cache_entry use-after-free
  2015-10-15 19:02  2%   ` David Turner
@ 2015-10-15 20:38  2%     ` René Scharfe
  2015-10-15 20:51  2%     ` Junio C Hamano
  1 sibling, 0 replies; 200+ results
From: René Scharfe @ 2015-10-15 20:38 UTC (permalink / raw)
  To: David Turner; +Cc: git, Keith McGuigan

Am 15.10.2015 um 21:02 schrieb David Turner:
> On Thu, 2015-10-15 at 05:35 +0200, René Scharfe wrote:
>> Am 15.10.2015 um 00:07 schrieb David Turner:
>>> From: Keith McGuigan <kmcguigan@twitter.com>
>>>
>>> During merges, we would previously free entries that we no longer need
>>> in the destination index.  But those entries might also be stored in
>>> the dir_entry cache, and when a later call to add_to_index found them,
>>> they would be used after being freed.
>>>
>>> To prevent this, add a ref count for struct cache_entry.  Whenever
>>> a cache entry is added to a data structure, the ref count is incremented;
>>> when it is removed from the data structure, it is decremented.  When
>>> it hits zero, the cache_entry is freed.
>>>
>>> Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
>>> Signed-off-by: David Turner <dturner@twopensource.com>
>>> ---
>>>
>>> Fix type of ref_count (from unsigned int to int).
>>>
>>>
>>>    cache.h        | 27 +++++++++++++++++++++++++++
>>>    name-hash.c    |  7 ++++++-
>>>    read-cache.c   |  6 +++++-
>>>    split-index.c  | 13 ++++++++-----
>>>    unpack-trees.c |  6 ++++--
>>>    5 files changed, 50 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/cache.h b/cache.h
>>> index 752031e..7906026 100644
>>> --- a/cache.h
>>> +++ b/cache.h
>>> @@ -149,6 +149,7 @@ struct stat_data {
>>>
>>>    struct cache_entry {
>>>    	struct hashmap_entry ent;
>>> +	int ref_count; /* count the number of refs to this in dir_hash */
>>>    	struct stat_data ce_stat_data;
>>>    	unsigned int ce_mode;
>>>    	unsigned int ce_flags;
>>> @@ -213,6 +214,32 @@ struct cache_entry {
>>>    struct pathspec;
>>>
>>>    /*
>>> + * Increment the cache_entry reference count.  Should be called
>>> + * whenever a pointer to a cache_entry is retained in a data structure,
>>> + * thus marking it as alive.
>>> + */
>>> +static inline void add_ce_ref(struct cache_entry *ce)
>>> +{
>>> +	assert(ce != NULL && ce->ref_count >= 0);
>>> +	ce->ref_count++;
>>> +}
>>> +
>>> +/*
>>> + * Decrement the cache_entry reference count.  Should be called whenever
>>> + * a pointer to a cache_entry is dropped.  Once the counter drops to 0
>>> + * the cache_entry memory will be safely freed.
>>> + */
>>> +static inline void drop_ce_ref(struct cache_entry *ce)
>>> +{
>>> +	if (ce != NULL) {
>>> +		assert(ce->ref_count >= 0);
>>
>> Shouldn't this be "> 0" to prevent double frees?
>
> No.  If the ref_count is 1, then there is still some reference to the
> ce.  If it is 0, there is no reference to it, and the next check (< 1)
> will succeed and the ce will get freed.
>
>>> +		if (--ce->ref_count < 1) {
>>> +			free(ce);
>>> +		}
>>> +	}
>>> +}

OK, let me think out loud, step by step:

Given ref_count == 1 then the assert passes, ref_count gets decremented 
to 0, which is less than 1, so ce is freed.

Given ref_count == 0 then the assert passes, refcount gets decremented 
to -1, which is less than 1, so ce is freed again.

Where did I go wrong?

René

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v3] merge: fix cache_entry use-after-free
  2015-10-15 19:02  2%   ` David Turner
  2015-10-15 20:38  2%     ` René Scharfe
@ 2015-10-15 20:51  2%     ` Junio C Hamano
  2015-10-16  7:05  2%       ` David Turner
  1 sibling, 1 reply; 200+ results
From: Junio C Hamano @ 2015-10-15 20:51 UTC (permalink / raw)
  To: David Turner; +Cc: René Scharfe, git, Keith McGuigan

David Turner <dturner@twopensource.com> writes:

>> > +static inline void drop_ce_ref(struct cache_entry *ce)
>> > +{
>> > +	if (ce != NULL) {
>> > +		assert(ce->ref_count >= 0);
>> 
>> Shouldn't this be "> 0" to prevent double frees?
>
> No.  If the ref_count is 1, then there is still some reference to the
> ce.  If it is 0, there is no reference to it, and the next check (< 1)
> will succeed and the ce will get freed.  
>
>> > +		if (--ce->ref_count < 1) {
>> > +			free(ce);
>> > +		}
>> > +	}
>> > +}

Hmm, but it still feels fuzzy, no?  I cannot tell from the above
exchange if a ce with ref_count==0 upon entry to this function is
supposed to have somebody pointing at it, somebody just assigned
NULL (or another pointer) to the last pointer that was pointing at
it, or what else.  If the expected calling sequence were:

	drop_ce_ref(thing->ce);
	thing->ce = NULL;

and the original thing->ce were the last reference to the cache
entry about to be freed, its refcnt is better be 1 not 0.  And when
this function decrements refcnt down to 0, the cache entry is freed.

Admittedly, if the original refcnt were 0, with signed refcnt, it
will decrement to -1 and it will be freed, too, but I do not think
that is what was intended---refcnt is initialized to 0 upon creating
an unreferenced cache entry, and set_index_entry() and friends that
store a pointer to anything calls add_ce_ref(), so I read the code
as intending to make "0 means no pointer points at it".

As far as I can tell, the only effect of this assert() that uses >=0
not >0 is to avoid triggering it on this calling sequence:

    new_ce = new_cache_entry();
    drop_ce_ref(new_ce);

that is, you create because you _might_ use it, and then later
decide not to use it (and the free() part wouldn't have worked
correctly with unsigned refcnt ;-).

By the way, the log message says "During merges, we would previously
free entries that we no longer need in the destination index.  But
those entries might also be stored in the dir_entry cache," as if
this issue were present and waiting to trigger for all merges for
all people.  Given that Linus does hundreds of merges in a day
during the merge window (and I do several dozens a day), I am quite
surprised that nobody noticed this issue.  If there is a more
specific condition that allows this bug to trigger (e.g. "dir-entry
cache is used only under such and such conditions") that the log
message does not talk about to explain why this bug was not seen
widely, it would be a good thing to add.  It is very puzzling
otherwise.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v3] merge: fix cache_entry use-after-free
  2015-10-15 20:51  2%     ` Junio C Hamano
@ 2015-10-16  7:05  2%       ` David Turner
  2015-10-16 16:04  2%         ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: David Turner @ 2015-10-16  7:05 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: René Scharfe, git, Keith McGuigan

On Thu, 2015-10-15 at 13:51 -0700, Junio C Hamano wrote:
> David Turner <dturner@twopensource.com> writes:
> 
> >> > +static inline void drop_ce_ref(struct cache_entry *ce)
> >> > +{
> >> > +	if (ce != NULL) {
> >> > +		assert(ce->ref_count >= 0);
> >> 
> >> Shouldn't this be "> 0" to prevent double frees?
> >
> > No.  If the ref_count is 1, then there is still some reference to the
> > ce.  If it is 0, there is no reference to it, and the next check (< 1)
> > will succeed and the ce will get freed.  
> >
> >> > +		if (--ce->ref_count < 1) {
> >> > +			free(ce);
> >> > +		}
> >> > +	}
> >> > +}
> 
> Hmm, but it still feels fuzzy, no?  I cannot tell from the above
> exchange if a ce with ref_count==0 upon entry to this function is
> supposed to have somebody pointing at it, somebody just assigned
> NULL (or another pointer) to the last pointer that was pointing at
> it, or what else.  If the expected calling sequence were:
> 
> 	drop_ce_ref(thing->ce);
> 	thing->ce = NULL;
> 
> and the original thing->ce were the last reference to the cache
> entry about to be freed, its refcnt is better be 1 not 0.  And when
> this function decrements refcnt down to 0, the cache entry is freed.
> 
> Admittedly, if the original refcnt were 0, with signed refcnt, it
> will decrement to -1 and it will be freed, too, but I do not think
> that is what was intended---refcnt is initialized to 0 upon creating
> an unreferenced cache entry, and set_index_entry() and friends that
> store a pointer to anything calls add_ce_ref(), so I read the code
> as intending to make "0 means no pointer points at it".
> 
> As far as I can tell, the only effect of this assert() that uses >=0
> not >0 is to avoid triggering it on this calling sequence:
> 
>     new_ce = new_cache_entry();
>     drop_ce_ref(new_ce);
> 
> that is, you create because you _might_ use it, and then later
> decide not to use it (and the free() part wouldn't have worked
> correctly with unsigned refcnt ;-).

You and René are right: there is an off-by-one here.  Will fix and
re-roll.  Thanks.

> By the way, the log message says "During merges, we would previously
> free entries that we no longer need in the destination index.  But
> those entries might also be stored in the dir_entry cache," as if
> this issue were present and waiting to trigger for all merges for
> all people.  Given that Linus does hundreds of merges in a day
> during the merge window (and I do several dozens a day), I am quite
> surprised that nobody noticed this issue.  If there is a more
> specific condition that allows this bug to trigger (e.g. "dir-entry
> cache is used only under such and such conditions") that the log
> message does not talk about to explain why this bug was not seen
> widely, it would be a good thing to add.  It is very puzzling
> otherwise.

We also do dozens or hundreds of merges per day and only saw this quite
rarely.  Interestingly, we could only trigger it with an alternate
hashing function for git's hashmap implementation, and only once a
certain bug in that implementation was *fixed*.  But that was just a
trigger; it was certainly not the cause.  The bug would, in general,
have caused more hash collisions due to worse mixing, but I believe it
is possible that some particular collision would have been present in
the non-bugged version of the code but not in the bugged version.

It may have also had something to do with a case-insensitive filesystem;
we never saw anyone reproduce it on anything but OS X, and even there it
was quite difficult to reproduce.

In short, I don't think we know why the bug was not seen widely.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v3] merge: fix cache_entry use-after-free
  2015-10-16  7:05  2%       ` David Turner
@ 2015-10-16 16:04  2%         ` Junio C Hamano
  2015-10-19 22:27  2%           ` David Turner
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2015-10-16 16:04 UTC (permalink / raw)
  To: David Turner; +Cc: René Scharfe, git, Keith McGuigan

David Turner <dturner@twopensource.com> writes:

> We also do dozens or hundreds of merges per day and only saw this quite
> rarely.  Interestingly, we could only trigger it with an alternate
> hashing function for git's hashmap implementation, and only once a
> certain bug in that implementation was *fixed*.  But that was just a
> trigger; it was certainly not the cause.  The bug would, in general,
> have caused more hash collisions due to worse mixing, but I believe it
> is possible that some particular collision would have been present in
> the non-bugged version of the code but not in the bugged version.
>
> It may have also had something to do with a case-insensitive filesystem;
> we never saw anyone reproduce it on anything but OS X, and even there it
> was quite difficult to reproduce.
>
> In short, I don't think we know why the bug was not seen widely.

It has been a long time since I looked at name-hash.c and I am fuzzy
on what the four functions (cache|index)_(file|dir)_exists are meant
for, but I have this feeling that the original premise of the patch,
"we may free a ce because we no longer use it in the index, but it
may still need to keep a reference to it in name-hash" may be wrong
in the first place.  The proposed "fix" conceptually feels wrong.

The whole point of the name-hash is so that we can detect collisions
in two names, one of which wants to have a file in one place while
the other wants to have a directory, at the same path in the index.
The pathnames and cache entries registered in the name-hash have to
be the ones that are relevant to the index in quesition.  If a new
ce will be added to the index, the name-hash will have to know about
its path (and that is what CE_HASHED bit is about).  On the other
hand, if you are going to remove an existing ce from the index, its
sub-paths should no longer prevent other cache entries to be there.

E.g. if you have "a/b", it must prevent "A" from entering the index
and the name-hash helps you to do so; when you remove "a/b", then
name-hash must now allow "A" to enter the index.  So "a/b" must be
removed from the name-hash by calling remove_name_hash() and normal
codepaths indeed do so.

I do not doubt the existence of "use-after-free bug" you observed,
but I am not convinced that refcounting is "fixing" the problem; it
smells like papering over a different bug that is the root cause of
the use-after-free.

For example, if we forget to "unhash" a ce from name-hash when we
remove a ce from the index (or after we "hashed" it, expecting to
add it to the index, but in the end decided not to add to the index,
perhaps), we would see a now-freed ce still in the name-hash.
Checking a path against the name-hash in such a state would have to
use the ce->name from that stale ce, which is a use-after-free bug.

In such a situation, isn't the real cause of the bug the fact that
the stale ce that is no longer relevant to the true index contents
still in name-hash?  The refcounting does not fix the fact that a
ce->name of a stale ce that is no longer relevant being used for D/F
collision checking.

I am not saying that I found such a codepath that forgets to unhash,
but from the overall design and purpose of the name-hash subsystem,
anything that deliberately _allows_ a stale ce that does not exist
in the index in there smells like a workaround going in a wrong
direction.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v3] merge: fix cache_entry use-after-free
  2015-10-16 16:04  2%         ` Junio C Hamano
@ 2015-10-19 22:27  2%           ` David Turner
  2015-10-20  2:13  1%             ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: David Turner @ 2015-10-19 22:27 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: René Scharfe, git, Keith McGuigan

On Fri, 2015-10-16 at 09:04 -0700, Junio C Hamano wrote:
> David Turner <dturner@twopensource.com> writes:
> 
> > We also do dozens or hundreds of merges per day and only saw this quite
> > rarely.  Interestingly, we could only trigger it with an alternate
> > hashing function for git's hashmap implementation, and only once a
> > certain bug in that implementation was *fixed*.  But that was just a
> > trigger; it was certainly not the cause.  The bug would, in general,
> > have caused more hash collisions due to worse mixing, but I believe it
> > is possible that some particular collision would have been present in
> > the non-bugged version of the code but not in the bugged version.
> >
> > It may have also had something to do with a case-insensitive filesystem;
> > we never saw anyone reproduce it on anything but OS X, and even there it
> > was quite difficult to reproduce.
> >
> > In short, I don't think we know why the bug was not seen widely.
> 
> It has been a long time since I looked at name-hash.c and I am fuzzy
> on what the four functions (cache|index)_(file|dir)_exists are meant
> for, but I have this feeling that the original premise of the patch,
> "we may free a ce because we no longer use it in the index, but it
> may still need to keep a reference to it in name-hash" may be wrong
> in the first place.  The proposed "fix" conceptually feels wrong.
>
> The whole point of the name-hash is so that we can detect collisions
> in two names, one of which wants to have a file in one place while
> the other wants to have a directory, at the same path in the index.
> The pathnames and cache entries registered in the name-hash have to
> be the ones that are relevant to the index in quesition.  If a new
> ce will be added to the index, the name-hash will have to know about
> its path (and that is what CE_HASHED bit is about).  On the other
> hand, if you are going to remove an existing ce from the index, its
> sub-paths should no longer prevent other cache entries to be there.
> 
> E.g. if you have "a/b", it must prevent "A" from entering the index
> and the name-hash helps you to do so; when you remove "a/b", then
> name-hash must now allow "A" to enter the index.  So "a/b" must be
> removed from the name-hash by calling remove_name_hash() and normal
> codepaths indeed do so.
>
> I do not doubt the existence of "use-after-free bug" you observed,
> but I am not convinced that refcounting is "fixing" the problem; it
> smells like papering over a different bug that is the root cause of
> the use-after-free.
> 
> For example, if we forget to "unhash" a ce from name-hash when we
> remove a ce from the index (or after we "hashed" it, expecting to
> add it to the index, but in the end decided not to add to the index,
> perhaps), we would see a now-freed ce still in the name-hash.
> Checking a path against the name-hash in such a state would have to
> use the ce->name from that stale ce, which is a use-after-free bug.
> 
> In such a situation, isn't the real cause of the bug the fact that
> the stale ce that is no longer relevant to the true index contents
> still in name-hash?  The refcounting does not fix the fact that a
> ce->name of a stale ce that is no longer relevant being used for D/F
> collision checking.
> 
> I am not saying that I found such a codepath that forgets to unhash,
> but from the overall design and purpose of the name-hash subsystem,
> anything that deliberately _allows_ a stale ce that does not exist
> in the index in there smells like a workaround going in a wrong
> direction.

I've spent some time looking into this, but I don't quite have a repro.
I do have some comments which might be interesting.

The problem is not the name_hash, but with the dir_hash.  The dir_hash
is only even populated on case-insensitive filesystems (which is why you
and Linus don't see this bug).  The dir_hash is not designed to catch
d/f conflicts, but rather case conflicts (one side of a merge has
foo/bar; the other has FOO/bar).  For each directory, it maintains a
pointer to a cache_entry.  Then add_to_index uses that cache_entry to 
rewrite incoming entries' parent directories to the expected case.
Weirdly, that part of add_to_index is, so far as I can tell, never
called during a merge.  So where's are we using the freed value?
Probably in dir_entry_cmp, while adding another entry to the hashmap;
that's where our crash seems to have happened.  And our failure depended
on the details of the hash function as well; if a certain collision did
not happen, we would not see it.

There is, I think, another way to handle this: we could *copy* the path
into the struct dir_entry instead of pointing to a cache_entry.  But
this seems like a bunch of extra work; the refcounting is simpler.  

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v3] merge: fix cache_entry use-after-free
  2015-10-19 22:27  2%           ` David Turner
@ 2015-10-20  2:13  1%             ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-20  2:13 UTC (permalink / raw)
  To: David Turner; +Cc: René Scharfe, git, Keith McGuigan

David Turner <dturner@twopensource.com> writes:

> The problem is not the name_hash, but with the dir_hash.  The dir_hash
> is only even populated on case-insensitive filesystems (which is why you
> and Linus don't see this bug).  The dir_hash is not designed to catch
> d/f conflicts, but rather case conflicts (one side of a merge has
> foo/bar; the other has FOO/bar).  For each directory, it maintains a
> pointer to a cache_entry.  Then add_to_index uses that cache_entry to 
> rewrite incoming entries' parent directories to the expected case.
> Weirdly, that part of add_to_index is, so far as I can tell, never
> called during a merge.  So where's are we using the freed value?
> Probably in dir_entry_cmp, while adding another entry to the hashmap;
> that's where our crash seems to have happened.  And our failure depended
> on the details of the hash function as well; if a certain collision did
> not happen, we would not see it.
>
> There is, I think, another way to handle this: we could *copy* the path
> into the struct dir_entry instead of pointing to a cache_entry.  But
> this seems like a bunch of extra work; the refcounting is simpler.  

This codepath is a mess.  Whoever wrote hash_dir_entry() seems to
have already known that the code is buggy by leaving this comment
there:

 * Note that the cache_entry stored with the dir_entry merely
 * supplies the name of the directory (up to dir_entry.namelen). We
 * track the number of 'active' files in a directory in dir_entry.nr,
 * so we can tell if the directory is still relevant, e.g. for git
 * status. However, if cache_entries are removed, we cannot pinpoint
 * an exact cache_entry that's still active. It is very possible that
 * multiple dir_entries point to the same cache_entry.

If you add "a/frotz" to the index, the code will somehow create a
dir_entry to represent that the canonical case for directory "a/" is
such, so that when you later try to add "A/nitfol", the code can
grab the canonical path "a/" from dir_entry hash and turn it into
"a/nitfol".  That is what happens in add_to_index in read-cache.c

But what happens if, after adding "a/frotz" and "a/nitfol" to the
index like that, you remove "a/frotz"?  I do not see any code that
notices the poitner to "a/frotz" will become stale and replace it
with a pointer to "a/nitfol" that is still in the system.  The next
time you try to add "a/xyzzy", find_dir_entry() will try to see if
there is an existing entry that matches "a/xyzzy"'s directory, and
one of the dir_entries has a stale pointer to ce for "a/frotz" that
is already gone.

I think the root cause of the bug is the external interface to the
index_dir_exists() function.  For the above processing, there is no
reason for dir_entry() to hold a pointer to ce for "a/frotz" or
"a/nitfol".  All it needs to have is an embedded string in the
structure itself, i.e.

        struct dir_entry {
                struct hashmap_entry ent;
                struct dir_entry *parent;
                int nr;
                unsigned int namelen;
                char name[FLEX_ARRAY];
        };

The caller of index_dir_exists() in add_to_index() can be adjusted
to work with a new function in name-hash.c that does this part:

	const char *startPtr = ce->name;
	const char *ptr = startPtr;
	while (*ptr) {
		while (*ptr && *ptr != '/')
			++ptr;
		if (*ptr == '/') {
			struct cache_entry *foundce;
			++ptr;
			foundce = index_dir_exists(istate, ce->name, ptr - ce->name - 1);
			if (foundce) {
				memcpy((void *)startPtr, foundce->name + (startPtr - ce->name), ptr - startPtr);
				startPtr = ptr;
			}
		}
	}

Perhaps name it "adjust_dirname_case(istate, ce->name)" and have it
do the whole while loop above, all inside name-hash.c.  That would
make this caller a lot easier to read and understand what is going
on.

The other one, directory_exists_in_index_icase() in dir.c, expects
that a ce is returned, but the way it uses the returned value does
not really require the function to return a ce.  It does look at the
ce->ce_mode but that is only because the way index_dir_exists()
tells its caller if there is a directory (hence some files inside
it) or if there is a submodule (hence there is nothing below it) by
making a fallback call internally to index_file_exists() and returns
the ce for gitlink only when (1) there is no directory in dir_hash
and (2) file_hash as a submodule in that path.

A more cleaner helper function to give what this caller really wants
to know that name-hash.c can provide would be a function that takes
pathname and len and returns an enum: "there is nothing there",
"there is a directory", or "there is a submodule".  For completeness
of the API, even though this sole caller does not need it, we could
throw in "there is a regular file" there, too, if we wanted to.

If I were to clean this up, I would probably use the above updated
definition of struct dir_entry and:

 * drop the fallback "return gitlink if there is one" from
   index_dir_exists(), and make index_dir_exists() return 0 (false)
   or 1 (true).

 * have directory_exists_in_index() first call the updated
   index_dir_exists() via the cache_dir_exists() convenience macro.
   If it returned true, it should return index_direcgtory.  If it
   returned false, make a call to cache_file_exists() to see if
   there is a gitlink and rturn index_gitdir when that is the case.
   When all of the above fails, return index_nonexistent.

That way, we do not have to worry about "this ce no longer exists in
the main index but we need to keep it around", saving 8-bytes from
each ce and refcounting mess in the code.

^ permalink raw reply	[relevance 1%]

* What's cooking in git.git (Oct 2015, #04; Tue, 20)
@ 2015-10-20 22:10  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-20 22:10 UTC (permalink / raw)
  To: git

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

With somewhat reduced review bandwidth, I'd expect that the upcoming
cycle would be slower than usual.  At tinyurl.com/gitCal, I
tentatively drew a 14-week schedule for this cycle (I plan to be
offline during weeks #7-#9 myself---hopefully we'll have capable
interim maintainers to take care of the list traffic in the meantime
as in past years).

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

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

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

* cc/quote-comments (2015-10-07) 2 commits
  (merged to 'next' on 2015-10-09 at fc8a359)
 + quote: move comment before sq_quote_buf()
 + quote: fix broken sq_quote_buf() related comment

 A no-op code-health maintenance.


* dt/log-follow-config (2015-10-07) 1 commit
  (merged to 'next' on 2015-10-09 at 64a30d2)
 + log: Update log.follow doc and add to config.txt

 Description of the "log.follow" configuration variable in "git log"
 documentation is now also copied to "git config" documentation.


* es/worktree-add-cleanup (2015-10-07) 1 commit
  (merged to 'next' on 2015-10-09 at 6ffd721)
 + t2026: rename worktree prune test

 A no-op code-health maintenance.


* gr/rebase-i-drop-warn (2015-10-05) 2 commits
  (merged to 'next' on 2015-10-09 at 0626b96)
 + rebase-i: loosen over-eager check_bad_cmd check
 + rebase-i: explicitly accept tab as separator in commands

 "git rebase -i" had a minor regression recently, which stopped
 considering a line that begins with an indented '#' in its insn
 sheet not a comment, which is now fixed.


* jc/doc-gc-prune-now (2015-10-14) 1 commit
  (merged to 'next' on 2015-10-15 at 5c07566)
 + Documentation/gc: warn against --prune=<now>

 "git gc" is safe to run anytime only because it has the built-in
 grace period to protect young objects.  In order to run with no
 grace period, the user must make sure that the repository is
 quiescent.


* jc/fsck-dropped-errors (2015-09-23) 1 commit
  (merged to 'next' on 2015-10-09 at 887fcac)
 + fsck: exit with non-zero when problems are found

 There were some classes of errors that "git fsck" diagnosed to its
 standard error that did not cause it to exit with non-zero status.


* jk/filter-branch-use-of-sed-on-incomplete-line (2015-10-12) 1 commit
  (merged to 'next' on 2015-10-15 at 9e7c032)
 + filter-branch: remove multi-line headers in msg filter

 A recent "filter-branch --msg-filter" broke skipping of the commit
 object header, which is fixed.


* js/clone-dissociate (2015-10-07) 4 commits
  (merged to 'next' on 2015-10-09 at ba30393)
 + clone --dissociate: avoid locking pack files
 + sha1_file.c: add a function to release all packs
 + sha1_file: consolidate code to close a pack's file descriptor
 + t5700: demonstrate a Windows file locking issue with `git clone --dissociate`

 "git clone --dissociate" runs a big "git repack" process at the
 end, and it helps to close file descriptors that are open on the
 packs and their idx files before doing so on filesystems that
 cannot remove a file that is still open.


* js/gc-with-stale-symref (2015-10-08) 2 commits
  (merged to 'next' on 2015-10-09 at 8b89576)
 + pack-objects: do not get distracted by broken symrefs
 + gc: demonstrate failure with stale remote HEAD

 "git gc" used to barf when a symbolic ref has gone dangling
 (e.g. the branch that used to be your upstream's default when you
 cloned from it is now gone, and you did "fetch --prune").


* js/icase-wt-detection (2015-09-28) 1 commit
  (merged to 'next' on 2015-10-09 at 78ff500)
 + setup: fix "inside work tree" detection on case-insensitive filesystems

 On a case insensitive filesystems, setting GIT_WORK_TREE variable
 using a random cases that does not agree with what the filesystem
 thinks confused Git that it wasn't inside the working tree.


* kn/for-each-branch (2015-09-25) 8 commits
  (merged to 'next' on 2015-10-09 at 45723ce)
 + branch: add '--points-at' option
 + branch.c: use 'ref-filter' APIs
 + branch.c: use 'ref-filter' data structures
 + branch: drop non-commit error reporting
 + branch: move 'current' check down to the presentation layer
 + branch: roll show_detached HEAD into regular ref_list
 + branch: bump get_head_description() to the top
 + branch: refactor width computation
 (this branch is used by kn/for-each-branch-remainder.)

 Update "git branch" that list existing branches, using the
 ref-filter API that is shared with "git tag" and "git
 for-each-ref".


* ls/p4-lfs (2015-10-03) 7 commits
  (merged to 'next' on 2015-10-14 at 4b8c365)
 + git-p4: add Git LFS backend for large file system
 + git-p4: add support for large file systems
 + git-p4: check free space during streaming
 + git-p4: add file streaming progress in verbose mode
 + git-p4: return an empty list if a list config has no values
 + git-p4: add gitConfigInt reader
 + git-p4: add optional type specifier to gitConfig reader

 Teach "git p4" to send large blobs outside the repository by
 talking to Git LFS.


* ls/p4-translation-failure (2015-09-22) 2 commits
  (merged to 'next' on 2015-10-09 at b462387)
 + git-p4: handle "Translation of file content failed"
 + git-p4: add test case for "Translation of file content failed" error

 Work around "git p4" failing when the P4 depot records the contents
 in UTF-16 without UTF-16 BOM.


* mk/submodule-gitdir-path (2015-09-14) 2 commits
  (merged to 'next' on 2015-10-09 at cf8768e)
 + path: implement common_dir handling in git_pathdup_submodule()
 + submodule refactor: use strbuf_git_path_submodule() in add_submodule_odb()

 The submodule code has been taught to work better with separate
 work trees created via "git worktree add".


* mm/detach-at-HEAD-reflog (2015-10-02) 2 commits
  (merged to 'next' on 2015-10-09 at 624bc87)
 + status: don't say 'HEAD detached at HEAD'
 + t3203: test 'detached at' after checkout --detach

 After "git checkout --detach", "git status" reported a fairly
 useless "HEAD detached at HEAD", instead of saying at which exact
 commit.


* nd/clone-linked-checkout (2015-09-28) 6 commits
  (merged to 'next' on 2015-10-09 at a93973f)
 + clone: better error when --reference is a linked checkout
 + clone: allow --local from a linked checkout
 + enter_repo: allow .git files in strict mode
 + enter_repo: avoid duplicating logic, use is_git_directory() instead
 + t0002: add test for enter_repo(), non-strict mode
 + path.c: delete an extra space

 It was not possible to use a repository-lookalike created by "git
 worktree add" as a local source of "git clone".


* nd/gc-auto-background-fix (2015-09-21) 1 commit
  (merged to 'next' on 2015-10-09 at 1f0fc60)
 + gc: save log from daemonized gc --auto and print it next time

 When "git gc --auto" is backgrounded, its diagnosis message is
 lost.  Save it to a file in $GIT_DIR and show it next time the "gc
 --auto" is run.


* pt/am-builtin (2015-09-30) 1 commit
  (merged to 'next' on 2015-10-09 at 396def8)
 + am: configure gpg at startup

 When "git am" was rewritten as a built-in, it stopped paying
 attention to user.signingkey, which was fixed.


* rd/test-path-utils (2015-10-08) 1 commit
  (merged to 'next' on 2015-10-15 at 827a271)
 + test-path-utils.c: remove incorrect assumption

 The normalize_ceiling_entry() function does not muck with the end
 of the path it accepts, and the real world callers do rely on that,
 but a test insisted that the function drops a trailing slash.


* sa/send-email-smtp-batch-data-limit (2015-09-30) 1 commit
  (merged to 'next' on 2015-10-09 at c021fdf)
 + git-send-email.perl: Fixed sending of many/huge changes/patches

 When "git send-email" wanted to talk over Net::SMTP::SSL,
 Net::Cmd::datasend() did not like to be fed too many bytes at the
 same time and failed to send messages.  Send the payload one line
 at a time to work around the problem.


* sb/http-flaky-test-fix (2015-09-25) 1 commit
  (merged to 'next' on 2015-10-09 at 9dc37f3)
 + t5561: get rid of racy appending to logfile

 A test script for the HTTP service had a timing dependent bug,
 which was fixed.


* sb/perf-without-installed-git (2015-09-25) 1 commit
  (merged to 'next' on 2015-10-09 at 7a1ed05)
 + t/perf: make runner work even if Git is not installed

 Performance-measurement tests did not work without an installed Git.


* sb/submodule-config-parse (2015-10-12) 1 commit
  (merged to 'next' on 2015-10-15 at 6fea79d)
 + submodule-config: "goto" removal in parse_config()

 Code simplification.


* tk/doc-interpret-trailers-grammo (2015-10-07) 1 commit
  (merged to 'next' on 2015-10-09 at 37888a2)
 + Documentation/interpret-trailers: Grammar fix

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

* dt/refs-backend-pre-vtable (2015-10-15) 27 commits
 - introduce "extensions" form of core.repositoryformatversion
 - refs: break out ref conflict checks
 - refs: make files_log_ref_write functions public
 - initdb: move safe_create_dir into common code
 - refs.c: move should_autocreate_reflog to common code
 - refs.c: move peel_object to the common code
 - refs.c: move copy_msg to the common code
 - refs.c: move refname_is_safe to the common code
 - refs: move transaction functions into common code
 - refs.c: move head_ref_namespaced to the common code
 - refs.c: move ref iterators to the common code
 - refs.c: move prettify_refname to the common code
 - refs.c: move is_branch to the common code
 - refs.c: move check_refname_format to the common code
 - refs.c: move resolve_refdup to common
 - refs.c: move read_ref, read_ref_full and ref_exists to the common code
 - refs.c: move warn_if_dangling_symref* to the common code
 - refs.c: move dwim and friend functions to the common refs code
 - refs.c: move the hidden refs functions to the common code
 - refs.c: move read_ref_at to the common refs file
 - refs.c: move delete_pseudoref and delete_ref to the common code
 - refs.c: move update_ref to refs.c
 - refs.c: add a new refs.c file to hold all common refs code
 - refs-be-files.c: rename refs to refs-be-files
 - refs: make repack_without_refs and is_branch public
 - refs.c: create a public version of verify_refname_available
 - Merge branch 'jk/war-on-sprintf' into HEAD
 (this branch uses jk/war-on-sprintf; is tangled with dt/refs-backend-lmdb.)

 The early part of the pluggable ref backend series, which sifts the
 ref API functions into two bins: the filesystem backend specific
 ones and the generic API functions.  The next step will start
 introducing the framework to dispatch generic calls to specific
 backend implementation(s) and then finally plug a new backend that
 is different from the file backend.

 Expecting a reroll after an review of the remainder.
 ($gmane/279897).


* jc/usage-stdin (2015-10-16) 1 commit
 - usage: do not insist that standard input must come from a file

 The synopsys text and the usage string of subcommands that read
 list of things from the standard input are often shown as if they
 only take input from a file on a filesystem, which was misleading.

 Will merge to 'next'.


* rt/placeholder-in-usage (2015-10-16) 1 commit
 - am, credential-cache: add angle brackets to usage string

 A couple of commands still showed "[options]" in their usage string
 to note where options should come on their command line, but we
 spell that "[<options>]" in most places these days.

 Will merge to 'next'.


* tk/stripspace (2015-10-16) 2 commits
 - stripspace: use parse-options for command-line parsing
 - strbuf: make stripspace() part of strbuf

 The internal stripspace() function has been moved to where it
 logically belongs to, i.e. strbuf API, and the command line parser
 of "git stripspace" has been updated to use the parse_options API.

 Will merge to 'next'.


* dk/p4-import-ctypes (2015-10-20) 1 commit
 - git-p4: import the ctypes module

 "git-p4" tried to use from ctypes module without first importing
 it.

 Will merge to 'next'.


* dt/t7063-fix-flaky-test (2015-10-19) 1 commit
 - t7063: fix flaky untracked-cache test

 Will merge to 'next'.


* es/worktree-add (2015-10-18) 1 commit
 - worktree: usage: denote <branch> as optional with 'add'

 Will merge to 'next'.


* kn/for-each-tag (2015-10-18) 1 commit
 - tag.c: use the correct algorithm for the '--contains' option

 Recent update to "git tag --contains" caused a performance
 regression.

 Will merge to 'next'.

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

* dk/gc-idx-wo-pack (2015-08-17) 3 commits
 - DONTMERGE: log message, grace-period and tests $gmane/276058
 - gc: remove stale .idx files without corresponding .pack file
 - prepare_packed_git(): refactor garbage reporting in pack directory

 Having a leftover .idx file without correspoinding .pack file in
 the repository hurts performance; "git gc" learned to prune them.

 Waiting for a reroll.


* nd/ita-cleanup (2015-09-06) 6 commits
 - grep: make it clear i-t-a entries are ignored
 - checkout(-index): do not checkout i-t-a entries
 - apply: make sure check_preimage() does not leave empty file on error
 - apply: fix adding new files on i-t-a entries
 - add and use a convenience macro ce_intent_to_add()
 - blame: remove obsolete comment

 Paths that have been told the index about with "add -N" are not yet
 in the index, but various commands behaved as if they already are.

 Some commits need better explanation.

 Waiting for a reroll.


* ld/p4-detached-head (2015-09-09) 2 commits
 - git-p4: work with a detached head
 - git-p4: add failing test for submit from detached head

 Will be rerolled.
 ($gmane/277574)


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962

 Becoming tired of waiting for a reroll.
 with updated log message ($gmane/268061).


* wp/sha1-name-negative-match (2015-06-08) 2 commits
 - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
 - test for '!' handling in rev-parse's named commits

 Introduce "branch^{/!-<pattern>}" notation to name a commit
 reachable from branch that does not match the given pattern.

 Becoming tired of waiting for a reroll.
 ($gmane/271213).


* ak/format-patch-odir-config (2015-06-19) 1 commit
 - format-patch: introduce format.outputDirectory configuration

 Reroll exists but didn't pick it up as it seemed to be still
 collecting review comments.

 Becoming tired of waiting for a reroll.
 ($gmane/272180).


* mh/notes-allow-reading-treeish (2015-10-08) 3 commits
 - notes: allow treeish expressions as notes ref
 + Merge branch 'jk/notes-dwim-doc' into next
 + Merge branch 'jc/merge-drop-old-syntax' into next
 (this branch uses jc/merge-drop-old-syntax.)

 Some "git notes" operations, e.g. "git log --notes=<note>", should
 be able to read notes from any tree-ish that is shaped like a notes
 tree, but the notes infrastructure required that the argument must
 be a ref under refs/notes/.  Loosen it to require a valid ref only
 when the operation would update the notes (in which case we must
 have a place to store the updated notes tree, iow, a ref).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.

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

* mr/worktree-list (2015-10-08) 5 commits
 - worktree: add 'list' command
 - worktree: add details to the worktree struct
 - worktree: add a function to get worktree details
 - worktree: refactor find_linked_symref function
 - worktree: add top-level worktree.c

 Add the "list" subcommand to "git worktree".

 Will merge to 'next'.


* jc/mailinfo (2015-10-20) 1 commit
 - mailinfo: ignore in-body header that we do not care about
 (this branch uses jc/am-mailinfo-direct and jc/mailinfo-lib.)

 Some people write arbitrary garbage at the beginning of a piece of
 e-mail (or after -- >8 -- scissors -- >8 -- line) in the commit log
 message and expect them to be discarded, even though "From:" and
 "Subject:" are the only documented in-body headers that you are
 supposed to have there.  Allow some garbage (specifically, what may
 look like RFC2822 headers like "MIME-Version: ...") to be there and
 ignore them.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* jc/am-mailinfo-direct (2015-10-20) 2 commits
 - mailinfo: plug strbuf leak during continuation line handling
 - am: make direct call to mailinfo
 (this branch is used by jc/mailinfo; uses jc/mailinfo-lib.)

 "git am" used to spawn "git mailinfo" via run_command() API once
 per each patch, but learned to make a direct call to mailinfo()
 instead.

 Needs benchmark on platforms with slow run_command().


* jc/mailinfo-lib (2015-10-19) 33 commits
 - mailinfo: remove calls to exit() and die() deep in the callchain
 - mailinfo: handle charset conversion errors in the caller
 - mailinfo: libify
 - mailinfo: move definition of MAX_HDR_PARSED closer to its use
 - mailinfo: move cleanup_space() before its users
 - mailinfo: move check_header() after the helpers it uses
 - mailinfo: move read_one_header_line() closer to its callers
 - mailinfo: keep the parsed log message in a strbuf
 - mailinfo: handle_commit_msg() shouldn't be called after finding patchbreak
 - mailinfo: move content/content_top to struct mailinfo
 - mailinfo: move [ps]_hdr_data to struct mailinfo
 - mailinfo: move cmitmsg and patchfile to struct mailinfo
 - mailinfo: move charset to struct mailinfo
 - mailinfo: move transfer_encoding to struct mailinfo
 - mailinfo: move check for metainfo_charset to convert_to_utf8()
 - mailinfo: move metainfo_charset to struct mailinfo
 - mailinfo: move use_scissors and use_inbody_headers to struct mailinfo
 - mailinfo: move add_message_id and message_id to struct mailinfo
 - mailinfo: move patch_lines to struct mailinfo
 - mailinfo: move filter/header stage to struct mailinfo
 - mailinfo: move global "FILE *fin, *fout" to struct mailinfo
 - mailinfo: move keep_subject & keep_non_patch_bracket to struct mailinfo
 - mailinfo: introduce "struct mailinfo" to hold globals
 - mailinfo: move global "line" into mailinfo() function
 - mailinfo: do not let find_boundary() touch global "line" directly
 - mailinfo: do not let handle_boundary() touch global "line" directly
 - mailinfo: do not let handle_body() touch global "line" directly
 - mailinfo: get rid of function-local static states
 - mailinfo: move handle_boundary() lower
 - mailinfo: explicitly close file handle to the patch output
 - mailinfo: fix an off-by-one error in the boundary stack
 - mailinfo: fold decode_header_bq() into decode_header()
 - mailinfo: remove a no-op call convert_to_utf8(it, "")
 (this branch is used by jc/am-mailinfo-direct and jc/mailinfo.)

 The implementation of "git mailinfo" was refactored so that a
 mailinfo() function can be directly called from inside a process.


* jc/am-3-fallback-regression-fix (2015-10-09) 1 commit
  (merged to 'next' on 2015-10-15 at 7dde994)
 + am -3: do not let failed merge from completing the error codepath
 (this branch is used by js/am-3-merge-recursive-direct.)

 "git am -3" had a small regression where it is aborted in its error
 handling codepath when underlying merge-recursive failed in certain
 ways, as it assumed that the internal call to merge-recursive will
 never die, which is not the case (yet).


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag
 (this branch uses jc/am-3-fallback-regression-fix.)

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.


* km/cache-entry-refcnt (2015-10-14) 1 commit
 - merge: fix cache_entry use-after-free

 Sometimes we discarded a cache-entry that is still referenced from
 name-hash (used only to hold the pathname there), leading to use
 after free errors.  Reference-count cache entries to work it
 around.


* ls/p4-test-updates (2015-10-12) 2 commits
  (merged to 'next' on 2015-10-15 at 3c94932)
 + git-p4: skip t9819 test case on case insensitive file systems
 + git-p4: avoid "stat" command in t9815 git-p4-submit-fail

 A few test scripts around "git p4" have been improved for
 portability.

 Will merge to 'master'.


* tb/t0027-crlf (2015-10-12) 1 commit
  (merged to 'next' on 2015-10-15 at 7ab4f31)
 + t0027: improve test for not-normalized files

 The test for various line-ending conversions has been enhanced.

 Will merge to 'master'.


* sg/pretty-more-date-mode-format (2015-10-07) 1 commit
 - pretty: add format specifiers for short and raw date formats

 Introduce "%as" and "%aR" placeholders for "log --format" to show
 the author date in the short and raw formats.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* kn/for-each-branch-remainder (2015-10-02) 9 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: adopt get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: add support for %(path) atom
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: implement %(if), %(then), and %(else) atoms

 More unification among "branch -l", "tag -l" and "for-each-ref --format".

 Expecting a reroll.
 ($gmane/278926)


* jk/war-on-sprintf (2015-10-05) 70 commits
  (merged to 'next' on 2015-10-15 at 27a1ae5)
 + name-rev: use strip_suffix to avoid magic numbers
 + use strbuf_complete to conditionally append slash
 + fsck: use for_each_loose_file_in_objdir
 + Makefile: drop D_INO_IN_DIRENT build knob
 + fsck: drop inode-sorting code
 + convert strncpy to memcpy
 + notes: document length of fanout path with a constant
 + color: add color_set helper for copying raw colors
 + prefer memcpy to strcpy
 + help: clean up kfmclient munging
 + receive-pack: simplify keep_arg computation
 + avoid sprintf and strcpy with flex arrays
 + use alloc_ref rather than hand-allocating "struct ref"
 + color: add overflow checks for parsing colors
 + drop strcpy in favor of raw sha1_to_hex
 + use sha1_to_hex_r() instead of strcpy
 + daemon: use cld->env_array when re-spawning
 + stat_tracking_info: convert to argv_array
 + http-push: use an argv_array for setup_revisions
 + fetch-pack: use argv_array for index-pack / unpack-objects
 + diagnose_invalid_index_path: use strbuf to avoid strcpy/strcat
 + write_loose_object: convert to strbuf
 + remove_leading_path: use a strbuf for internal storage
 + enter_repo: convert fixed-size buffers to strbufs
 + merge-recursive: convert malloc / strcpy to strbuf
 + transport: use strbufs for status table "quickref" strings
 + apply: convert root string to strbuf
 + init: use strbufs to store paths
 + probe_utf8_pathname_composition: use internal strbuf
 + precompose_utf8: drop unused variable
 + sha1_get_pack_name: use a strbuf
 + http-walker: store url in a strbuf
 + http-push: use strbuf instead of fwrite_buffer
 + remote-ext: simplify git pkt-line generation
 + upload-archive: convert sprintf to strbuf
 + resolve_ref: use strbufs for internal buffers
 + read_remotes_file: simplify string handling
 + read_branches_file: simplify string handling
 + mailmap: replace strcpy with xstrdup
 + help: drop prepend function in favor of xstrfmt
 + ref-filter: drop sprintf and strcpy calls
 + use strip_suffix and xstrfmt to replace suffix
 + fetch: replace static buffer with xstrfmt
 + config: use xstrfmt in normalize_value
 + replace trivial malloc + sprintf / strcpy calls with xstrfmt
 + receive-pack: convert strncpy to xsnprintf
 + http-push: replace strcat with xsnprintf
 + add_packed_git: convert strcpy into xsnprintf
 + entry.c: convert strcpy to xsnprintf
 + grep: use xsnprintf to format failure message
 + compat/hstrerror: convert sprintf to snprintf
 + stop_progress_msg: convert sprintf to xsnprintf
 + find_short_object_filename: convert sprintf to xsnprintf
 + use xsnprintf for generating git object headers
 + archive-tar: use xsnprintf for trivial formatting
 + convert trivial sprintf / strcpy calls to xsnprintf
 + compat/inet_ntop: fix off-by-one in inet_ntop4
 + test-dump-cache-tree: avoid overflow of cache-tree name
 + progress: store throughput display in a strbuf
 + trace: use strbuf for quote_crnl output
 + mailsplit: make PATH_MAX buffers dynamic
 + fsck: use strbuf to generate alternate directories
 + add reentrant variants of sha1_to_hex and find_unique_abbrev
 + strbuf: make strbuf_complete_line more generic
 + add git_path_buf helper function
 + add xsnprintf helper function
 + fsck: don't fsck alternates for connectivity-only check
 + archive-tar: fix minor indentation violation
 + mailsplit: fix FILE* leak in split_maildir
 + show-branch: avoid segfault with --reflog of unborn branch
 (this branch is used by dt/refs-backend-lmdb and dt/refs-backend-pre-vtable.)

 Many allocations that is manually counted (correctly) that are
 followed by strcpy/sprintf have been replaced with a less error
 prone constructs such as xstrfmt.

 Macintosh-specific breakage was noticed and corrected in this
 reroll.

 Will merge to 'master'.


* rp/link-curl-before-ssl (2015-09-25) 3 commits
 - configure: make curl-config path configurable
 - configure.ac: detect ssl need with libcurl
 - Makefile: link libcurl before openssl and crypto

 Waiting for the (hopefully) final submission.


* jk/graph-format-padding (2015-09-14) 1 commit
 - pretty: pass graph width to pretty formatting for use in '%>|(N)'

 Redefine the way '%>|(N)' padding and the "--graph" option
 interacts.  It has been that the available columns to display the
 log message was measured from the edge of the area the graph ended,
 but with this it becomes the beginning of the entire output.

 I have a suspicion that 50% of the users would appreciate this
 change, and the remainder see this break their expectation.  If
 that is the case, we might need to introduce a similar but
 different alignment operator so that this new behaviour is
 available to those who want to use it, without negatively affecting
 existing uses.

 Undecided.
 ($gmane/278326)


* sb/submodule-parallel-fetch (2015-10-20) 14 commits
 - run-command: fix missing output from late callbacks
 - test-run-command: increase test coverage
 - test-run-command: test for gracefully aborting
 - run-command: initialize the shutdown flag
 - run-command: call get_next_task with a clean child process.
 - run-command: fix early shutdown
  (merged to 'next' on 2015-10-15 at df63590)
 + submodules: allow parallel fetching, add tests and documentation
 + fetch_populated_submodules: use new parallel job processing
 + run-command: add an asynchronous parallel child processor
 + sigchain: add command to pop all common signals
 + strbuf: add strbuf_read_once to read without blocking
 + xread_nonblock: add functionality to read from fds without blocking
 + xread: poll on non blocking fds
 + submodule.c: write "Fetching submodule <foo>" to stderr

 Add a framework to spawn a group of processes in parallel, and use
 it to run "git fetch --recurse-submodules" in parallel.

 Will cook in 'next'.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2015-09-14) 7 commits
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
  (merged to 'next' on 2015-10-07 at 50fed71)
 + merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch is used by mh/notes-allow-reading-treeish.)

 Originally merged to 'next' on 2015-05-28

 Stop supporting "git merge <message> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will keep in 'next' during the 2.7 cycle.

--------------------------------------------------
[Discarded]

* dt/refs-backend-lmdb (2015-10-12) 45 commits
 . refs: tests for db backend
 . refs: add LMDB refs backend
 . introduce "extensions" form of core.repositoryformatversion
 . refs: add register_refs_backend
 . refs: allow ref backend to be set for clone
 . refs: always handle non-normal refs in files backend
 . refs: move duplicate check to common code
 . refs: break out a ref conflict check
 . refs: make files_log_ref_write functions public
 . refs: make lock generic
 . refs-be-files.c: add method to rename refs
 . refs.c: add method for initializing refs db
 . initdb: move safe_create_dir into common code
 . refs.c: add method for initial ref transaction commit
 . refs.c: add methods for reflog
 . refs.c: add ref backend init function
 . refs.c: move should_autocreate_reflog to common code
 . refs.c: move peel_object to the common code
 . refs.c: move copy_msg to the common code
 . refs.h: document make refname_is_safe and add it to header
 . refs.c: move refname_is_safe to the common code
 . refs-be-files.c: add do_for_each_per_worktree_ref
 . refs-be-files.c: add method for for_each_reftype_...
 . refs-be-files.c: add methods for the ref iterators
 . refs-be-files.c: add methods for misc ref operations
 . refs: add a backend method structure with transaction functions
 . refs: move transaction functions into common code
 . refs.c: move head_ref_namespaced to the common code
 . refs.c: move ref iterators to the common code
 . refs.c: move prettify_refname to the common code
 . refs.c: move is_branch to the common code
 . refs.c: move check_refname_format to the common code
 . refs.c: move resolve_refdup to common
 . refs.c: move read_ref, read_ref_full and ref_exists to the common code
 . refs.c: move warn_if_dangling_symref* to the common code
 . refs.c: move dwim and friend functions to the common refs code
 . refs.c: move the hidden refs functions to the common code
 . refs.c: move read_ref_at to the common refs file
 . refs.c: move delete_ref and delete_refs to the common code
 . refs.c: move update_ref to refs.c
 . refs.c: add a new refs.c file to hold all common refs code
 . refs-be-files.c: rename refs to refs-be-files
 . refs: make repack_without_refs and is_branch public
 . refs.c: create a public version of verify_refname_available
 - Merge branch 'jk/war-on-sprintf' into HEAD
 (this branch uses jk/war-on-sprintf; is tangled with dt/refs-backend-pre-vtable.)

 Being rerolled separately.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Oct 2015, #05; Thu, 22)
@ 2015-10-22 20:51  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-22 20:51 UTC (permalink / raw)
  To: git

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

With somewhat reduced review bandwidth, I'd expect that the upcoming
cycle would be slower than usual.  At tinyurl.com/gitCal, I
tentatively drew a 14-week schedule for this cycle (I plan to be
offline during weeks #7-#9 myself---hopefully we'll have capable
interim maintainers to take care of the list traffic in the meantime
as in past years).

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

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

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

* jk/war-on-sprintf (2015-10-05) 70 commits
  (merged to 'next' on 2015-10-15 at 27a1ae5)
 + name-rev: use strip_suffix to avoid magic numbers
 + use strbuf_complete to conditionally append slash
 + fsck: use for_each_loose_file_in_objdir
 + Makefile: drop D_INO_IN_DIRENT build knob
 + fsck: drop inode-sorting code
 + convert strncpy to memcpy
 + notes: document length of fanout path with a constant
 + color: add color_set helper for copying raw colors
 + prefer memcpy to strcpy
 + help: clean up kfmclient munging
 + receive-pack: simplify keep_arg computation
 + avoid sprintf and strcpy with flex arrays
 + use alloc_ref rather than hand-allocating "struct ref"
 + color: add overflow checks for parsing colors
 + drop strcpy in favor of raw sha1_to_hex
 + use sha1_to_hex_r() instead of strcpy
 + daemon: use cld->env_array when re-spawning
 + stat_tracking_info: convert to argv_array
 + http-push: use an argv_array for setup_revisions
 + fetch-pack: use argv_array for index-pack / unpack-objects
 + diagnose_invalid_index_path: use strbuf to avoid strcpy/strcat
 + write_loose_object: convert to strbuf
 + remove_leading_path: use a strbuf for internal storage
 + enter_repo: convert fixed-size buffers to strbufs
 + merge-recursive: convert malloc / strcpy to strbuf
 + transport: use strbufs for status table "quickref" strings
 + apply: convert root string to strbuf
 + init: use strbufs to store paths
 + probe_utf8_pathname_composition: use internal strbuf
 + precompose_utf8: drop unused variable
 + sha1_get_pack_name: use a strbuf
 + http-walker: store url in a strbuf
 + http-push: use strbuf instead of fwrite_buffer
 + remote-ext: simplify git pkt-line generation
 + upload-archive: convert sprintf to strbuf
 + resolve_ref: use strbufs for internal buffers
 + read_remotes_file: simplify string handling
 + read_branches_file: simplify string handling
 + mailmap: replace strcpy with xstrdup
 + help: drop prepend function in favor of xstrfmt
 + ref-filter: drop sprintf and strcpy calls
 + use strip_suffix and xstrfmt to replace suffix
 + fetch: replace static buffer with xstrfmt
 + config: use xstrfmt in normalize_value
 + replace trivial malloc + sprintf / strcpy calls with xstrfmt
 + receive-pack: convert strncpy to xsnprintf
 + http-push: replace strcat with xsnprintf
 + add_packed_git: convert strcpy into xsnprintf
 + entry.c: convert strcpy to xsnprintf
 + grep: use xsnprintf to format failure message
 + compat/hstrerror: convert sprintf to snprintf
 + stop_progress_msg: convert sprintf to xsnprintf
 + find_short_object_filename: convert sprintf to xsnprintf
 + use xsnprintf for generating git object headers
 + archive-tar: use xsnprintf for trivial formatting
 + convert trivial sprintf / strcpy calls to xsnprintf
 + compat/inet_ntop: fix off-by-one in inet_ntop4
 + test-dump-cache-tree: avoid overflow of cache-tree name
 + progress: store throughput display in a strbuf
 + trace: use strbuf for quote_crnl output
 + mailsplit: make PATH_MAX buffers dynamic
 + fsck: use strbuf to generate alternate directories
 + add reentrant variants of sha1_to_hex and find_unique_abbrev
 + strbuf: make strbuf_complete_line more generic
 + add git_path_buf helper function
 + add xsnprintf helper function
 + fsck: don't fsck alternates for connectivity-only check
 + archive-tar: fix minor indentation violation
 + mailsplit: fix FILE* leak in split_maildir
 + show-branch: avoid segfault with --reflog of unborn branch
 (this branch is used by dt/refs-backend-lmdb and dt/refs-backend-pre-vtable.)

 Many allocations that is manually counted (correctly) that are
 followed by strcpy/sprintf have been replaced with a less error
 prone constructs such as xstrfmt.


* ls/p4-test-updates (2015-10-12) 2 commits
  (merged to 'next' on 2015-10-15 at 3c94932)
 + git-p4: skip t9819 test case on case insensitive file systems
 + git-p4: avoid "stat" command in t9815 git-p4-submit-fail

 A few test scripts around "git p4" have been improved for
 portability.


* tb/t0027-crlf (2015-10-12) 1 commit
  (merged to 'next' on 2015-10-15 at 7ab4f31)
 + t0027: improve test for not-normalized files

 The test for various line-ending conversions has been enhanced.

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

* ar/clone-dissociate (2015-10-22) 1 commit
 - clone: allow "--dissociate" without reference

 "git clone --dissociate" used to require that "--reference" was
 used at the same time, but you can create a new repository that
 borrows objects from another without using "--reference", namely
 with "clone --local" from a repository that borrows objects from
 other repositories.

 Will merge to 'next'.


* da/difftool (2015-10-21) 1 commit
 - difftool: gracefully handle symlinks to directories

 The code to reuse checked out files for comparison was too
 aggressive and forgot that symbolic links cannot be reused
 for comparison.

 Smells wrong that this special-cases based on the target of
 symbolic link.


* dt/name-hash-dir-entry-fix (2015-10-21) 1 commit
  (merged to 'next' on 2015-10-22 at 15eb519)
 + name-hash: don't reuse cache_entry in dir_entry

 The name-hash subsystem that is used to cope with case insensitive
 filesystems keeps track of directories and their on-filesystem
 cases for all the paths in the index by holding a pointer to a
 randomly chosen cache entry that is inside the directory (for its
 ce->ce_name component).  This pointer was not updated even when the
 cache entry was removed from the index, leading to use after free.
 This was fixed by recording the path for each directory instead of
 borrowing cache entries and restructuring the API somewhat.

 Will merge to 'master'.


* jc/everyday-markup (2015-10-22) 1 commit
  (merged to 'next' on 2015-10-22 at 0a2702d)
 + Documentation/everyday: match undefline with the text

 AsciiDoc markup fixes.

 Will merge to 'master'.


* jk/repository-extension (2015-06-24) 2 commits
  (merged to 'next' on 2015-10-22 at 116c8ce)
 + introduce "preciousObjects" repository extension
 + introduce "extensions" form of core.repositoryformatversion

 Prepare for Git on-disk repository representation to undergo
 backward incompatible changes by introducing a new repository
 format version "1", with an extension mechanism.

 Will merge to 'master'.


* tk/sigchain-unnecessary-post-tempfile (2015-10-22) 4 commits
  (merged to 'next' on 2015-10-22 at b049f0a)
 + shallow: remove unused #include "sigchain.h"
 + read-cache: remove unused #include "sigchain.h"
 + diff: remove unused #include "sigchain.h"
 + credential-cache--daemon: remove unused #include "sigchain.h"

 Remove no-longer used #include.

 Will merge to 'master'.


* xf/user-manual-markup (2015-10-22) 3 commits
  (merged to 'next' on 2015-10-22 at cd33c83)
 + Documentation: match undefline with the text in old release notes
 + Documentation: match underline with the text
 + Documentation: fix header markup

 AsciiDoc markup fixes.

 Will merge to 'master'.


* jc/em-dash-in-doc (2015-10-22) 1 commit
 - Documentation: AsciiDoc spells em-dash as double-dashes, not triple

 AsciiDoc markup fixes.

 Will merge to 'next'.

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

* dk/gc-idx-wo-pack (2015-08-17) 3 commits
 - DONTMERGE: log message, grace-period and tests $gmane/276058
 - gc: remove stale .idx files without corresponding .pack file
 - prepare_packed_git(): refactor garbage reporting in pack directory

 Having a leftover .idx file without corresponding .pack file in
 the repository hurts performance; "git gc" learned to prune them.

 Waiting for a reroll.


* nd/ita-cleanup (2015-09-06) 6 commits
 - grep: make it clear i-t-a entries are ignored
 - checkout(-index): do not checkout i-t-a entries
 - apply: make sure check_preimage() does not leave empty file on error
 - apply: fix adding new files on i-t-a entries
 - add and use a convenience macro ce_intent_to_add()
 - blame: remove obsolete comment

 Paths that have been told the index about with "add -N" are not yet
 in the index, but various commands behaved as if they already are.

 Some commits need better explanation.

 Waiting for a reroll.


* ld/p4-detached-head (2015-09-09) 2 commits
 - git-p4: work with a detached head
 - git-p4: add failing test for submit from detached head

 Will be rerolled.
 ($gmane/277574)


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962

 Becoming tired of waiting for a reroll.
 with updated log message ($gmane/268061).


* wp/sha1-name-negative-match (2015-06-08) 2 commits
 - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
 - test for '!' handling in rev-parse's named commits

 Introduce "branch^{/!-<pattern>}" notation to name a commit
 reachable from branch that does not match the given pattern.

 Becoming tired of waiting for a reroll.
 ($gmane/271213).


* ak/format-patch-odir-config (2015-06-19) 1 commit
 - format-patch: introduce format.outputDirectory configuration

 Reroll exists but didn't pick it up as it seemed to be still
 collecting review comments.

 Becoming tired of waiting for a reroll.
 ($gmane/272180).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.

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

* mh/notes-allow-reading-treeish (2015-10-08) 3 commits
 - notes: allow treeish expressions as notes ref
 + Merge branch 'jk/notes-dwim-doc' into next
 + Merge branch 'jc/merge-drop-old-syntax' into next
 (this branch uses jc/merge-drop-old-syntax.)

 Some "git notes" operations, e.g. "git log --notes=<note>", should
 be able to read notes from any tree-ish that is shaped like a notes
 tree, but the notes infrastructure required that the argument must
 be a ref under refs/notes/.  Loosen it to require a valid ref only
 when the operation would update the notes (in which case we must
 have a place to store the updated notes tree, iow, a ref).

 Will cook in 'next'.


* dt/refs-backend-pre-vtable (2015-10-15) 26 commits
 - refs: break out ref conflict checks
 - refs: make files_log_ref_write functions public
 - initdb: move safe_create_dir into common code
 - refs.c: move should_autocreate_reflog to common code
 - refs.c: move peel_object to the common code
 - refs.c: move copy_msg to the common code
 - refs.c: move refname_is_safe to the common code
 - refs: move transaction functions into common code
 - refs.c: move head_ref_namespaced to the common code
 - refs.c: move ref iterators to the common code
 - refs.c: move prettify_refname to the common code
 - refs.c: move is_branch to the common code
 - refs.c: move check_refname_format to the common code
 - refs.c: move resolve_refdup to common
 - refs.c: move read_ref, read_ref_full and ref_exists to the common code
 - refs.c: move warn_if_dangling_symref* to the common code
 - refs.c: move dwim and friend functions to the common refs code
 - refs.c: move the hidden refs functions to the common code
 - refs.c: move read_ref_at to the common refs file
 - refs.c: move delete_pseudoref and delete_ref to the common code
 - refs.c: move update_ref to refs.c
 - refs.c: add a new refs.c file to hold all common refs code
 - refs-be-files.c: rename refs to refs-be-files
 - refs: make repack_without_refs and is_branch public
 - refs.c: create a public version of verify_refname_available
 - Merge branch 'jk/war-on-sprintf' into HEAD

 The early part of the pluggable ref backend series, which sifts the
 ref API functions into two bins: the filesystem backend specific
 ones and the generic API functions.  The next step will start
 introducing the framework to dispatch generic calls to specific
 backend implementation(s) and then finally plug a new backend that
 is different from the file backend.

 Expecting a reroll after an review of the remainder.
 ($gmane/279897).


* jc/usage-stdin (2015-10-16) 1 commit
  (merged to 'next' on 2015-10-20 at 937d4aa)
 + usage: do not insist that standard input must come from a file

 The synopsis text and the usage string of subcommands that read
 list of things from the standard input are often shown as if they
 only take input from a file on a filesystem, which was misleading.

 Will merge to 'master'.


* rt/placeholder-in-usage (2015-10-16) 1 commit
  (merged to 'next' on 2015-10-20 at 5189b23)
 + am, credential-cache: add angle brackets to usage string

 A couple of commands still showed "[options]" in their usage string
 to note where options should come on their command line, but we
 spell that "[<options>]" in most places these days.

 Will merge to 'master'.


* tk/stripspace (2015-10-16) 2 commits
  (merged to 'next' on 2015-10-20 at 327a997)
 + stripspace: use parse-options for command-line parsing
 + strbuf: make stripspace() part of strbuf

 The internal stripspace() function has been moved to where it
 logically belongs to, i.e. strbuf API, and the command line parser
 of "git stripspace" has been updated to use the parse_options API.

 Will merge to 'master'.


* dk/p4-import-ctypes (2015-10-20) 1 commit
  (merged to 'next' on 2015-10-22 at 5760144)
 + git-p4: import the ctypes module

 "git-p4" tried to use from ctypes module without first importing
 it.

 Will merge to 'master'.


* dt/t7063-fix-flaky-test (2015-10-19) 1 commit
  (merged to 'next' on 2015-10-20 at 156af72)
 + t7063: fix flaky untracked-cache test

 Will merge to 'master'.


* es/worktree-add (2015-10-18) 1 commit
  (merged to 'next' on 2015-10-20 at ccadb70)
 + worktree: usage: denote <branch> as optional with 'add'

 Will merge to 'master'.


* kn/for-each-tag (2015-10-18) 1 commit
  (merged to 'next' on 2015-10-20 at 7afd374)
 + tag.c: use the correct algorithm for the '--contains' option

 Recent update to "git tag --contains" caused a performance
 regression.

 Will merge to 'master'.


* mr/worktree-list (2015-10-08) 5 commits
  (merged to 'next' on 2015-10-20 at 7cb272d)
 + worktree: add 'list' command
 + worktree: add details to the worktree struct
 + worktree: add a function to get worktree details
 + worktree: refactor find_linked_symref function
 + worktree: add top-level worktree.c

 Add the "list" subcommand to "git worktree".

 Will merge to 'master'.


* jc/mailinfo (2015-10-21) 1 commit
 - mailinfo: ignore in-body header that we do not care about
 (this branch uses jc/am-mailinfo-direct and jc/mailinfo-lib.)

 Some people write arbitrary garbage at the beginning of a piece of
 e-mail (or after -- >8 -- scissors -- >8 -- line) in the commit log
 message and expect them to be discarded, even though "From:" and
 "Subject:" are the only documented in-body headers that you are
 supposed to have there.  Allow some garbage (specifically, what may
 look like RFC2822 headers like "MIME-Version: ...") to be there and
 ignore them.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* jc/am-mailinfo-direct (2015-10-21) 1 commit
  (merged to 'next' on 2015-10-22 at ca15014)
 + am: make direct call to mailinfo
 (this branch is used by jc/mailinfo; uses jc/mailinfo-lib.)

 "git am" used to spawn "git mailinfo" via run_command() API once
 per each patch, but learned to make a direct call to mailinfo()
 instead.

 Will merge to 'master'.


* jc/mailinfo-lib (2015-10-21) 34 commits
  (merged to 'next' on 2015-10-22 at 405bd66)
 + mailinfo: remove calls to exit() and die() deep in the callchain
 + mailinfo: handle charset conversion errors in the caller
 + mailinfo: libify
 + mailinfo: keep the parsed log message in a strbuf
 + mailinfo: handle_commit_msg() shouldn't be called after finding patchbreak
 + mailinfo: move content/content_top to struct mailinfo
 + mailinfo: move [ps]_hdr_data to struct mailinfo
 + mailinfo: move cmitmsg and patchfile to struct mailinfo
 + mailinfo: move charset to struct mailinfo
 + mailinfo: move transfer_encoding to struct mailinfo
 + mailinfo: move check for metainfo_charset to convert_to_utf8()
 + mailinfo: move metainfo_charset to struct mailinfo
 + mailinfo: move use_scissors and use_inbody_headers to struct mailinfo
 + mailinfo: move add_message_id and message_id to struct mailinfo
 + mailinfo: move patch_lines to struct mailinfo
 + mailinfo: move filter/header stage to struct mailinfo
 + mailinfo: move global "FILE *fin, *fout" to struct mailinfo
 + mailinfo: move keep_subject & keep_non_patch_bracket to struct mailinfo
 + mailinfo: introduce "struct mailinfo" to hold globals
 + mailinfo: move global "line" into mailinfo() function
 + mailinfo: do not let find_boundary() touch global "line" directly
 + mailinfo: do not let handle_boundary() touch global "line" directly
 + mailinfo: do not let handle_body() touch global "line" directly
 + mailinfo: get rid of function-local static states
 + mailinfo: move definition of MAX_HDR_PARSED closer to its use
 + mailinfo: move cleanup_space() before its users
 + mailinfo: move check_header() after the helpers it uses
 + mailinfo: move read_one_header_line() closer to its callers
 + mailinfo: move handle_boundary() lower
 + mailinfo: plug strbuf leak during continuation line handling
 + mailinfo: explicitly close file handle to the patch output
 + mailinfo: fix an off-by-one error in the boundary stack
 + mailinfo: fold decode_header_bq() into decode_header()
 + mailinfo: remove a no-op call convert_to_utf8(it, "")
 (this branch is used by jc/am-mailinfo-direct and jc/mailinfo.)

 The implementation of "git mailinfo" was refactored so that a
 mailinfo() function can be directly called from inside a process.

 Will merge to 'master'.


* jc/am-3-fallback-regression-fix (2015-10-09) 1 commit
  (merged to 'next' on 2015-10-15 at 7dde994)
 + am -3: do not let failed merge from completing the error codepath
 (this branch is used by js/am-3-merge-recursive-direct.)

 "git am -3" had a small regression where it is aborted in its error
 handling codepath when underlying merge-recursive failed in certain
 ways, as it assumed that the internal call to merge-recursive will
 never die, which is not the case (yet).

 Will merge to 'master'.


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag
 (this branch uses jc/am-3-fallback-regression-fix.)

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Will cook in 'next'.


* sg/pretty-more-date-mode-format (2015-10-07) 1 commit
 - pretty: add format specifiers for short and raw date formats

 Introduce "%as" and "%aR" placeholders for "log --format" to show
 the author date in the short and raw formats.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* kn/for-each-branch-remainder (2015-10-02) 9 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: adopt get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: add support for %(path) atom
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: implement %(if), %(then), and %(else) atoms

 More unification among "branch -l", "tag -l" and "for-each-ref --format".

 Expecting a reroll.
 ($gmane/278926)


* rp/link-curl-before-ssl (2015-10-21) 3 commits
  (merged to 'next' on 2015-10-22 at dad4fc6)
 + configure.ac: detect ssl need with libcurl
 + Makefile: make curl-config path configurable
 + Makefile: link libcurl before zlib

 The linkage order of libraries was wrong in places around libcurl.

 Will merge to 'master'.


* jk/graph-format-padding (2015-09-14) 1 commit
 - pretty: pass graph width to pretty formatting for use in '%>|(N)'

 Redefine the way '%>|(N)' padding and the "--graph" option
 interacts.  It has been that the available columns to display the
 log message was measured from the edge of the area the graph ended,
 but with this it becomes the beginning of the entire output.

 I have a suspicion that 50% of the users would appreciate this
 change, and the remainder see this break their expectation.  If
 that is the case, we might need to introduce a similar but
 different alignment operator so that this new behaviour is
 available to those who want to use it, without negatively affecting
 existing uses.

 Undecided.
 ($gmane/278326)


* sb/submodule-parallel-fetch (2015-10-21) 16 commits
 - git submodule update: have a dedicated helper for cloning
 - submodule config: keep update strategy around
 - run-command: fix missing output from late callbacks
 - test-run-command: increase test coverage
 - test-run-command: test for gracefully aborting
 - run-command: initialize the shutdown flag
 - run-command: clear leftover state from child_process structure
 - run-command: fix early shutdown
  (merged to 'next' on 2015-10-15 at df63590)
 + submodules: allow parallel fetching, add tests and documentation
 + fetch_populated_submodules: use new parallel job processing
 + run-command: add an asynchronous parallel child processor
 + sigchain: add command to pop all common signals
 + strbuf: add strbuf_read_once to read without blocking
 + xread_nonblock: add functionality to read from fds without blocking
 + xread: poll on non blocking fds
 + submodule.c: write "Fetching submodule <foo>" to stderr

 Add a framework to spawn a group of processes in parallel, and use
 it to run "git fetch --recurse-submodules" in parallel.

 Will cook in 'next'.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2015-09-14) 7 commits
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
  (merged to 'next' on 2015-10-07 at 50fed71)
 + merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch is used by mh/notes-allow-reading-treeish.)

 Originally merged to 'next' on 2015-05-28

 Stop supporting "git merge <message> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will keep in 'next' during the 2.7 cycle.

--------------------------------------------------
[Discarded]

* km/cache-entry-refcnt (2015-10-14) 1 commit
 . merge: fix cache_entry use-after-free

 Made unnecessary with dt/name-hash-dir-entry-fix topic.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Oct 2015, #06; Mon, 26)
@ 2015-10-26 23:20  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-26 23:20 UTC (permalink / raw)
  To: git

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

At tinyurl.com/gitCal, I drew a 14-week schedule for this cycle.  I
plan to be offline during weeks #7-#9 myself; hopefully we'll have
capable interim maintainers to take care of the list traffic in the
meantime as in past years.

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

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

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

* dk/p4-import-ctypes (2015-10-20) 1 commit
  (merged to 'next' on 2015-10-22 at 5760144)
 + git-p4: import the ctypes module

 "git-p4" tried to use from ctypes module without first importing
 it.


* dt/t7063-fix-flaky-test (2015-10-19) 1 commit
  (merged to 'next' on 2015-10-20 at 156af72)
 + t7063: fix flaky untracked-cache test


* es/worktree-add (2015-10-18) 1 commit
  (merged to 'next' on 2015-10-20 at ccadb70)
 + worktree: usage: denote <branch> as optional with 'add'


* jc/am-3-fallback-regression-fix (2015-10-09) 1 commit
  (merged to 'next' on 2015-10-15 at 7dde994)
 + am -3: do not let failed merge from completing the error codepath
 (this branch is used by js/am-3-merge-recursive-direct.)

 "git am -3" had a small regression where it is aborted in its error
 handling codepath when underlying merge-recursive failed in certain
 ways, as it assumed that the internal call to merge-recursive will
 never die, which is not the case (yet).


* jc/usage-stdin (2015-10-16) 1 commit
  (merged to 'next' on 2015-10-20 at 937d4aa)
 + usage: do not insist that standard input must come from a file

 The synopsis text and the usage string of subcommands that read
 list of things from the standard input are often shown as if they
 only take input from a file on a filesystem, which was misleading.


* jk/repository-extension (2015-06-24) 2 commits
  (merged to 'next' on 2015-10-22 at 116c8ce)
 + introduce "preciousObjects" repository extension
 + introduce "extensions" form of core.repositoryformatversion

 Prepare for Git on-disk repository representation to undergo
 backward incompatible changes by introducing a new repository
 format version "1", with an extension mechanism.


* kn/for-each-tag (2015-10-18) 1 commit
  (merged to 'next' on 2015-10-20 at 7afd374)
 + tag.c: use the correct algorithm for the '--contains' option

 Recent update to "git tag --contains" caused a performance
 regression.


* mr/worktree-list (2015-10-08) 5 commits
  (merged to 'next' on 2015-10-20 at 7cb272d)
 + worktree: add 'list' command
 + worktree: add details to the worktree struct
 + worktree: add a function to get worktree details
 + worktree: refactor find_linked_symref function
 + worktree: add top-level worktree.c

 Add the "list" subcommand to "git worktree".


* rt/placeholder-in-usage (2015-10-16) 1 commit
  (merged to 'next' on 2015-10-20 at 5189b23)
 + am, credential-cache: add angle brackets to usage string

 A couple of commands still showed "[options]" in their usage string
 to note where options should come on their command line, but we
 spell that "[<options>]" in most places these days.


* tk/stripspace (2015-10-16) 2 commits
  (merged to 'next' on 2015-10-20 at 327a997)
 + stripspace: use parse-options for command-line parsing
 + strbuf: make stripspace() part of strbuf

 The internal stripspace() function has been moved to where it
 logically belongs to, i.e. strbuf API, and the command line parser
 of "git stripspace" has been updated to use the parse_options API.

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

* gr/rebase-i-drop-warn (2015-10-26) 1 commit
 - rebase-i: work around Windows CRLF line endings

 Recent update to "rebase -i" that tries to sanity check the edited
 insn sheet before it uses it has become too picky on Windows where
 CRLF left by the editor is turned into a trailing CR on the line
 read via the "read" built-in command.

 Waiting for comments.


* jc/add-u-A-default-to-top (2015-10-24) 1 commit
 - add: simplify -u/-A without pathspec

 "git --literal-pathspecs add -u/-A" without any command line
 argument misbehaved ever since Git 2.0.

 Waiting for comments.


* jk/delete-modechange-conflict (2015-10-26) 3 commits
 - merge: detect delete/modechange conflict
 - t6031: generalize for recursive and resolve strategies
 - t6031: move triple-rename test to t3030

 Merging a branch that removes a path and another that changes the
 mode bits on the same path should have conflicted at the path, but
 it didn't and silently favoured the removal.

 Will merge to 'next'.


* jk/war-on-sprintf (2015-10-23) 2 commits
  (merged to 'next' on 2015-10-23 at 3a94851)
 + compat/mingw.c: remove printf format warning
 + read_branches_file: plug a FILE* leak

 Will merge to 'master'.


* js/imap-send-curl-compilation-fix (2015-10-26) 1 commit
 - imap-send: only use CURLOPT_LOGIN_OPTIONS if it is actually available

 "git imap-send" did not compile well with older version of cURL library.

 Will merge to 'next'.


* js/misc-fixes (2015-10-26) 3 commits
 - Correct fscanf formatting string for I64u values
 - Silence GCC's "cast of pointer to integer of a different size" warning
 - Squelch warning about an integer overflow

 Various compilation fixes and squelching of warnings.

 Will merge to 'next'.


* mk/blame-error-message (2015-10-26) 1 commit
 - blame: fix option name in error message

 Will merge to 'next'.


* pt/http-socks-proxy (2015-10-26) 1 commit
 - remote-http(s): support SOCKS proxies

 Add support for talking http/https over socks proxy.

 Will merge to 'next'.


* rs/pop-commit (2015-10-26) 1 commit
 - use pop_commit() for consuming the first entry of a struct commit_list

 Code simplification.

 Will merge to 'next'.


* xf/user-manual-ff (2015-10-26) 1 commit
 - user-manual: fix the description of fast-forward

 Will merge to 'next'.

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

* dk/gc-idx-wo-pack (2015-08-17) 3 commits
 - DONTMERGE: log message, grace-period and tests $gmane/276058
 - gc: remove stale .idx files without corresponding .pack file
 - prepare_packed_git(): refactor garbage reporting in pack directory

 Having a leftover .idx file without corresponding .pack file in
 the repository hurts performance; "git gc" learned to prune them.

 Waiting for a reroll.


* nd/ita-cleanup (2015-09-06) 6 commits
 - grep: make it clear i-t-a entries are ignored
 - checkout(-index): do not checkout i-t-a entries
 - apply: make sure check_preimage() does not leave empty file on error
 - apply: fix adding new files on i-t-a entries
 - add and use a convenience macro ce_intent_to_add()
 - blame: remove obsolete comment

 Paths that have been told the index about with "add -N" are not yet
 in the index, but various commands behaved as if they already are.

 Some commits need better explanation.

 Waiting for a reroll.


* ld/p4-detached-head (2015-09-09) 2 commits
 - git-p4: work with a detached head
 - git-p4: add failing test for submit from detached head

 Will be rerolled.
 ($gmane/277574)


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962

 Becoming tired of waiting for a reroll.
 with updated log message ($gmane/268061).


* wp/sha1-name-negative-match (2015-06-08) 2 commits
 - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
 - test for '!' handling in rev-parse's named commits

 Introduce "branch^{/!-<pattern>}" notation to name a commit
 reachable from branch that does not match the given pattern.

 Becoming tired of waiting for a reroll.
 ($gmane/271213).


* ak/format-patch-odir-config (2015-06-19) 1 commit
 - format-patch: introduce format.outputDirectory configuration

 Reroll exists but didn't pick it up as it seemed to be still
 collecting review comments.

 Becoming tired of waiting for a reroll.
 ($gmane/272180).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.

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

* ar/clone-dissociate (2015-10-22) 1 commit
  (merged to 'next' on 2015-10-23 at 6bf746f)
 + clone: allow "--dissociate" without reference

 "git clone --dissociate" used to require that "--reference" was
 used at the same time, but you can create a new repository that
 borrows objects from another without using "--reference", namely
 with "clone --local" from a repository that borrows objects from
 other repositories.

 Will merge to 'master'.


* da/difftool (2015-10-21) 1 commit
 - difftool: gracefully handle symlinks to directories

 The code to reuse checked out files for comparison was too
 aggressive and forgot that symbolic links cannot be reused
 for comparison.

 Smells wrong that this special-cases based on the target of
 symbolic link.


* dt/name-hash-dir-entry-fix (2015-10-21) 1 commit
  (merged to 'next' on 2015-10-22 at 15eb519)
 + name-hash: don't reuse cache_entry in dir_entry

 The name-hash subsystem that is used to cope with case insensitive
 filesystems keeps track of directories and their on-filesystem
 cases for all the paths in the index by holding a pointer to a
 randomly chosen cache entry that is inside the directory (for its
 ce->ce_name component).  This pointer was not updated even when the
 cache entry was removed from the index, leading to use after free.
 This was fixed by recording the path for each directory instead of
 borrowing cache entries and restructuring the API somewhat.

 Will merge to 'master'.


* jc/everyday-markup (2015-10-22) 1 commit
  (merged to 'next' on 2015-10-22 at 0a2702d)
 + Documentation/everyday: match undefline with the text

 AsciiDoc markup fixes.

 Will merge to 'master'.


* tk/sigchain-unnecessary-post-tempfile (2015-10-22) 4 commits
  (merged to 'next' on 2015-10-22 at b049f0a)
 + shallow: remove unused #include "sigchain.h"
 + read-cache: remove unused #include "sigchain.h"
 + diff: remove unused #include "sigchain.h"
 + credential-cache--daemon: remove unused #include "sigchain.h"

 Remove no-longer used #include.

 Will merge to 'master'.


* xf/user-manual-markup (2015-10-22) 3 commits
  (merged to 'next' on 2015-10-22 at cd33c83)
 + Documentation: match undefline with the text in old release notes
 + Documentation: match underline with the text
 + Documentation: fix header markup

 AsciiDoc markup fixes.

 Will merge to 'master'.


* jc/em-dash-in-doc (2015-10-22) 1 commit
  (merged to 'next' on 2015-10-23 at 31a08ce)
 + Documentation: AsciiDoc spells em-dash as double-dashes, not triple

 AsciiDoc markup fixes.

 Will merge to 'master'.


* mh/notes-allow-reading-treeish (2015-10-08) 3 commits
  (merged to 'next' on 2015-10-23 at 8a697f0)
 + notes: allow treeish expressions as notes ref
 + Merge branch 'jk/notes-dwim-doc' into next
 + Merge branch 'jc/merge-drop-old-syntax' into next
 (this branch uses jc/merge-drop-old-syntax.)

 Some "git notes" operations, e.g. "git log --notes=<note>", should
 be able to read notes from any tree-ish that is shaped like a notes
 tree, but the notes infrastructure required that the argument must
 be a ref under refs/notes/.  Loosen it to require a valid ref only
 when the operation would update the notes (in which case we must
 have a place to store the updated notes tree, iow, a ref).

 Will cook in 'next'.


* dt/refs-backend-pre-vtable (2015-10-15) 26 commits
 - refs: break out ref conflict checks
 - refs: make files_log_ref_write functions public
 - initdb: move safe_create_dir into common code
 - refs.c: move should_autocreate_reflog to common code
 - refs.c: move peel_object to the common code
 - refs.c: move copy_msg to the common code
 - refs.c: move refname_is_safe to the common code
 - refs: move transaction functions into common code
 - refs.c: move head_ref_namespaced to the common code
 - refs.c: move ref iterators to the common code
 - refs.c: move prettify_refname to the common code
 - refs.c: move is_branch to the common code
 - refs.c: move check_refname_format to the common code
 - refs.c: move resolve_refdup to common
 - refs.c: move read_ref, read_ref_full and ref_exists to the common code
 - refs.c: move warn_if_dangling_symref* to the common code
 - refs.c: move dwim and friend functions to the common refs code
 - refs.c: move the hidden refs functions to the common code
 - refs.c: move read_ref_at to the common refs file
 - refs.c: move delete_pseudoref and delete_ref to the common code
 - refs.c: move update_ref to refs.c
 - refs.c: add a new refs.c file to hold all common refs code
 - refs-be-files.c: rename refs to refs-be-files
 - refs: make repack_without_refs and is_branch public
 - refs.c: create a public version of verify_refname_available
 - Merge branch 'jk/war-on-sprintf' into HEAD

 The early part of the pluggable ref backend series, which sifts the
 ref API functions into two bins: the filesystem backend specific
 ones and the generic API functions.  The next step will start
 introducing the framework to dispatch generic calls to specific
 backend implementation(s) and then finally plug a new backend that
 is different from the file backend.

 Expecting a reroll after an review of the remainder.
 ($gmane/279897).


* jc/mailinfo (2015-10-21) 1 commit
 - mailinfo: ignore in-body header that we do not care about
 (this branch uses jc/am-mailinfo-direct and jc/mailinfo-lib.)

 Some people write arbitrary garbage at the beginning of a piece of
 e-mail (or after -- >8 -- scissors -- >8 -- line) in the commit log
 message and expect them to be discarded, even though "From:" and
 "Subject:" are the only documented in-body headers that you are
 supposed to have there.  Allow some garbage (specifically, what may
 look like RFC2822 headers like "MIME-Version: ...") to be there and
 ignore them.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* jc/am-mailinfo-direct (2015-10-21) 1 commit
  (merged to 'next' on 2015-10-22 at ca15014)
 + am: make direct call to mailinfo
 (this branch is used by jc/mailinfo; uses jc/mailinfo-lib.)

 "git am" used to spawn "git mailinfo" via run_command() API once
 per each patch, but learned to make a direct call to mailinfo()
 instead.

 Will merge to 'master'.


* jc/mailinfo-lib (2015-10-21) 34 commits
  (merged to 'next' on 2015-10-22 at 405bd66)
 + mailinfo: remove calls to exit() and die() deep in the callchain
 + mailinfo: handle charset conversion errors in the caller
 + mailinfo: libify
 + mailinfo: keep the parsed log message in a strbuf
 + mailinfo: handle_commit_msg() shouldn't be called after finding patchbreak
 + mailinfo: move content/content_top to struct mailinfo
 + mailinfo: move [ps]_hdr_data to struct mailinfo
 + mailinfo: move cmitmsg and patchfile to struct mailinfo
 + mailinfo: move charset to struct mailinfo
 + mailinfo: move transfer_encoding to struct mailinfo
 + mailinfo: move check for metainfo_charset to convert_to_utf8()
 + mailinfo: move metainfo_charset to struct mailinfo
 + mailinfo: move use_scissors and use_inbody_headers to struct mailinfo
 + mailinfo: move add_message_id and message_id to struct mailinfo
 + mailinfo: move patch_lines to struct mailinfo
 + mailinfo: move filter/header stage to struct mailinfo
 + mailinfo: move global "FILE *fin, *fout" to struct mailinfo
 + mailinfo: move keep_subject & keep_non_patch_bracket to struct mailinfo
 + mailinfo: introduce "struct mailinfo" to hold globals
 + mailinfo: move global "line" into mailinfo() function
 + mailinfo: do not let find_boundary() touch global "line" directly
 + mailinfo: do not let handle_boundary() touch global "line" directly
 + mailinfo: do not let handle_body() touch global "line" directly
 + mailinfo: get rid of function-local static states
 + mailinfo: move definition of MAX_HDR_PARSED closer to its use
 + mailinfo: move cleanup_space() before its users
 + mailinfo: move check_header() after the helpers it uses
 + mailinfo: move read_one_header_line() closer to its callers
 + mailinfo: move handle_boundary() lower
 + mailinfo: plug strbuf leak during continuation line handling
 + mailinfo: explicitly close file handle to the patch output
 + mailinfo: fix an off-by-one error in the boundary stack
 + mailinfo: fold decode_header_bq() into decode_header()
 + mailinfo: remove a no-op call convert_to_utf8(it, "")
 (this branch is used by jc/am-mailinfo-direct and jc/mailinfo.)

 The implementation of "git mailinfo" was refactored so that a
 mailinfo() function can be directly called from inside a process.

 Will merge to 'master'.


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
  (merged to 'next' on 2015-10-23 at dc631e5)
 + am: make a direct call to merge_recursive
 + merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Will cook in 'next'.


* sg/pretty-more-date-mode-format (2015-10-07) 1 commit
 - pretty: add format specifiers for short and raw date formats

 Introduce "%as" and "%aR" placeholders for "log --format" to show
 the author date in the short and raw formats.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* kn/for-each-branch-remainder (2015-10-02) 9 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: adopt get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: add support for %(path) atom
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: implement %(if), %(then), and %(else) atoms

 More unification among "branch -l", "tag -l" and "for-each-ref --format".

 Expecting a reroll.
 ($gmane/278926)


* rp/link-curl-before-ssl (2015-10-21) 3 commits
  (merged to 'next' on 2015-10-22 at dad4fc6)
 + configure.ac: detect ssl need with libcurl
 + Makefile: make curl-config path configurable
 + Makefile: link libcurl before zlib

 The linkage order of libraries was wrong in places around libcurl.

 Will merge to 'master'.


* jk/graph-format-padding (2015-09-14) 1 commit
 - pretty: pass graph width to pretty formatting for use in '%>|(N)'

 Redefine the way '%>|(N)' padding and the "--graph" option
 interacts.  It has been that the available columns to display the
 log message was measured from the edge of the area the graph ended,
 but with this it becomes the beginning of the entire output.

 I have a suspicion that 50% of the users would appreciate this
 change, and the remainder see this break their expectation.  If
 that is the case, we might need to introduce a similar but
 different alignment operator so that this new behaviour is
 available to those who want to use it, without negatively affecting
 existing uses.

 Undecided.
 ($gmane/278326)


* sb/submodule-parallel-fetch (2015-10-23) 18 commits
 - (NEEDSWORK) clone: allow an explicit argument for parallel submodule clones
 - submodule update: expose parallelism to the user
 - git submodule update: have a dedicated helper for cloning
 - submodule config: keep update strategy around
  (merged to 'next' on 2015-10-23 at 8f04bbd)
 + run-command: fix missing output from late callbacks
 + test-run-command: increase test coverage
 + test-run-command: test for gracefully aborting
 + run-command: initialize the shutdown flag
 + run-command: clear leftover state from child_process structure
 + run-command: fix early shutdown
  (merged to 'next' on 2015-10-15 at df63590)
 + submodules: allow parallel fetching, add tests and documentation
 + fetch_populated_submodules: use new parallel job processing
 + run-command: add an asynchronous parallel child processor
 + sigchain: add command to pop all common signals
 + strbuf: add strbuf_read_once to read without blocking
 + xread_nonblock: add functionality to read from fds without blocking
 + xread: poll on non blocking fds
 + submodule.c: write "Fetching submodule <foo>" to stderr

 Add a framework to spawn a group of processes in parallel, and use
 it to run "git fetch --recurse-submodules" in parallel.

 Will cook in 'next'.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2015-09-14) 7 commits
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
  (merged to 'next' on 2015-10-07 at 50fed71)
 + merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch is used by mh/notes-allow-reading-treeish.)

 Originally merged to 'next' on 2015-05-28

 Stop supporting "git merge <message> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will keep in 'next' during the 2.7 cycle.

--------------------------------------------------
[Discarded]

* km/cache-entry-refcnt (2015-10-14) 1 commit
 . merge: fix cache_entry use-after-free

 Made unnecessary with dt/name-hash-dir-entry-fix topic.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Oct 2015, #07; Fri, 30)
@ 2015-10-30 22:07  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-30 22:07 UTC (permalink / raw)
  To: git

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

At tinyurl.com/gitCal, I drew a 14-week schedule for this cycle.  I
plan to be offline during weeks #7-#9 myself; hopefully we'll have
capable interim maintainers to take care of the list traffic in the
meantime as in past years.

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

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

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

* ar/clone-dissociate (2015-10-22) 1 commit
  (merged to 'next' on 2015-10-23 at 6bf746f)
 + clone: allow "--dissociate" without reference

 "git clone --dissociate" used to require that "--reference" was
 used at the same time, but you can create a new repository that
 borrows objects from another without using "--reference", namely
 with "clone --local" from a repository that borrows objects from
 other repositories.


* dt/name-hash-dir-entry-fix (2015-10-21) 1 commit
  (merged to 'next' on 2015-10-22 at 15eb519)
 + name-hash: don't reuse cache_entry in dir_entry

 The name-hash subsystem that is used to cope with case insensitive
 filesystems keeps track of directories and their on-filesystem
 cases for all the paths in the index by holding a pointer to a
 randomly chosen cache entry that is inside the directory (for its
 ce->ce_name component).  This pointer was not updated even when the
 cache entry was removed from the index, leading to use after free.
 This was fixed by recording the path for each directory instead of
 borrowing cache entries and restructuring the API somewhat.


* gr/rebase-i-drop-warn (2015-10-28) 2 commits
  (merged to 'next' on 2015-10-29 at 4bfda25)
 + rebase-i: work around Windows CRLF line endings
 + t3404: "rebase -i" gets broken when insn sheet uses CR/LF line endings

 Recent update to "rebase -i" that tries to sanity check the edited
 insn sheet before it uses it has become too picky on Windows where
 CRLF left by the editor is turned into a trailing CR on the line
 read via the "read" built-in command.


* jc/add-u-A-default-to-top (2015-10-24) 1 commit
  (merged to 'next' on 2015-10-29 at 15aea9c)
 + add: simplify -u/-A without pathspec

 "git --literal-pathspecs add -u/-A" without any command line
 argument misbehaved ever since Git 2.0.


* jc/am-mailinfo-direct (2015-10-21) 1 commit
  (merged to 'next' on 2015-10-22 at ca15014)
 + am: make direct call to mailinfo
 (this branch is used by jc/mailinfo; uses jc/mailinfo-lib.)

 "git am" used to spawn "git mailinfo" via run_command() API once
 per each patch, but learned to make a direct call to mailinfo()
 instead.


* jc/em-dash-in-doc (2015-10-22) 1 commit
  (merged to 'next' on 2015-10-23 at 31a08ce)
 + Documentation: AsciiDoc spells em-dash as double-dashes, not triple

 AsciiDoc markup fixes.


* jc/everyday-markup (2015-10-22) 1 commit
  (merged to 'next' on 2015-10-22 at 0a2702d)
 + Documentation/everyday: match undefline with the text

 AsciiDoc markup fixes.


* jc/mailinfo-lib (2015-10-21) 34 commits
  (merged to 'next' on 2015-10-22 at 405bd66)
 + mailinfo: remove calls to exit() and die() deep in the callchain
 + mailinfo: handle charset conversion errors in the caller
 + mailinfo: libify
 + mailinfo: keep the parsed log message in a strbuf
 + mailinfo: handle_commit_msg() shouldn't be called after finding patchbreak
 + mailinfo: move content/content_top to struct mailinfo
 + mailinfo: move [ps]_hdr_data to struct mailinfo
 + mailinfo: move cmitmsg and patchfile to struct mailinfo
 + mailinfo: move charset to struct mailinfo
 + mailinfo: move transfer_encoding to struct mailinfo
 + mailinfo: move check for metainfo_charset to convert_to_utf8()
 + mailinfo: move metainfo_charset to struct mailinfo
 + mailinfo: move use_scissors and use_inbody_headers to struct mailinfo
 + mailinfo: move add_message_id and message_id to struct mailinfo
 + mailinfo: move patch_lines to struct mailinfo
 + mailinfo: move filter/header stage to struct mailinfo
 + mailinfo: move global "FILE *fin, *fout" to struct mailinfo
 + mailinfo: move keep_subject & keep_non_patch_bracket to struct mailinfo
 + mailinfo: introduce "struct mailinfo" to hold globals
 + mailinfo: move global "line" into mailinfo() function
 + mailinfo: do not let find_boundary() touch global "line" directly
 + mailinfo: do not let handle_boundary() touch global "line" directly
 + mailinfo: do not let handle_body() touch global "line" directly
 + mailinfo: get rid of function-local static states
 + mailinfo: move definition of MAX_HDR_PARSED closer to its use
 + mailinfo: move cleanup_space() before its users
 + mailinfo: move check_header() after the helpers it uses
 + mailinfo: move read_one_header_line() closer to its callers
 + mailinfo: move handle_boundary() lower
 + mailinfo: plug strbuf leak during continuation line handling
 + mailinfo: explicitly close file handle to the patch output
 + mailinfo: fix an off-by-one error in the boundary stack
 + mailinfo: fold decode_header_bq() into decode_header()
 + mailinfo: remove a no-op call convert_to_utf8(it, "")
 (this branch is used by jc/am-mailinfo-direct and jc/mailinfo.)

 The implementation of "git mailinfo" was refactored so that a
 mailinfo() function can be directly called from inside a process.


* jk/delete-modechange-conflict (2015-10-26) 3 commits
  (merged to 'next' on 2015-10-29 at 59ce69d)
 + merge: detect delete/modechange conflict
 + t6031: generalize for recursive and resolve strategies
 + t6031: move triple-rename test to t3030

 Merging a branch that removes a path and another that changes the
 mode bits on the same path should have conflicted at the path, but
 it didn't and silently favoured the removal.


* jk/merge-file-exit-code (2015-10-29) 1 commit
  (merged to 'next' on 2015-10-29 at 6ae613f)
 + merge-file: clamp exit code to maximum 127

 "git merge-file" tried to signal how many conflicts it found, which
 obviously would not work well when there are too many of them.


* jk/war-on-sprintf (2015-10-23) 2 commits
  (merged to 'next' on 2015-10-23 at 3a94851)
 + compat/mingw.c: remove printf format warning
 + read_branches_file: plug a FILE* leak


* js/imap-send-curl-compilation-fix (2015-10-26) 1 commit
  (merged to 'next' on 2015-10-29 at 9c4f3eb)
 + imap-send: only use CURLOPT_LOGIN_OPTIONS if it is actually available

 "git imap-send" did not compile well with older version of cURL library.


* js/misc-fixes (2015-10-26) 3 commits
  (merged to 'next' on 2015-10-29 at 8990f29)
 + Correct fscanf formatting string for I64u values
 + Silence GCC's "cast of pointer to integer of a different size" warning
 + Squelch warning about an integer overflow

 Various compilation fixes and squelching of warnings.


* mk/blame-error-message (2015-10-26) 1 commit
  (merged to 'next' on 2015-10-29 at 82a1b18)
 + blame: fix option name in error message

 The error message from "git blame --contents --reverse" incorrectly
 talked about "--contents --children".


* rp/link-curl-before-ssl (2015-10-21) 3 commits
  (merged to 'next' on 2015-10-22 at dad4fc6)
 + configure.ac: detect ssl need with libcurl
 + Makefile: make curl-config path configurable
 + Makefile: link libcurl before zlib

 The linkage order of libraries was wrong in places around libcurl.


* rs/pop-commit (2015-10-26) 1 commit
  (merged to 'next' on 2015-10-29 at f24d8ed)
 + use pop_commit() for consuming the first entry of a struct commit_list

 Code simplification.


* tk/sigchain-unnecessary-post-tempfile (2015-10-22) 4 commits
  (merged to 'next' on 2015-10-22 at b049f0a)
 + shallow: remove unused #include "sigchain.h"
 + read-cache: remove unused #include "sigchain.h"
 + diff: remove unused #include "sigchain.h"
 + credential-cache--daemon: remove unused #include "sigchain.h"

 Remove no-longer used #include.


* xf/user-manual-ff (2015-10-26) 1 commit
  (merged to 'next' on 2015-10-29 at 488c4f8)
 + user-manual: fix the description of fast-forward


* xf/user-manual-markup (2015-10-22) 3 commits
  (merged to 'next' on 2015-10-22 at cd33c83)
 + Documentation: match undefline with the text in old release notes
 + Documentation: match underline with the text
 + Documentation: fix header markup

 AsciiDoc markup fixes.

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

* sb/submodule-parallel-update (2015-10-29) 9 commits
 - clone: allow an explicit argument for parallel submodule clones
 - submodule update: expose parallelism to the user
 - git submodule update: have a dedicated helper for cloning
 - fetching submodules: respect `submodule.jobs` config option
 - submodule config: update parse_config()
 - submodule config: remove name_and_item_from_var
 - submodule config: keep update strategy around
 - run_processes_parallel: add output to tracing messages
 - Merge branch 'sb/submodule-parallel-fetch' into sb/submodule-parallel-update
 (this branch uses sb/submodule-parallel-fetch.)

 Builds on top of the "fetch --recurse-submodules" work to introduce
 parallel downloading into multiple submodules for "submodule update".

 Waiting for reviews.


* jc/strbuf-gets (2015-10-28) 17 commits
 - test-sha1-array: read command stream with strbuf_gets()
 - grep: read -f file with strbuf_gets()
 - send-pack: read list of refs with strbuf_gets()
 - column: read lines with strbuf_gets()
 - cat-file: read batch stream with strbuf_gets()
 - transport-helper: read helper response with strbuf_gets()
 - clone/sha1_file: read info/alternates with strbuf_gets()
 - remote.c: read $GIT_DIR/remotes/* with strbuf_gets()
 - ident.c: read /etc/mailname with strbuf_gets()
 - rev-parse: read parseopt spec with strbuf_gets()
 - revision: read --stdin with strbuf_gets()
 - hash-object: read --stdin-paths with strbuf_gets()
 - mktree: read textual tree representation with strbuf_gets()
 - update-index: read list of paths with strbuf_gets() under --stdin
 - update-index: read --index-info with strbuf_gets()
 - check-attr, check-ignore, checkout-index: read paths with strbuf_gets()
 - strbuf: add strbuf_gets()

 Teach codepaths that communicate with users by reading text files
 to be more lenient to editors that write CRLF-terminated lines.
 Note that this is only about communication with Git, like feeding
 list of object names from the standard input instead of from the
 command line, and does not involve files in the working tree.

 Waiting for reviews.


* eg/p4-submit-catch-failure (2015-10-30) 1 commit
 - git-p4: clean up after p4 submit failure

 Just like the working tree is cleaned up when the user cancelled
 submission in P4Submit.applyCommit(), clean up the mess if "p4
 submit" fails.

 Needs an update to test.


* jk/initialization-fix-to-add-submodule-odb (2015-10-28) 1 commit
 - add_submodule_odb: initialize alt_odb list earlier

 We peek objects from submodule's object store by linking it to the
 list of alternate object databases, but the code to do so forgot to
 correctly initialize the list.

 Will merge to 'next'.


* ep/ident-with-getaddrinfo (2015-10-30) 1 commit
 - (NEEDSWORK $gmane/280507) ident.c: add support for IPv6

 A build without NO_IPv6 used to use gethostbyname() when guessing
 user's hostname, instead of getaddrinfo() that is used in other
 codepaths in such a build.
 
 Waiting for a reroll.
 ($gmane/280507)


* js/git-gdb (2015-10-30) 1 commit
 - test: facilitate debugging Git executables in tests with gdb

 Allow easier debugging of a single "git" invocation in our test
 scripts.

 Will merge to 'next'.


* kn/for-each-branch (2015-10-30) 1 commit
 - ref-filter: fallback on alphabetical comparison

 Using the timestamp based criteria in "git branch --sort" did not
 tiebreak branches that point at commits with the same timestamp (or
 the same commit), making the resulting output unstable.

 Will merge to 'next' and then quickly to 'master'.


* ea/checkout-progress (2015-10-30) 2 commits
 - SQUASH???
 - checkout: add --progress option

 "git checkout" did not follow the usual "--[no-]progress"
 convention and implemented only "--quiet" that is essentially
 "--no-progress".

 Waiting for a reroll.


* jc/test-must-fail-with-sigpipe (2015-10-30) 1 commit
 - test: accept death by SIGPIPE as a valid failure mode

  Waiting for reviews.

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

* dk/gc-idx-wo-pack (2015-08-17) 3 commits
 - DONTMERGE: log message, grace-period and tests $gmane/276058
 - gc: remove stale .idx files without corresponding .pack file
 - prepare_packed_git(): refactor garbage reporting in pack directory

 Having a leftover .idx file without corresponding .pack file in
 the repository hurts performance; "git gc" learned to prune them.

 Waiting for a reroll.


* nd/ita-cleanup (2015-09-06) 6 commits
 - grep: make it clear i-t-a entries are ignored
 - checkout(-index): do not checkout i-t-a entries
 - apply: make sure check_preimage() does not leave empty file on error
 - apply: fix adding new files on i-t-a entries
 - add and use a convenience macro ce_intent_to_add()
 - blame: remove obsolete comment

 Paths that have been told the index about with "add -N" are not yet
 in the index, but various commands behaved as if they already are.

 Some commits need better explanation.

 Waiting for a reroll.


* ld/p4-detached-head (2015-09-09) 2 commits
 - git-p4: work with a detached head
 - git-p4: add failing test for submit from detached head

 Will be rerolled.
 ($gmane/277574)


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962

 Becoming tired of waiting for a reroll.
 with updated log message ($gmane/268061).


* wp/sha1-name-negative-match (2015-06-08) 2 commits
 - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
 - test for '!' handling in rev-parse's named commits

 Introduce "branch^{/!-<pattern>}" notation to name a commit
 reachable from branch that does not match the given pattern.

 Becoming tired of waiting for a reroll.
 ($gmane/271213).


* ak/format-patch-odir-config (2015-06-19) 1 commit
 - format-patch: introduce format.outputDirectory configuration

 Reroll exists but didn't pick it up as it seemed to be still
 collecting review comments.

 Becoming tired of waiting for a reroll.
 ($gmane/272180).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.

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

* pt/http-socks-proxy (2015-10-26) 1 commit
 - remote-http(s): support SOCKS proxies

 Add support for talking http/https over socks proxy.

 Will merge to 'next'.


* da/difftool (2015-10-29) 1 commit
 - difftool: ignore symbolic links in use_wt_file

 The code to prepare the working tree side of temporary directory
 for the "dir-diff" feature forgot that symbolic links need not be
 copied (or symlinked) to the temporary area, as the code already
 special cases and overwrites them.  Besides, it was wrong to try
 computing the object name of the target of symbolic link, which may
 not even exist or may be a directory.

 Waiting for response.


* mh/notes-allow-reading-treeish (2015-10-08) 3 commits
  (merged to 'next' on 2015-10-23 at 8a697f0)
 + notes: allow treeish expressions as notes ref
 + Merge branch 'jk/notes-dwim-doc' into next
 + Merge branch 'jc/merge-drop-old-syntax' into next
 (this branch uses jc/merge-drop-old-syntax.)

 Some "git notes" operations, e.g. "git log --notes=<note>", should
 be able to read notes from any tree-ish that is shaped like a notes
 tree, but the notes infrastructure required that the argument must
 be a ref under refs/notes/.  Loosen it to require a valid ref only
 when the operation would update the notes (in which case we must
 have a place to store the updated notes tree, iow, a ref).

 Will cook in 'next'.


* dt/refs-backend-pre-vtable (2015-10-15) 26 commits
 - refs: break out ref conflict checks
 - refs: make files_log_ref_write functions public
 - initdb: move safe_create_dir into common code
 - refs.c: move should_autocreate_reflog to common code
 - refs.c: move peel_object to the common code
 - refs.c: move copy_msg to the common code
 - refs.c: move refname_is_safe to the common code
 - refs: move transaction functions into common code
 - refs.c: move head_ref_namespaced to the common code
 - refs.c: move ref iterators to the common code
 - refs.c: move prettify_refname to the common code
 - refs.c: move is_branch to the common code
 - refs.c: move check_refname_format to the common code
 - refs.c: move resolve_refdup to common
 - refs.c: move read_ref, read_ref_full and ref_exists to the common code
 - refs.c: move warn_if_dangling_symref* to the common code
 - refs.c: move dwim and friend functions to the common refs code
 - refs.c: move the hidden refs functions to the common code
 - refs.c: move read_ref_at to the common refs file
 - refs.c: move delete_pseudoref and delete_ref to the common code
 - refs.c: move update_ref to refs.c
 - refs.c: add a new refs.c file to hold all common refs code
 - refs-be-files.c: rename refs to refs-be-files
 - refs: make repack_without_refs and is_branch public
 - refs.c: create a public version of verify_refname_available
 - Merge branch 'jk/war-on-sprintf' into HEAD

 The early part of the pluggable ref backend series, which sifts the
 ref API functions into two bins: the filesystem backend specific
 ones and the generic API functions.  The next step will start
 introducing the framework to dispatch generic calls to specific
 backend implementation(s) and then finally plug a new backend that
 is different from the file backend.

 Reroll exists, but haven't picked up yet.


* jc/mailinfo (2015-10-21) 1 commit
 - mailinfo: ignore in-body header that we do not care about

 Some people write arbitrary garbage at the beginning of a piece of
 e-mail (or after -- >8 -- scissors -- >8 -- line) in the commit log
 message and expect them to be discarded, even though "From:" and
 "Subject:" are the only documented in-body headers that you are
 supposed to have there.  Allow some garbage (specifically, what may
 look like RFC2822 headers like "MIME-Version: ...") to be there and
 ignore them.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
  (merged to 'next' on 2015-10-23 at dc631e5)
 + am: make a direct call to merge_recursive
 + merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Will keep in 'next' during the 2.7 cycle.


* sg/pretty-more-date-mode-format (2015-10-07) 1 commit
 - pretty: add format specifiers for short and raw date formats

 Introduce "%as" and "%aR" placeholders for "log --format" to show
 the author date in the short and raw formats.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* kn/for-each-branch-remainder (2015-10-02) 9 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: adopt get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: add support for %(path) atom
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: implement %(if), %(then), and %(else) atoms

 More unification among "branch -l", "tag -l" and "for-each-ref --format".

 Expecting a reroll.
 ($gmane/278926)


* jk/graph-format-padding (2015-09-14) 1 commit
 - pretty: pass graph width to pretty formatting for use in '%>|(N)'

 Redefine the way '%>|(N)' padding and the "--graph" option
 interacts.  It has been that the available columns to display the
 log message was measured from the edge of the area the graph ended,
 but with this it becomes the beginning of the entire output.

 I have a suspicion that 50% of the users would appreciate this
 change, and the remainder see this break their expectation.  If
 that is the case, we might need to introduce a similar but
 different alignment operator so that this new behaviour is
 available to those who want to use it, without negatively affecting
 existing uses.

 Undecided.
 ($gmane/278326)


* sb/submodule-parallel-fetch (2015-10-21) 14 commits
  (merged to 'next' on 2015-10-23 at 8f04bbd)
 + run-command: fix missing output from late callbacks
 + test-run-command: increase test coverage
 + test-run-command: test for gracefully aborting
 + run-command: initialize the shutdown flag
 + run-command: clear leftover state from child_process structure
 + run-command: fix early shutdown
  (merged to 'next' on 2015-10-15 at df63590)
 + submodules: allow parallel fetching, add tests and documentation
 + fetch_populated_submodules: use new parallel job processing
 + run-command: add an asynchronous parallel child processor
 + sigchain: add command to pop all common signals
 + strbuf: add strbuf_read_once to read without blocking
 + xread_nonblock: add functionality to read from fds without blocking
 + xread: poll on non blocking fds
 + submodule.c: write "Fetching submodule <foo>" to stderr
 (this branch is used by sb/submodule-parallel-update.)

 Add a framework to spawn a group of processes in parallel, and use
 it to run "git fetch --recurse-submodules" in parallel.

 Will cook in 'next'.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2015-09-14) 7 commits
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
  (merged to 'next' on 2015-10-07 at 50fed71)
 + merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch is used by mh/notes-allow-reading-treeish.)

 Originally merged to 'next' on 2015-05-28

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007.  It has been reported that
 git-gui still uses the deprecated syntax, which needs to be fixed
 before this final step can proceed.

 Will keep in 'next' during the 2.7 cycle.

--------------------------------------------------
[Discarded]

* km/cache-entry-refcnt (2015-10-14) 1 commit
 . merge: fix cache_entry use-after-free

 Made unnecessary with dt/name-hash-dir-entry-fix topic.

^ permalink raw reply	[relevance 2%]

Results 1-200 of ~2000   | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2005-06-08 23:07  3% [ANNOUNCE] Cogito-0.11.2 Petr Baudis
2005-09-25  8:36  2% GIT 0.99.7d, and end of week status Junio C Hamano
2006-01-11 23:47     merging initial part of a branch? Junio C Hamano
2006-01-12  0:55     ` J. Bruce Fields
2006-01-12  1:47       ` Junio C Hamano
2006-01-13  3:08         ` J. Bruce Fields
2006-01-13  4:00           ` Junio C Hamano
2006-01-13 15:10             ` J. Bruce Fields
2006-01-13 19:50               ` Junio C Hamano
2006-01-13 20:01                 ` J. Bruce Fields
     [not found]                   ` <20060115185458.GA3985@fieldses.org>
2006-01-15 23:26                     ` [PATCH] new tutorial Junio C Hamano
2006-01-23  4:57  6%                   ` J. Bruce Fields
2006-01-12  0:05 21% [PATCH] show-branch: make the current branch stand out Junio C Hamano
2006-03-25 22:26     Why would merge fail on a one-line addition? Marc Singer
2006-03-26  1:32  2% ` Junio C Hamano
2006-05-14 17:43     Allow one-way tree merge to remove old files Linus Torvalds
2006-05-14 18:20     ` Simplify "git reset --hard" Linus Torvalds
2006-05-15  6:55       ` Junio C Hamano
2006-05-15  7:08         ` Junio C Hamano
2006-05-15  7:46  2%       ` Junio C Hamano
2006-05-15 14:55  0%         ` Linus Torvalds
2006-06-10 21:16  2% [ANNOUNCE] GIT 1.4.0 Junio C Hamano
2006-06-22  8:44  1% [PATCH] rebase --merge: fix for rebasing more than 7 commits Junio C Hamano
2006-06-22  8:54  2% ` Junio C Hamano
2006-06-22 11:09  2%   ` Eric Wong
2006-06-24  7:09  2%     ` Junio C Hamano
2006-06-22 19:49  3% What's in git.git and announcing v1.4.1-rc1 Junio C Hamano
2006-07-02  6:33  3% [ANNOUNCE] GIT 1.4.1 Junio C Hamano
2006-10-29 19:32     Merging five months of Linux kernel history Jan-Benedict Glaw
2006-10-29 20:34  2% ` Junio C Hamano
2006-10-30  7:50  0%   ` Jan-Benedict Glaw
2006-12-06 21:18  3% What's in git.git (stable) Junio C Hamano
2006-12-13 21:35  3% Junio C Hamano
2007-02-05 11:34 14% [PATCH] core-tutorial: git-merge uses -m for commit messages Matthias Lederhofer
2007-04-16  1:27     What's in git.git (stable) Junio C Hamano
2007-04-18 23:58     ` Junio C Hamano
2007-04-22  6:22  3%   ` Junio C Hamano
2007-05-20  9:08  3% [ANNOUNCE] GIT 1.5.2 Junio C Hamano
2007-09-06  8:52     What's cooking in git.git (topics) Junio C Hamano
     [not found]     ` <7v1wd1d0le.fsf@gitster.siamese.dyndns.org>
2007-09-26 20:05  3%   ` Junio C Hamano
2007-09-26 21:44  0%     ` Johannes Schindelin
2007-09-27  2:36  0%     ` Jeff King
2007-10-02  5:53  2%     ` Junio C Hamano
2007-09-23 22:51  2% [PATCH 0/6] per branch options for git-merge Lars Hjemli
2007-09-23 22:51     ` [PATCH 1/6] Add test-script for git-merge porcelain Lars Hjemli
2007-09-23 22:51  2%   ` [PATCH 2/6] git-merge: fix faulty SQUASH_MSG Lars Hjemli
2007-10-30 19:54 14% [PATCH] core-tutorial: Use new syntax for git-merge Sergei Organov
2007-10-30 20:05  0% ` Junio C Hamano
2007-11-02 17:12 13% [PATCH] Documentation: quote commit messages consistently Sergei Organov
2007-12-06  4:49     When a merge turns into a conflict Anand Kumria
2007-12-06  5:51  2% ` Junio C Hamano
2008-01-12 22:46     performance problem: "git commit filename" Linus Torvalds
2008-01-13  1:46     ` Linus Torvalds
2008-01-13  4:04       ` Linus Torvalds
2008-01-13  8:12         ` Junio C Hamano
2008-01-13 10:33           ` Junio C Hamano
2008-01-13 11:09  2%         ` Junio C Hamano
2008-03-09 10:46     What's cooking in git.git (topics) Junio C Hamano
2008-04-04 18:24     ` Junio C Hamano
2008-04-09  9:43       ` Junio C Hamano
2008-04-14  7:00         ` Junio C Hamano
2008-04-19  8:19           ` Junio C Hamano
2008-04-22 10:03             ` Junio C Hamano
2008-04-27  6:04               ` Junio C Hamano
2008-05-06  6:38                 ` Junio C Hamano
2008-05-14 22:30                   ` Junio C Hamano
2008-05-22  1:18                     ` Junio C Hamano
2008-05-26  1:22                       ` Junio C Hamano
2008-05-30 20:44                         ` Junio C Hamano
2008-06-02  7:58                           ` Junio C Hamano
2008-06-13 10:16                             ` Junio C Hamano
2008-06-18  7:31                               ` Junio C Hamano
2008-06-21  9:44                                 ` Junio C Hamano
2008-06-23  7:15                                   ` Junio C Hamano
2008-06-25  9:31                                     ` Junio C Hamano
2008-06-29  8:55                                       ` Junio C Hamano
2008-06-30  9:08                                         ` Junio C Hamano
2008-07-02  4:41                                           ` Junio C Hamano
2008-07-06 10:04  2%                                         ` Junio C Hamano
2008-07-08  2:46  2%                                           ` Junio C Hamano
2008-07-10  2:32  2%                                             ` Junio C Hamano
2008-07-14  5:11  2%                                               ` Junio C Hamano
2008-07-16  3:33  2%                                                 ` Junio C Hamano
2008-08-23  9:01     [PATCH] builtin-merge: fail properly when we are in the middle of a conflicted merge Junio C Hamano
2008-08-23 10:57     ` Miklos Vajna
2008-08-23 19:55  2%   ` Junio C Hamano
2008-08-23 19:56  2%     ` [PATCH 1/2] merge: fix numerus bugs around "trivial merge" area Junio C Hamano
2008-08-24  1:58  3%       ` Junio C Hamano
2008-08-24  3:38  3% What's cooking in git.git (Aug 2008, #07; Sat, 23) Junio C Hamano
2008-08-28  2:54  3% What's cooking in git.git (Aug 2008, #08; Wed, 27) Junio C Hamano
2008-08-28  3:01  3% What's in git.git (Aug 2008, #07; " Junio C Hamano
2008-09-25  0:58     having to pull twice Michael P. Soulier
2008-09-25  1:01     ` Shawn O. Pearce
2008-09-25  7:05       ` Thomas Rast
2008-09-25 23:25  2%     ` Miklos Vajna
2008-09-27 14:16  0%       ` Thomas Rast
2009-01-29  6:24     Something weird is happening H. Peter Anvin
2009-01-29  6:56     ` Junio C Hamano
     [not found]       ` <20090129113846.GA10645@elte.hu>
2009-01-29 12:05         ` Ingo Molnar
2009-01-31 14:39  2%       ` [PATCH] merge: fix out-of-bounds memory access René Scharfe
2009-02-02  8:05  2% What's in git.git (Feb 2009, #01; Sun, 01) Junio C Hamano
2009-02-07 21:54  2% [ANNOUNCE] GIT 1.6.1.3 Junio C Hamano
2009-04-13 18:10  2% [PATCH] builtin-merge: fix a typo in an error message Allan Caffee
2009-04-13 21:41  2% ` Allan Caffee
2009-04-13 23:12  2% ` Miklos Vajna
2009-04-27 15:41  2%   ` Allan Caffee
2009-04-27 16:37  2%     ` Junio C Hamano
2009-04-27  8:29     [ANNOUNCE] GIT 1.6.3.rc3 Junio C Hamano
2009-05-03 21:59  2% ` [ANNOUNCE] GIT 1.6.3.rc4 Junio C Hamano
2009-04-30  5:33  3% What's in git.git (Apr 2009, #02; Wed, 29) Junio C Hamano
2009-05-25  8:33  3% What's cooking in git.git (May 2009, #03; Mon, 25) Junio C Hamano
2009-06-01  1:24  2% What's cooking in git.git (May 2009, #04; Sun, 31) Junio C Hamano
2009-06-12  9:11  3% What's cooking in git.git (Jun 2009, #01; Fri, 12) Junio C Hamano
2009-08-09  6:59     [PATCH] merge: indicate remote tracking branches in merge message Jeff King
2009-08-09  7:31     ` Junio C Hamano
2009-08-09  7:40       ` Jeff King
2009-08-09  9:14         ` Jeff King
2009-08-09 10:00  3%       ` Jeff King
2009-08-09 10:02  2%         ` [PATCH 2/3] merge: fix incorrect merge message for ambiguous tag/branch Jeff King
2009-08-09 10:07  0%         ` [PATCH] merge: indicate remote tracking branches in merge message Jeff King
2009-08-09 19:36  0%           ` Junio C Hamano
2009-08-13  2:14  2% What's cooking in git.git (Aug 2009, #02; Wed, 12) Junio C Hamano
2009-08-21  2:48  2% What's cooking in git.git (Aug 2009, #03; Thu, 20) Junio C Hamano
2009-10-12  2:53  2% [PATCH] Aggressive three-way merge: fix D/F case Junio C Hamano
2009-10-12  3:18  2% What's cooking in git.git (Oct 2009, #02; Sun, 11) Junio C Hamano
2009-10-19  8:05  2% What's cooking in git.git (Oct 2009, #03; Mon, 19) Junio C Hamano
2009-10-22  6:52  2% What's cooking in git.git (Oct 2009, #04; Wed, 21) Junio C Hamano
2009-10-28 21:11  2% What's cooking in git.git (Oct 2009, #05; Wed, 28) Junio C Hamano
2009-10-31  4:04  2% What's cooking in git.git (Oct 2009, #06; Fri, 30) Junio C Hamano
2009-11-05  5:41  2% What's cooking in git.git (Nov 2009, #01; Wed, 04) Junio C Hamano
2009-11-09  5:18  2% What's cooking in git.git (Nov 2009, #02; Sun, 08) Junio C Hamano
2009-11-15 10:23  2% What's cooking in git.git (Nov 2009, #03; Sun, 15) Junio C Hamano
2009-11-18  7:53  2% What's cooking in git.git (Nov 2009, #04; Tue, 17) Junio C Hamano
2009-11-23  6:16  2% What's cooking in git.git (Nov 2009, #05; Sun, 22) Junio C Hamano
2009-11-25 16:31     Commiting changes onto more than one branch Mike Jarmy
2009-11-25 16:50  3% ` Jakub Narebski
2009-11-26  1:03  2% What's cooking in git.git (Nov 2009, #06; Wed, 25) Junio C Hamano
2009-11-29 10:05  2% What's cooking in git.git (Nov 2009, #07; Sun, 29) Junio C Hamano
2009-12-01 22:10  2% What's cooking in git.git (Dec 2009, #01; Tue, 01) Junio C Hamano
2009-12-06  8:17  2% What's cooking in git.git (Dec 2009, #02; Sat, 05) Junio C Hamano
2009-12-08  9:25  2% What's cooking in git.git (Dec 2009, #03; Tue, 08) Junio C Hamano
2009-12-10  7:11  2% What's cooking in git.git (Dec 2009, #04; Wed, 09) Junio C Hamano
2009-12-11 18:55     FEATURE REQUEST: Announce branch name with merge comamnd Jari Aalto
2009-12-12  0:38  2% ` [PATCH 1/3] octopus: make merge process simpler to follow Stephen Boyd
2009-12-12  8:53  0%   ` Junio C Hamano
2009-12-12 20:46     Junio C Hamano
2009-12-15  6:49  2% ` [PATCH] " Stephen Boyd
2009-12-15  7:32  0%   ` Junio C Hamano
2009-12-28  9:57  2% What's cooking in git.git (Dec 2009, #05; Mon, 28) Junio C Hamano
2010-01-01  0:10  2% What's cooking in git.git (Dec 2009, #06; Thu, 31) Junio C Hamano
2010-01-04  8:39  2% What's cooking in git.git (Jan 2010, #01; Mon, 04) Junio C Hamano
2010-01-06 22:22  2% What's cooking in git.git (Jan 2010, #02 draft; Wed, 06) Junio C Hamano
2010-01-06 22:25  2% ` Junio C Hamano
2010-01-08  7:42  2%   ` What's cooking in git.git (Jan 2010, #02; Thu, 07) Junio C Hamano
2010-01-10 19:55  2% What's cooking in git.git (Jan 2010, #03; Sun, 10) Junio C Hamano
2010-01-10 19:55  2% "What's cooking" incremental edition Junio C Hamano
2010-01-13 23:11  2% What's cooking in git.git (Jan 2010, #04; Wed, 13) Junio C Hamano
2010-01-17  2:46  2% What's cooking in git.git (Jan 2010, #05; Sat, 16) Junio C Hamano
2010-01-20 10:24  2% What's cooking in git.git (Jan 2010, #06 draft) Junio C Hamano
2010-01-21  0:52  2% What's cooking in git.git (Jan 2010, #06; Wed, 20) Junio C Hamano
2010-01-23  3:28  3% What's cooking in git.git (Jan 2010, #07; Fri, 22) Junio C Hamano
2010-01-25  4:39  2% What's cooking in git.git (Jan 2010, #08; Sun, 24) Junio C Hamano
2010-08-17  6:51  2% [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix) Jonathan Nieder
2010-08-17  7:04  2% ` [PATCH 15/24] merge script: improve log message subject Jonathan Nieder
2010-08-17  7:46  3% ` [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix) Ævar Arnfjörð Bjarmason
2010-08-17  8:10  3%   ` Jonathan Nieder
     [not found]     <AANLkTim3MacQK6EtTPNJsYbqb=5bOM3W3BXC6p=hT+PU@mail.gmail.com>
2010-11-09  5:37     ` Git automatic stashing? Casey McGinty
2010-11-09  7:49  2%   ` Matthieu Moy
2010-12-17  7:38     What's cooking in git.git (Dec 2010, #05; Thu, 16) Junio C Hamano
2010-12-17 11:18     ` conflict resolution of pd/bash-4-completion [Re: What's cooking in git.git (Dec 2010, #05; Thu, 16)] SZEDER Gábor
2010-12-17 19:24  3%   ` Junio C Hamano
2011-02-15  1:07  2% [PATCH] merge: honor prepare-commit-msg hook Jay Soffian
2011-02-15 21:36  0% ` Junio C Hamano
2011-04-15 17:21     git rebase -p doesn't understand -X Marius Storm-Olsen
2011-04-19  9:06     ` Martin von Zweigbergk
2011-04-20 23:40  2%   ` Jonathan Nieder
2011-05-03  9:03     [PATCH v3] Add default merge options for all branches Jonathan Nieder
2011-05-04 22:07     ` [PATCH v5] " Michael Grubb
2011-05-05  0:42  2%   ` Junio C Hamano
2011-05-06 20:36  0%     ` Junio C Hamano
2011-05-06 21:32  0%     ` Jonathan Nieder
2011-05-05  2:37  3% What's cooking in git.git (May 2011, #02; Wed, 4) Junio C Hamano
2011-05-06 23:22  3% What's cooking in git.git (May 2011, #03; Fri, 6) Junio C Hamano
2011-05-09  5:33     What's cooking in git.git (May 2011, #04; Sun, 8) Junio C Hamano
2011-05-09  8:55  2% ` Ciaran
2011-10-10  5:46     [PATCH 0/2] Provide API to invalidate refs cache Michael Haggerty
2011-10-10  8:24     ` [PATCH v2 0/7] " Michael Haggerty
2011-10-11  0:02       ` Junio C Hamano
2011-10-11  5:50         ` Michael Haggerty
2011-10-11 17:26  1%       ` Junio C Hamano
2012-07-28 15:01     [PATCH 0/3] null sha1 in trees Jeff King
2012-07-28 15:05     ` [PATCH 2/3] do not write null sha1s to on-disk index Jeff King
2012-12-29 10:03       ` Jonathan Nieder
2012-12-29 10:27         ` Jeff King
2012-12-29 10:34           ` Jonathan Nieder
2012-12-29 11:05             ` Jeff King
2012-12-29 20:51  1%           ` [BUG] two-way read-tree can write null sha1s into index Jeff King
2012-08-16 19:49     git workflow - merging upwards Patrick Sabin
2012-08-16 20:43  3% ` Junio C Hamano
2012-08-17  8:14  0%   ` Patrick Sabin
2012-11-13 17:52     What's cooking in git.git (Nov 2012, #03; Tue, 13) Jeff King
2012-11-13 20:01  2% ` Junio C Hamano
2012-12-20 17:37  1% [PATCH] oneway_merge(): only lstat() when told to update worktree Martin von Zweigbergk
2012-12-20 20:02  0% ` Junio C Hamano
2012-12-20 21:03  2%   ` [PATCH v2] " Martin von Zweigbergk
2012-12-29  7:22     [PATCH v2] wt-status: Show ignored files in untracked dirs Jeff King
2012-12-30 14:39     ` [PATCH 1/2] dir.c: Make git-status --ignored more consistent Antoine Pelisse
2012-12-30 14:54       ` Antoine Pelisse
2012-12-30 21:36  2%     ` Junio C Hamano
2013-01-03 20:40  6% [PATCH v2] Documentation: update "howto maintain git" Junio C Hamano
2013-03-28 21:43     [PATCH v2 0/6] attribute regression fix for maint-1.8.1 and upward Jeff King
2013-03-28 21:48     ` [PATCH 4/6] dir.c::match_pathname(): pay attention to the length of string parameters Jeff King
2013-03-29  8:45       ` Duy Nguyen
2013-03-29 12:05         ` Jeff King
2013-03-29 13:02           ` Duy Nguyen
2013-03-29 16:44  2%         ` Junio C Hamano
2013-03-29 17:04  0%           ` Jeff King
2013-03-29 17:35  0%             ` Junio C Hamano
2013-04-10 20:35     Premerging topics (was: [RFD] annnotating a pair of commit objects?) Antoine Pelisse
2013-04-23  6:34     ` Johan Herland
2013-04-23 14:51       ` Antoine Pelisse
2013-04-23 23:06         ` Johan Herland
2013-04-24  5:48  3%       ` Premerging topics Junio C Hamano
2013-04-24  6:22  3%         ` Johan Herland
2013-04-24  7:14               ` Junio C Hamano
2013-04-29 19:06  3%             ` Antoine Pelisse
2013-04-29 22:19  2%               ` Junio C Hamano
2013-04-23 14:53  3%   ` Junio C Hamano
2013-04-23 15:17  2%     ` Antoine Pelisse
2013-04-23 15:29  0%       ` Junio C Hamano
2013-04-23 15:36  0%         ` Antoine Pelisse
2013-07-30 15:46     ANNOUNCE: git-integration -- Easily manage integration branches John Keeping
2013-07-30 16:45     ` Junio C Hamano
2013-07-30 17:57  2%   ` John Keeping
     [not found]     <20131024122255.GI9378@mwanda>
     [not found]     ` <20131024122512.GB9534@mwanda>
     [not found]       ` <20131026181709.GB10488@kroah.com>
2013-10-27  1:34         ` [PATCH] commit: Add -f, --fixes <commit> option to add Fixes: line Josh Triplett
2013-10-28  0:49  2%       ` Jim Hill
2013-10-31 17:21     [BUG?] "error: cache entry has null sha1" Jeff King
2013-11-01 22:44     ` Re* " Junio C Hamano
2013-11-01 22:44  1%   ` [PATCH 1/3] unpack-trees: fix "read-tree -u --reset A B" with conflicted index Junio C Hamano
2013-12-03 18:06     Branching workflow Javier Domingo
2013-12-03 19:12  3% ` Junio C Hamano
2014-03-06 14:50  3% [PATCH 0/6] fix hunk editing with 'commit -p -m' Benoit Pierre
2014-03-06 14:50  2% ` [PATCH 3/6] merge: fix GIT_EDITOR override for commit hook Benoit Pierre
2014-03-10 18:49  3% [PATCH V2 0/7] fix hunk editing with 'commit -p -m' Benoit Pierre
2014-03-10 18:49  2% ` [PATCH 5/7] merge: fix GIT_EDITOR override for commit hook Benoit Pierre
2014-03-11 22:12  3% What's cooking in git.git (Mar 2014, #02; Tue, 11) Junio C Hamano
2014-03-14 22:09  3% What's cooking in git.git (Mar 2014, #03; Fri, 14) Junio C Hamano
2014-03-15  8:41     [PATCH 0/6] Fix misuses of "nor" Justin Lebar
2014-03-15  8:56  2% ` Duy Nguyen
2014-03-15 16:56  0%   ` Justin Lebar
2014-03-15 16:11     [PATCH 3/7] test patch hunk editing with "commit -p -m" Benoit Pierre
2014-03-15 21:42     ` [PATCH 1/7] merge hook tests: fix missing '&&' in test Benoit Pierre
2014-03-15 21:42  2%   ` [PATCH 5/7] merge: fix GIT_EDITOR override for commit hook Benoit Pierre
2014-03-17 18:53     [PATCH 3/7] test patch hunk editing with "commit -p -m" Junio C Hamano
2014-03-18 10:00     ` [PATCH 1/7] merge hook tests: fix missing '&&' in test Benoit Pierre
2014-03-18 10:00  2%   ` [PATCH 5/7] merge: fix GIT_EDITOR override for commit hook Benoit Pierre
2014-03-20 21:09  3% What's cooking in git.git (Mar 2014, #04; Thu, 20) Junio C Hamano
2014-03-24 20:27  3% What's cooking in git.git (Mar 2014, #05; Mon, 24) Junio C Hamano
2014-03-25 20:18  3% What's cooking in git.git (Mar 2014, #06; Tue, 25) Junio C Hamano
2014-03-28 22:21  3% What's cooking in git.git (Mar 2014, #07; Fri, 28) Junio C Hamano
2014-04-09 21:59  2% [ANNOUNCE] Git v1.9.2 Junio C Hamano
2014-05-07 15:40     Beginner question on "Pull is mostly evil" Jim Garrison
2014-05-07 20:15  2% ` Junio C Hamano
2014-05-09  6:08       ` [PATCH] How to keep a project's canonical history correct Stephen P. Smith
2014-05-09 21:05  1%     ` Junio C Hamano
2014-05-10  4:01  0%     ` Stephen & Linda Smith
2014-05-08  5:17     Stephen P. Smith
2014-05-08 18:37  0% ` Junio C Hamano
2014-06-15 22:39     git rebase --skip stuck in a loop brian m. carlson
2014-06-16  0:01  2% ` [PATCH] rebase--merge: fix --skip with two conflicts in a row brian m. carlson
2014-06-16 20:31  2%   ` Junio C Hamano
2014-06-18 17:25  2% What's cooking in git.git (Jun 2014, #04; Tue, 17) Junio C Hamano
2014-06-20 22:26  2% What's cooking in git.git (Jun 2014, #05; Fri, 20) Junio C Hamano
2014-06-26 22:02  2% What's cooking in git.git (Jun 2014, #06; Thu, 26) Junio C Hamano
2014-07-08 21:47  3% What's cooking in git.git (Jul 2014, #01; Tue, 8) Junio C Hamano
2014-07-16 22:02  2% [ANNOUNCE] Git v2.0.2 Junio C Hamano
2014-07-27 23:18  3% [ANNOUNCE] Git v2.1.0-rc0 Junio C Hamano
2014-08-11  4:59     Sharing merge conflict resolution between multiple developers Chris Packham
2014-08-11 18:44  3% ` Junio C Hamano
2014-08-11 23:29  2%   ` Chris Packham
2014-08-12  1:57  2%     ` Junio C Hamano
2014-08-12 18:13     [PATCH] unpack-tree.c: remove dead code Junio C Hamano
2014-08-12 21:15     ` Stefan Beller
2014-08-12 23:57       ` [PATCH 0/3] " Jonathan Nieder
2014-08-13  0:03  1%     ` [PATCH 3/3] checkout -m: attempt merge when deletion of path was staged Jonathan Nieder
2014-08-13  0:38  0%       ` Junio C Hamano
2014-10-15 12:39  2% [PATCH] git-svn: merge: fix rooturl/branchurl match check Tommaso Colombo
2014-10-20  6:24  2% ` Eric Wong
2015-10-02  4:25  3% [PATCH] merge: Fix English grammar in please-commit-before-merge message Alex Henrie
2015-10-08 18:47  5% [PATCH 0/1] merge: fix cache_entry use-after-free David Turner
2015-10-08 18:47  1% ` David Turner
2015-10-08 20:00  2%   ` Junio C Hamano
2015-10-09 22:16  2%     ` David Turner
2015-10-09 22:51  2%       ` Junio C Hamano
2015-10-12 22:03  1% [PATCH v2] " David Turner
2015-10-12 22:28  2% ` Junio C Hamano
2015-10-13 19:22  2%   ` David Turner
2015-10-13 21:05  2%     ` Junio C Hamano
2015-10-14 21:17  2% ` Junio C Hamano
2015-10-14 22:00  2%   ` David Turner
2015-10-14 22:07  1% [PATCH v3] " David Turner
2015-10-15  3:35  2% ` René Scharfe
2015-10-15 19:02  2%   ` David Turner
2015-10-15 20:38  2%     ` René Scharfe
2015-10-15 20:51  2%     ` Junio C Hamano
2015-10-16  7:05  2%       ` David Turner
2015-10-16 16:04  2%         ` Junio C Hamano
2015-10-19 22:27  2%           ` David Turner
2015-10-20  2:13  1%             ` Junio C Hamano
2015-10-14 22:23  2% What's cooking in git.git (Oct 2015, #03; Wed, 14) Junio C Hamano
2015-10-20 22:10  2% What's cooking in git.git (Oct 2015, #04; Tue, 20) Junio C Hamano
2015-10-22 20:51  3% What's cooking in git.git (Oct 2015, #05; Thu, 22) Junio C Hamano
2015-10-26 23:20  3% What's cooking in git.git (Oct 2015, #06; Mon, 26) Junio C Hamano
2015-10-30 22:07  2% What's cooking in git.git (Oct 2015, #07; Fri, 30) Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).