Git development
 help / color / mirror / Atom feed
* [PATCH 2/2] git-p4: Add copy detection support
From: Vitor Antunes @ 2011-01-30 23:19 UTC (permalink / raw)
  To: git; +Cc: Vitor Antunes
In-Reply-To: <1296429563-18390-1-git-send-email-vitor.hda@gmail.com>

Add new config options:
    git-p4.detectCopies         - Enable copy detection.
    git-p4.detectCopiesHarder   - Find copies harder.
The detectCopies option should be set to a true/false value.
The detectCopiesHarder option should be set to true/false value.
P4Submit can now process diff-tree C status and integrate files accordingly.
---
 contrib/fast-import/git-p4 |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 9fb480a..9b67ae2 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -620,6 +620,14 @@ class P4Submit(Command):
         else:
             diffOpts = ("", "-M")[self.detectRename]
 
+        detectCopies = gitConfig("git-p4.detectCopies")
+        if len(detectCopies) and detectCopies.lower() != "false" > 0:
+            diffOpts += " -C"
+
+        detectCopiesHarder = gitConfig("git-p4.detectCopiesHarder")
+        if len(detectCopiesHarder) > 0 and detectCopiesHarder.lower() != "false":
+            diffOpts += " --find-copies-harder"
+
         diff = read_pipe_lines("git diff-tree -r %s \"%s^\" \"%s\"" % (diffOpts, id, id))
         filesToAdd = set()
         filesToDelete = set()
@@ -643,6 +651,15 @@ class P4Submit(Command):
                 filesToDelete.add(path)
                 if path in filesToAdd:
                     filesToAdd.remove(path)
+            elif modifier == "C":
+                src, dest = diff['src'], diff['dst']
+                p4_system("integrate -Dt \"%s\" \"%s\"" % (src, dest))
+                if diff['src_sha1'] != diff['dst_sha1']:
+                    p4_system("edit \"%s\"" % (dest))
+                if isModeExecChanged(diff['src_mode'], diff['dst_mode']):
+                    filesToChangeExecBit[dest] = diff['dst_mode']
+                os.unlink(dest)
+                editedFiles.add(dest)
             elif modifier == "R":
                 src, dest = diff['src'], diff['dst']
                 p4_system("integrate -Dt \"%s\" \"%s\"" % (src, dest))
-- 
1.7.2.3

^ permalink raw reply related

* Re: [PATCH] git-p4: Corrected typo.
From: Vitor Antunes @ 2011-01-30 23:21 UTC (permalink / raw)
  To: Thomas Berg; +Cc: git
In-Reply-To: <AANLkTimLQxiB=dnd6=iB5uEpzOSfqks=FDJ=xORehuw8@mail.gmail.com>

Hi Thomas,

I've just sent out the patches to the mailing list. I'm looking
forward to receive some feedback from you :)

I also have some branch detection related patch prepared. Do you use
this feature often?

Thanks,
Vitor

On Sat, Jan 29, 2011 at 2:41 AM, Vitor Antunes <vitor.hda@gmail.com> wrote:
> Hi Thomas,
>
> First of all I'd like to thank you on your feedback. It's my first try
> on creating submitting a patch, so having someone's guidance helps a
> lot :)
>
> I'll rebase my patches against the head of the tree and squash the fix
> to avoid multiple commits. While I do that I'll also review my commit
> message and sign-off the patches according to what you said. Hopefully
> I will be able to do this during this weekend.
>
> From git-diff-tree man page:
>
> """
> -M[<n>]
>    Detect renames. If n is specified, it is a is a threshold on the
> similarity index (i.e. amount of addition/deletions compared to the
> file’s
>    size). For example, -M90% means git should consider a delete/add
> pair to be a rename if more than 90% of the file hasn’t changed.
> """
>
> But from my latest tests I think that this option is ignored in
> diff-tree (I think it's only used in git log). With this in mind I'll
> need to add some code to implement the check of the score value of
> diff-tree output string. Again from its man page:
>
> """
> Status letters C and R are always followed by a score (denoting the
> percentage of similarity between the source and target of the move or
> copy), and are the only ones to be so.
> """
>
> Thanks,
> Vitor
>
> On Fri, Jan 28, 2011 at 3:19 PM, Thomas Berg <merlin66b@gmail.com> wrote:
>> Hi,
>>
>> On Fri, Jan 28, 2011 at 12:35 AM, Vitor Antunes <vitor.hda@gmail.com> wrote:
>>> Hi everyone,
>>>
>>> Could anyone comment the 3 patches I sent (being this the last one)?
>>>
>> [...]
>>> On Thu, Nov 25, 2010 at 1:26 AM, Vitor Antunes <vitor.hda@gmail.com> wrote:
>>>> ---
>>>>  contrib/fast-import/git-p4 |    2 +-
>>>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
>>>> index 0ea3a44..a466847 100755
>>>> --- a/contrib/fast-import/git-p4
>>>> +++ b/contrib/fast-import/git-p4
>>>> @@ -618,7 +618,7 @@ class P4Submit(Command):
>>>>         if len(detectRenames) > 0:
>>>>             diffOpts = "-M%s" % detectRenames
>>>>         else:
>>>> -            diffOpts = ("", "-M")[self.detectRenames]
>>>> +            diffOpts = ("", "-M")[self.detectRename]
>>>>
>>
>> This appears to me to be a bugfix for one of the other patches you
>> sent, is that right?
>>
>> If so, maybe you could squash it with the previous patch and re-send
>> it all to the list?
>>
>> My other comments for now are:
>> - you have forgotten to sign off on the patches
>> - commit messages are normally in imperative rather than past tense
>> (see Documentation/SubmittingPatches in git)
>>
>> - In your first patch you wrote:
>>> The detectRenames option should be set to the desired threshold value.
>> I'm not sure what threshold value you refer to here, and what values
>> you can set it to. Am I missing something?
>> (I'm not very familiar with git rename detection options)
>>
>> I'm a git-p4 user, so I can test your changes and look a bit more at
>> your code. Someone verifying it could help getting the patches
>> applied.
>>
>> Thanks for improving git-p4!
>>
>> Cheers,
>> Thomas Berg
>>
>
>
>
> --
> Vitor Antunes
>



-- 
Vitor Antunes

^ permalink raw reply

* Re: [PATCH] git-p4: Corrected typo.
From: Thomas Berg @ 2011-01-30 23:34 UTC (permalink / raw)
  To: Vitor Antunes; +Cc: git
In-Reply-To: <AANLkTi=PPN69uuJmUBDHKtmn59DzUbdk=Qu4Ug-kok89@mail.gmail.com>

Hi Vitor,

On Mon, Jan 31, 2011 at 12:21 AM, Vitor Antunes <vitor.hda@gmail.com> wrote:
> Hi Thomas,
>
> I've just sent out the patches to the mailing list. I'm looking
> forward to receive some feedback from you :)

Thanks, I will try to get it tested tomorrow.

By the way, on this mailing list please don't top post. I think the
preferred style is interleaved posting:
http://en.wikipedia.org/wiki/Posting_style#Interleaved_style

>
> I also have some branch detection related patch prepared. Do you use
> this feature often?

No, the Perforce repo I work with is so non-standard that the only
solution has been to import all the branches separately and graft the
history together. This covers all my needs at the moment.

Cheers,
Thomas

^ permalink raw reply

* Re: [RFC/PATCH 0/2] Re: Remote branchs -- how can I check them out?
From: João Paulo Melo de Sampaio @ 2011-01-31  0:35 UTC (permalink / raw)
  To: Jonathan Nieder; +Cc: Konstantin Khomoutov, GIT Mailing List, Jakub Narebski
In-Reply-To: <20110130213258.GA10039@burratino>

Thank you for your help, Konstantin, Jakub and Jonathan!

When I asked that, I've only read http://gitref.org/ so I guess I
didn't quite have a good grasp on the concepts. Now I've read some of
Pro Git and I'm understanding the concepts much better. Thank you for
pointing me those references, they'll be of good use!

-- 
João Paulo Melo de Sampaio
Computer Engineering Student @ UFSCar
Website: http://www.jpmelos.com
Twitter: twitter.com/jpmelos (@jpmelos)

^ permalink raw reply

* Re: Project- vs. Package-Level Branching in Git
From: Jakub Narebski @ 2011-01-31  0:36 UTC (permalink / raw)
  To: Enrico Weigelt; +Cc: git
In-Reply-To: <20110130193603.GA327@nibiru.local>

Enrico Weigelt <weigelt@metux.de> writes:
> * David Aguilar <davvid@gmail.com> wrote:
> 
> > This is exactly how we do it at my workplace.  We have literally
> > hundreds of individual git repositories.  Naturally, some
> > packages depend on others and the only "trick" is building them
> > in the correct dependency order.  A simple dependency tree
> > handles this for us.
> 
> perhaps you'd like to have a look at my Briegel build tool:
> 
>     git://pubgit.metux.de/projects/briegel.git
>     
> ;-)

Is it Git-specific build tool?  If it is so, perhaps it would be good
to add it to
 
  https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools

page on Git Wiki?

Thanks in advance
-- 
Jakub Narebski
Poland
ShadeHawk on #git

^ permalink raw reply

* Re: [PATCH 1/2] Documentation/branch: split description into subsections
From: Sverre Rabbelier @ 2011-01-31  1:55 UTC (permalink / raw)
  To: Jonathan Nieder
  Cc: Konstantin Khomoutov, João Paulo Melo de Sampaio,
	GIT Mailing List, Jakub Narebski
In-Reply-To: <20110130213355.GB10039@burratino>

Heya,

2011/1/30 Jonathan Nieder <jrnieder@gmail.com>:
> Add headings for each form of the "git branch" command.  Hopefully
> this will make the description easier to read straight through without
> getting lost and help technical writers to see what needs improvement
> in the treatment of each form.

I like it. Thought for the future: it would be nice if at a sprint or
such we can read through and fix the rest of the documentation in a
similar way.

-- 
Cheers,

Sverre Rabbelier

^ permalink raw reply

* Re: [PATCH] merge: default to @{upstream}
From: Miles Bader @ 2011-01-31  1:55 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: git, Jonathan Nieder
In-Reply-To: <1296231457-18780-1-git-send-email-felipe.contreras@gmail.com>

Felipe Contreras <felipe.contreras@gmail.com> writes:
> So 'git merge' is 'git merge @{upstream}' instead of 'git merge -h';
> it's better to do something useful.

I totally agree -- this would be a good change[*] -- but this suggestion
has been made before, and always gets shot down for vaguely silly
reasons...

I often do "git fetch; <see what changed upstream>; git pull".  I think
this is probably not a rare pattern, when one is working with other
people via a shared upstream.

The git-pull is obviously slightly risky because another change could
have happened after the fetch, but I use that instead of "git-merge"
because git-pull's defaults make it very convenient ... and _usually_
there's no issue...  If git-merge had proper defaults (as you suggest),
it would be exactly as convenient as git-pull (and _less_ dangerous), so
I'd use that instead.

[and, no, saying "you can add an alias!" is not a reasonable answer --
git should be convenient by default!]

-Miles

-- 
Hers, pron. His.

^ permalink raw reply

* Re: [PATCH 2/2] Documentation/branch: briefly explain what a branch is
From: Junio C Hamano @ 2011-01-31  2:51 UTC (permalink / raw)
  To: Jonathan Nieder
  Cc: Konstantin Khomoutov, João Paulo Melo de Sampaio,
	GIT Mailing List, Jakub Narebski
In-Reply-To: <20110130213510.GC10039@burratino>

Jonathan Nieder <jrnieder@gmail.com> writes:

> The new reader might not know what git refs are, that history is a
> graph, the distinction between local, remote-tracking, and remote
> branches, or how to visualize what is going on.  After this change,
> those things are still probably not evident but at least there is an
> early reminder of some of it.
>
> Also explain how to create a branch before explaining how to list
> them.  Based roughly on the description of v0.99.1~53 (Add "git
> branch" script, 2005-07-11).
>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> ---
>  Documentation/git-branch.txt |   35 ++++++++++++++++++++---------------
>  1 files changed, 20 insertions(+), 15 deletions(-)

I think these two are good readability changes.  Just a few nits though.

> diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt
> index d3eeb94..abad7ba 100644
> --- a/Documentation/git-branch.txt
> +++ b/Documentation/git-branch.txt
> @@ -18,6 +18,26 @@ SYNOPSIS
>  DESCRIPTION
>  -----------
>  
> +Branches are references to commit objects, representing the tip of a
> +line of history.  The branch you are working on is referred to
> +by HEAD and the corresponding reference is updated each time
> +linkgit:git-commit[1] or linkgit:git-merge[1] makes a new commit.

I think "makes a new commit" is a somewhat misleading thing to say (think
"fast forward" or "rebase that makes more than one").  The important point
is "advances your history", isn't it?  How about...

	... reference is updated with various operations that advance your
	history, e.g. linkgit:git-commit[1], linkgit:git-pull[1], etc.

Obviously we do not want to be exhausitve, so I tried to reword the above
in a way that makes it explicit that we are not trying to be.

> +'git branch' <branchname> [<start-point>]::
> +	Creates a new branch named `<branchname>`.
> +	If a starting point is specified, that will be where the branch
> +	is created; otherwise, the new branch points to the `HEAD` commit.
> ++
> +This will create a new branch, but it does not switch the working tree
> +to it.  Use "git checkout <newbranch>" to start working on the new branch.

I do not think we define what _switch_ means to explain "it does not
switch the working tree to it" anywhere in the glossary.

The operation not only "does not switcfh the working tree", but also does
not do anything to HEAD.  You and I know that, but a new reader might not,
and especially after hearing that "branch ... is referred to by HEAD",
might get a wrong impression that branch creation may do something to HEAD.

Perhaps...

	This only creates a new branch; you are still on the same branch
	you were on before.  If you want to start working on the new
	branch, say "git checkout <newbranch>".

might be less confusing (we might also want to hint "checkout -b").

Thanks.

^ permalink raw reply

* git2svn path intelligence lacking, and no error correction
From: Joe Corneli @ 2011-01-31  2:57 UTC (permalink / raw)
  Cc: Git List

Trying to create an svn repo by specifying the full path fails, but
git2svn keeps running and only fails later.

./git2svn/git2svn --verbose --verbose --keep-logs
document-conversions/destination/
/home/planetary/public_html/pmhistory.svn
syncname tag: git2svn-syncpoint-master
svnadmin: Repository creation failed
svnadmin: Could not create top-level directory
svnadmin: Can't create directory
'home/planetary/public_html/pmhistory.svn': No such file or directory
svn: Unable to open an ra_local session to URL
svn: Unable to open repository
'file:///home/planetary/home/planetary/public_html/pmhistory.svn'
svn: Unable to open an ra_local session to URL
svn: Unable to open repository
'file:///home/planetary/home/planetary/public_html/pmhistory.svn'
git fast-export master (74f3415a58b60ea984004b66301f85bb1d7a5ba2)
creating svn dump from revision 1...
...dumped to revision 53128
(re-)setting sync-tag to new master
loading dump into svn
svnadmin load at ./git2svn/git2svn line 461.

^ permalink raw reply

* [ANNOUNCE] Git 1.7.4
From: Junio C Hamano @ 2011-01-31  5:05 UTC (permalink / raw)
  To: git

The latest feature release Git 1.7.4 is available at the usual
places:

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

  git-1.7.4.tar.{gz,bz2}			(source tarball)
  git-htmldocs-1.7.4.tar.{gz,bz2}		(preformatted docs)
  git-manpages-1.7.4.tar.{gz,bz2}		(preformatted docs)

The RPM binary packages for a few architectures are found in:

  RPMS/$arch/git-*-1.7.4-1.fc13.$arch.rpm	(RPM)

Git v1.7.4 Release Notes
========================

Updates since v1.7.3
--------------------

 * The documentation Makefile now assumes by default asciidoc 8 and
   docbook-xsl >= 1.73. If you have older versions, you can set
   ASCIIDOC7 and ASCIIDOC_ROFF, respectively.

 * The option parsers of various commands that create new branches (or
   rename existing ones to a new name) were too loose and users were
   allowed to give a branch a name that begins with a dash by creative
   abuse of their command line options, which only led to burning
   themselves.  The name of a branch cannot begin with a dash now.

 * System-wide fallback default attributes can be stored in
   /etc/gitattributes; the core.attributesfile configuration variable can
   be used to customize the path to this file.

 * The thread structure generated by "git send-email" has changed
   slightly.  Setting the cover letter of the latest series as a reply
   to the cover letter of the previous series with --in-reply-to used
   to make the new cover letter and all the patches replies to the
   cover letter of the previous series; this has been changed to make
   the patches in the new series replies to the new cover letter.

 * The Bash completion script in contrib/ has been adjusted to be usable with
   Bash 4 (options with '=value' didn't complete).  It has been also made
   usable with zsh.

 * Different pagers can be chosen depending on which subcommand is
   being run under the pager, using the "pager.<subcommand>" variable.

 * The hardcoded tab-width of 8 that is used in whitespace breakage checks is now
   configurable via the attributes mechanism.

 * Support of case insensitive filesystems (i.e. "core.ignorecase") has
   been improved.  For example, the gitignore mechanism didn't pay attention
   to case insensitivity.

 * The <tree>:<path> syntax for naming a blob in a tree, and the :<path>
   syntax for naming a blob in the index (e.g. "master:Makefile",
   ":hello.c") have been extended.  You can start <path> with "./" to
   implicitly have the (sub)directory you are in prefixed to the
   lookup.  Similarly, ":../Makefile" from a subdirectory would mean
   "the Makefile of the parent directory in the index".

 * "git blame" learned the --show-email option to display the e-mail
   addresses instead of the names of authors.

 * "git commit" learned the --fixup and --squash options to help later invocation
   of interactive rebase.

 * Command line options to "git cvsimport" whose names are in capital
   letters (-A, -M, -R and -S) can now be specified as the default in
   the .git/config file by their longer names (cvsimport.authorsFile,
   cvsimport.mergeRegex, cvsimport.trackRevisions, cvsimport.ignorePaths).

 * "git daemon" can be built in the MinGW environment.

 * "git daemon" can take more than one --listen option to listen to
   multiple addresses.

 * "git describe --exact-match" was optimized not to read commit
   objects unnecessarily.

 * "git diff" and "git grep" learned what functions and subroutines
   in Fortran, Pascal and Perl look like.

 * "git fetch" learned the "--recurse-submodules" option.

 * "git mergetool" tells vim/gvim to show a three-way diff by default
   (use vimdiff2/gvimdiff2 as the tool name for old behavior).

 * "git log -G<pattern>" limits the output to commits whose change has
   added or deleted lines that match the given pattern.

 * "git read-tree" with no argument as a way to empty the index is
   deprecated; we might want to remove it in the future.  Users can
   use the new --empty option to be more explicit instead.

 * "git repack -f" does not spend cycles to recompress objects in the
   non-delta representation anymore (use -F if you really mean it
   e.g. after you changed the core.compression variable setting).

 * "git merge --log" used to limit the resulting merge log to 20
   entries; this is now customizable by giving e.g. "--log=47".

 * "git merge" may work better when all files were moved out of a
   directory in one branch while a new file is created in place of that
   directory in the other branch.

 * "git merge" learned the "--abort" option, synonymous to
   "git reset --merge" when a merge is in progress.

 * "git notes" learned the "merge" subcommand to merge notes refs.
   In addition to the default manual conflict resolution, there are
   also several notes merge strategies for automatically resolving
   notes merge conflicts.

 * "git rebase --autosquash" can use SHA-1 object names to name the
   commit which is to be fixed up (e.g. "fixup! e83c5163").

 * The default "recursive" merge strategy learned the --rename-threshold
   option to influence the rename detection, similar to the -M option
   of "git diff".  From the "git merge" frontend, the "-X<strategy option>"
   interface, e.g. "git merge -Xrename-threshold=50% ...", can be used
   to trigger this.

 * The "recursive" strategy also learned to ignore various whitespace
   changes; the most notable is -Xignore-space-at-eol.

 * "git send-email" learned "--to-cmd", similar to "--cc-cmd", to read
   the recipient list from a command output.

 * "git send-email" learned to read and use "To:" from its input files.

 * you can extend "git shell", which is often used on boxes that allow
   git-only login over ssh as login shell, with a custom set of
   commands.

 * The current branch name in "git status" output can be colored differently
   from the generic header color by setting the "color.status.branch" variable.

 * "git submodule sync" updates metainformation for all submodules,
   not just the ones that have been checked out.

 * gitweb can use a custom 'highlight' command with its configuration file.

 * other gitweb updates.


Also contains various documentation updates.


Fixes since v1.7.3
------------------

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

 * "git log --author=me --author=her" did not find commits written by
   me or by her; instead it looked for commits written by me and by
   her, which is impossible.

 * "git push --progress" shows progress indicators now.

 * "git rebase -i" showed a confusing error message when given a
   branch name that does not exist.

 * "git repack" places its temporary packs under $GIT_OBJECT_DIRECTORY/pack
   instead of $GIT_OBJECT_DIRECTORY/ to avoid cross directory renames.

 * "git submodule update --recursive --other-flags" passes flags down
   to its subinvocations.


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

Changes since v1.7.3 are as follows:

Adam Tkac (1):
      Don't pass "--xhtml" to hightlight in gitweb.perl script.

Alan Raison (1):
      contrib/hooks/post-receive-email: fix return values from prep_for_email

Alejandro R. Sedeño (1):
      Add --force to git-send-email documentation

Aleksi Aalto (1):
      status: show branchname with a configurable color

Alexander Sulfrian (2):
      daemon: add helper function named_sock_setup
      daemon: allow more than one host address given via --listen

Alexandre Erwin Ittner (1):
      gitk: Add Brazilian Portuguese (pt-BR) translation

Alexey Shumkin (1):
      userdiff: match Pascal class methods

Anders Kaseorg (6):
      apply: Recognize epoch timestamps with : in the timezone
      describe: Use for_each_rawref
      describe: Do not use a flex array in struct commit_name
      describe: Store commit_names in a hash table by commit SHA1
      describe: Delay looking up commits until searching for an inexact match
      Mark gitk script executable

Andreas Gruenbacher (1):
      Clarify and extend the "git diff" format documentation

Andreas Köhler (1):
      submodule sync: Update "submodule.<name>.url" for empty directories

Andrew Waters (1):
      Fix handling of git-p4 on deleted files

Antonio Ospite (3):
      t/t9001-send-email.sh: fix stderr redirection in 'Invalid In-Reply-To'
      git-send-email.perl: make initial In-Reply-To apply only to first email
      t/t9001-send-email.sh: fix '&&' chain in some tests

Bert Wesarg (1):
      Documentation: update-index: -z applies also to --index-info

Björn Steinbrink (1):
      Correctly report corrupted objects

Brandon Casey (13):
      userdiff.c: add builtin fortran regex patterns
      t/t3903-stash: improve testing of git-stash show
      builtin/revert.c: don't dereference a NULL pointer
      wt-status.c: don't leak directory entries when processing untracked,ignored
      git-send-email.perl: ensure $domain is defined before using it
      diffcore-pickaxe.c: remove unnecessary curly braces
      diffcore-pickaxe.c: a void function shouldn't try to return something
      test-lib.sh/test_decode_color(): use octal not hex in awk script
      Makefile: add NO_FNMATCH_CASEFOLD to IRIX sections
      t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'
      trace.c: ensure NULL is not passed to printf
      t0001,t1510,t3301: use sane_unset which always returns with status 0
      t3032: limit sed branch labels to 8 characters

Brian Gernhardt (3):
      git-stash: fix flag parsing
      t/gitweb-lib: Don't pass constant to decode_utf8
      t6022: Use -eq not = to test output of wc -l

Christian Couder (1):
      t6050 (replace): fix bogus "fetch branch with replacement" test

Christoph Mallon (1):
      diff --check: correct line numbers of new blank lines at EOF

Christopher Wilson (1):
      Enable highlight executable path as a configuration option

Clemens Buchacher (15):
      add rebase patch id tests
      do not search functions for patch ID
      t7607: use test-lib functions and check MERGE_HEAD
      t7607: add leading-path tests
      add function check_ok_to_remove()
      lstat_cache: optionally return match_len
      do not overwrite files in leading path
      do not overwrite untracked during merge from unborn branch
      use persistent memory for rejected paths
      t7607: use test-lib functions and check MERGE_HEAD
      t7607: add leading-path tests
      add function check_ok_to_remove()
      lstat_cache: optionally return match_len
      do not overwrite files in leading path
      use persistent memory for rejected paths

Cliff Frey (1):
      documentation: git-config minor cleanups

Dan McGee (3):
      mergetool-lib: combine vimdiff and gvimdiff run blocks
      mergetool-lib: add a three-way diff view for vim/gvim
      mergetool-lib: make the three-way diff the default for vim/gvim

Daniel Knittl-Frank (1):
      Improvements to `git checkout -h`

David Barr (3):
      fast-import: Allow filemodify to set the root
      fast-import: insert new object entries at start of hash bucket
      fast-import: let importers retrieve blobs

David Kågedal (1):
      git-blame.el: Add (require 'format-spec)

Diego Elio Pettenò (1):
      imap-send: link against libcrypto for HMAC and others

Elijah Newren (54):
      Document pre-condition for tree_entry_interesting
      tree-walk: Correct bitrotted comment about tree_entry()
      tree_entry_interesting(): Make return value more specific
      diff_tree(): Skip skip_uninteresting() when all remaining paths interesting
      t3509: Add rename + D/F conflict testcase that recursive strategy fails
      merge-recursive: D/F conflicts where was_a_dir/file -> was_a_dir
      t6032: Add a test checking for excessive output from merge
      t6022: Add test combinations of {content conflict?, D/F conflict remains?}
      t6022: Add tests for reversing order of merges when D/F conflicts present
      t6022: Add tests with both rename source & dest involved in D/F conflicts
      t6022: Add paired rename+D/F conflict: (two/file, one/file) -> (one, two)
      t6022: Add tests for rename/rename combined with D/F conflicts
      t6020: Modernize style a bit
      t6020: Add a testcase for modify/delete + directory/file conflict
      t6036: Test index and worktree state, not just that merge fails
      t6036: Add a second testcase similar to the first but with content changes
      t6036: Add testcase for undetected conflict
      merge-recursive: Small code clarification -- variable name and comments
      merge-recursive: Rename conflict_rename_rename*() for clarity
      merge-recursive: Nuke rename/directory conflict detection
      merge-recursive: Move rename/delete handling into dedicated function
      merge-recursive: Move delete/modify handling into dedicated function
      merge-recursive: Move process_entry's content merging into a function
      merge-recursive: New data structures for deferring of D/F conflicts
      merge-recursive: New function to assist resolving renames in-core only
      merge-recursive: Have process_entry() skip D/F or rename entries
      merge-recursive: Structure process_df_entry() to handle more cases
      merge-recursive: Update conflict_rename_rename_1to2() call signature
      merge-recursive: Update merge_content() call signature
      merge-recursive: Avoid doubly merging rename/add conflict contents
      merge-recursive: Move handling of double rename of one file to two
      merge-recursive: Move handling of double rename of one file to other file
      merge-recursive: Delay handling of rename/delete conflicts
      merge-recursive: Delay content merging for renames
      merge-recursive: Delay modify/delete conflicts if D/F conflict present
      conflict_rename_delete(): Check whether D/F conflicts are still present
      conflict_rename_rename_1to2(): Fix checks for presence of D/F conflicts
      merge_content(): Check whether D/F conflicts are still present
      handle_delete_modify(): Check whether D/F conflicts are still present
      merge-recursive: Make room for directories in D/F conflicts
      merge-recursive: Remove redundant path clearing for D/F conflicts
      t3020 (ls-files-error-unmatch): remove stray '1' from end of file
      t4017 (diff-retval): replace manual exit code check with test_expect_code
      t100[12] (read-tree-m-2way, read_tree_m_u_2way): add missing &&
      t4002 (diff-basic): use test_might_fail for commands that might fail
      t4202 (log): Replace '<git-command> || :' with test_might_fail
      t4019 (diff-wserror): add lots of missing &&
      t4026 (color): remove unneeded and unchained command
      t5602 (clone-remote-exec): add missing &&
      t6016 (rev-list-graph-simplify-history): add missing &&
      t7001 (mv): add missing &&
      t7601 (merge-pull-config): add missing &&
      t7800 (difftool): add missing &&
      Introduce sane_unset and use it to ensure proper && chaining

Eric Sunshine (5):
      Side-step sed line-ending "corruption" leading to t6038 failure.
      Side-step MSYS-specific path "corruption" leading to t5560 failure.
      Fix 'clone' failure at DOS root directory.
      Fix Windows-specific macro redefinition warning.
      Add MinGW-specific execv() override.

Eric Wong (1):
      Documentation/git-svn: discourage "noMetadata"

Erik Faye-Lund (23):
      mingw: do not crash on open(NULL, ...)
      do not depend on signed integer overflow
      inet_ntop: fix a couple of old-style decls
      mingw: use real pid
      mingw: support waitpid with pid > 0 and WNOHANG
      mingw: add kill emulation
      daemon: use run-command api for async serving
      daemon: use full buffered mode for stderr
      daemon: get remote host address from root-process
      mingw: import poll-emulation from gnulib
      mingw: use poll-emulation from gnulib
      daemon: use socklen_t
      daemon: make --inetd and --detach incompatible
      daemon: opt-out on features that require posix
      msvc: opendir: fix malloc-failure
      msvc: opendir: allocate enough memory
      msvc: opendir: do not start the search
      win32: dirent: handle errors
      msvc: opendir: handle paths ending with a slash
      win32: use our own dirent.h
      mingw: do not set errno to 0 on success
      help: always suggest common-cmds if prefix of cmd
      exec_cmd: remove unused extern

Federico Cuello (1):
      Fix git-apply with -p greater than 1

Gabriel Corona (2):
      t5550: test HTTP authentication and userinfo decoding
      Fix username and password extraction from HTTP URLs

Giuseppe Bilotta (16):
      gitweb: use fullname as hash_base in heads link
      gitweb: introduce remote_heads feature
      gitweb: git_get_heads_list accepts an optional list of refs
      gitweb: separate heads and remotes lists
      gitweb: nagivation menu for tags, heads and remotes
      gitweb: allow action specialization in page header
      gitweb: remotes view for a single remote
      gitweb: refactor repository URL printing
      gitweb: provide a routine to display (sub)sections
      gitweb: group remote heads by remote
      git instaweb: enable remote_heads
      web--browse: coding style
      web--browse: split valid_tool list
      web--browse: support opera, seamonkey and elinks
      web--browse: better support for chromium
      CodingGuidelines: mention whitespace preferences for shell scripts

Greg Brockman (4):
      Allow creation of arbitrary git-shell commands
      Add interactive mode to git-shell for user-friendliness
      Add sample commands for git-shell
      shell: Display errors from improperly-formatted command lines

Ilari Liusvaara (4):
      Add bidirectional_transfer_loop()
      git-remote-fd
      git-remote-ext
      remote-fd/ext: finishing touches after code review

Jakub Narebski (14):
      t/gitweb-lib.sh: Use GIT_BUILD_DIR
      t/gitweb-lib.sh: Use tabs for indent consistently
      gitweb: Move call to evaluate_git_version after evaluate_gitweb_config
      t/gitweb-lib.sh: Add support for GITWEB_TEST_INSTALLED
      gitweb/Makefile: Add 'test' and 'test-installed' targets
      gitweb/Makefile: Include gitweb/config.mak
      gitweb: Fix test of highlighting support in t9500
      gitweb: Fix bug in evaluate_path_info
      gitweb: Improve behavior for actionless path_info gitweb URLs
      gitweb: Time::HiRes is in core for Perl 5.8
      gitweb: selectable configurations that change with each request
      gitweb: Fix handling of whitespace in generated links
      gitweb: Introduce esc_attr to escape attributes of HTML elements
      gitweb: Include links to feeds in HTML header only for '200 OK' response

Jan Krüger (3):
      read-tree: deprecate syntax without tree-ish args
      repack: add -F flag to let user choose between --no-reuse-delta/object
      Documentation: pack.compression: explain how to recompress

Jari Aalto (2):
      git-commit.txt: (synopsis): move -i and -o before "--"
      git-pull.txt: Mention branch.autosetuprebase

Jeff King (27):
      diff: don't use pathname-based diff drivers for symlinks
      prefer test -h over test -L in shell scripts
      rev-list: handle %x00 NUL in user format
      tests: factor out terminal handling from t7006
      tests: test terminal output to both stdout and stderr
      push: pass --progress down to git-pack-objects
      docs: give more hints about how "add -e" works
      config: treat non-existent config files as empty
      diff: report bogus input to -C/-M/-B
      apply: don't segfault on binary files with missing data
      docs: clarify git diff modes of operation
      docs: give more hints about how "add -e" works
      document sigchain api
      log.decorate: accept 0/1 bool values
      allow command-specific pagers in pager.<cmd>
      reflogs: clear flags properly in corner case
      docs: default to more modern toolset
      default color.status.branch to "same as header"
      tests: add some script lint checks
      tests: flip executable bit on t9158
      handle arbitrary ints in git_config_maybe_bool
      t2107: mark passing test as success
      ident: die on bogus date format
      docs: explain diff.*.binary option
      rebase: use explicit "--" with checkout
      rebase: give a better error message for bogus branch
      tests: sanitize more git environment variables

Jens Lehmann (6):
      pull: Remove --tags option from manpage
      clone: Add the --recurse-submodules option as alias for --recursive
      fetch/pull: Add the --recurse-submodules option
      Add the 'fetch.recurseSubmodules' config setting
      Submodules: Add the "fetchRecurseSubmodules" config option
      git submodule: Remove now obsolete tests before cloning a repo

Jiang Xin (1):
      Fix typo in git-gc document.

Jim Meyering (1):
      mailmap: fix use of freed memory

Joe Perches (2):
      git-send-email.perl: Add --to-cmd
      git-send-email.perl: Deduplicate "to:" and "cc:" entries with names

Johan Herland (23):
      notes.c: Hexify SHA1 in die() message from init_notes()
      (trivial) notes.h: Minor documentation fixes to copy_notes()
      notes.h: Make default_notes_ref() available in notes API
      notes.c: Reorder functions in preparation for next commit
      notes.h/c: Allow combine_notes functions to remove notes
      notes.h/c: Propagate combine_notes_fn return value to add_note() and beyond
      (trivial) t3303: Indent with tabs instead of spaces for consistency
      notes.c: Use two newlines (instead of one) when concatenating notes
      builtin/notes.c: Split notes ref DWIMmery into a separate function
      git notes merge: Initial implementation handling trivial merges only
      builtin/notes.c: Refactor creation of notes commits.
      git notes merge: Handle real, non-conflicting notes merges
      git notes merge: Add automatic conflict resolvers (ours, theirs, union)
      Documentation: Preliminary docs on 'git notes merge'
      git notes merge: Manual conflict resolution, part 1/2
      git notes merge: Manual conflict resolution, part 2/2
      git notes merge: List conflicting notes in notes merge commit message
      git notes merge: --commit should fail if underlying notes ref has moved
      git notes merge: Add another auto-resolving strategy: "cat_sort_uniq"
      git notes merge: Add testcases for merging notes trees at different fanouts
      Provide 'git notes get-ref' to easily retrieve current notes ref
      cmd_merge(): Parse options before checking MERGE_HEAD
      Provide 'git merge --abort' as a synonym to 'git reset --merge'

Johannes Schindelin (3):
      Make sure that git_getpass() never returns NULL
      Fix typo in pack-objects' usage
      merge-octopus: Work around environment issue on Windows

Johannes Sixt (6):
      t7300: add a missing SYMLINKS prerequisite
      apply --whitespace=fix: fix tab-in-indent
      Make the tab width used for whitespace checks configurable
      Avoid duplicate test number t7609
      Fix expected values of setup tests on Windows
      t/README: hint about using $(pwd) rather than $PWD in tests

Jon Seymour (2):
      stash: fix git stash branch regression when branch creation fails
      stash: simplify parsing fixes

Jonathan "Duke" Leto (1):
      Correct help blurb in checkout -p and friends

Jonathan Nieder (89):
      merge-recursive: expose merge options for builtin merge
      ll-merge: replace flag argument with options struct
      t0004 (unwritable files): simplify error handling
      environment.c: remove unused variable
      setup: make sure git dir path is in a permanent buffer
      init: plug tiny one-time memory leak
      xdiff: cast arguments for ctype functions to unsigned char
      commit-tree: free commit message before exiting
      Documentation: No argument of ALLOC_GROW should have side-effects
      Documentation: gitrevisions is in section 7
      Documentation: diff can compare blobs
      Documentation: expand 'git diff' SEE ALSO section
      Documentation: update implicit "--no-index" behavior in "git diff"
      t4203 (mailmap): stop hardcoding commit ids and dates
      send-pack: avoid redundant "pack-objects died with strange error"
      test-lib: allow test code to check the list of declared prerequisites
      test_terminal: catch use without TTY prerequisite
      test_terminal: ensure redirections work reliably
      fast-import: filemodify after M 040000 <tree> "" crashes
      fast-import: tighten M 040000 syntax
      t9300 (fast-import): another test for the "replace root" feature
      fast-import: do not clear notes in do_change_note_fanout()
      user-manual: remote-tracking can be checked out, with detached HEAD
      Documentation: document show -s
      tests: add missing &&
      tests: add missing &&, batch 2
      test-lib: introduce test_line_count to measure files
      t6022 (renaming merge): chain test commands with &&
      t1502 (rev-parse --parseopt): test exit code from "-h"
      t1400 (update-ref): use test_must_fail
      t3301 (notes): use test_expect_code for clarity
      t3404 (rebase -i): unroll test_commit loops
      t3404 (rebase -i): move comment to description
      t3404 (rebase -i): introduce helper to check position of HEAD
      t4124 (apply --whitespace): use test_might_fail
      apply: handle patches with funny filename and colon in timezone
      cherry-pick/revert: transparently refresh index
      wrapper: move xmmap() to sha1_file.c
      wrapper: move odb_* to environment.c
      path helpers: move git_mkstemp* to wrapper.c
      strbuf: move strbuf_branchname to sha1_name.c
      wrapper: give zlib wrappers their own translation unit
      pack-objects: mark file-local variable static
      Remove pack file handling dependency from wrapper.o
      Documentation: split gitignore page into sections
      Documentation: point to related commands from gitignore
      Describe various forms of "be quiet" using OPT__QUIET
      vcs-svn: Error out for v3 dumps
      fast-import: treat SIGUSR1 as a request to access objects early
      git-rev-parse.txt: clarify --git-dir
      gitweb: document $per_request_config better
      fast-import: stricter parsing of integer options
      fast-import: clarify documentation of "feature" command
      fast-import: Allow cat-blob requests at arbitrary points in stream
      add: introduce add.ignoreerrors synonym for add.ignore-errors
      Documentation: do not misinterpret pull refspec as bold text
      git submodule -b ... of current HEAD fails
      Makefile: dependencies for vcs-svn tests
      parse-options: clearer reporting of API misuse
      parse-options: move NODASH sanity checks to parse_options_check
      parse-options: sanity check PARSE_OPT_NOARG flag
      parse-options: never suppress arghelp if LITERAL_ARGHELP is set
      parse-options: allow git commands to invent new option types
      parse-options: make resuming easier after PARSE_OPT_STOP_AT_NON_OPTION
      update-index: migrate to parse-options API
      treap: make treap_insert return inserted node
      vcs-svn: fix intermittent repo_tree corruption
      Makefile: transport-helper uses thread-utils.h
      t9300: avoid short reads from dd
      bash: simple reimplementation of _get_comp_words_by_ref
      t9300: use perl "head -c" clone in place of "dd bs=1 count=16000" kluge
      t0050: fix printf format strings for portability
      t0001: test git init when run via an alias
      diff: funcname and word patterns for perl
      gitweb: skip logo in atom feed when there is none
      gitweb: make logo optional
      daemon: support <directory> arguments again
      t9010: svnadmin can fail even if available
      ll-merge: simplify opts == NULL case
      Documentation/fast-import: capitalize beginning of sentence
      remote-ext: do not segfault for blank lines
      Documentation/fast-import: put explanation of M 040000 <dataref> "" in context
      tests: cosmetic improvements to the repo-setup test
      tests: compress the setup tests
      Documentation: do not treat reset --keep as a special case
      Subject: setup: officially support --work-tree without --git-dir
      t1510: fix typo in the comment of a test
      fast-import: treat filemodify with empty tree as delete
      rebase -i: clarify in-editor documentation of "exec"

Joshua Jensen (6):
      Add string comparison functions that respect the ignore_case variable.
      Case insensitivity support for .gitignore via core.ignorecase
      Add case insensitivity support for directories when using git status
      Add case insensitivity support when using git ls-files
      Support case folding for git add when core.ignorecase=true
      Support case folding in git fast-import when core.ignorecase=true

Junio C Hamano (59):
      gitdiffcore doc: update pickaxe description
      diff: pass the entire diff-options to diffcore_pickaxe()
      git log/diff: add -G<regexp> that greps in the patch text
      diff/log -G<pattern>: tests
      grep: move logic to compile header pattern into a separate helper
      log --author: take union of multiple "author" requests
      disallow branch names that start with a hyphen
      CodingGuidelines: spell Arithmetic Expansion with $(($var))
      Git 1.7.3.1
      MinGW: avoid collisions between "tags" and "TAGS"
      Start 1.7.4 cycle
      merge-recursive: Restructure showing how to chain more process_* functions
      Martin Langhoff has a new e-mail address
      Make test script t9157 executable
      CodingGuidelines: reword parameter expansion section
      shell portability: no "export VAR=VAL"
      t4203: do not let "git shortlog" DWIM based on tty
      merge-recursive:make_room_for_directories - work around dumb compilers
      Git 1.7.3.2
      core.abbrevguard: Ensure short object names stay unique a bit longer
      read_sha1_file(): report correct name of packfile with a corrupt object
      A loose object is not corrupt if it cannot be read due to EMFILE
      t9001: send-email interation with --in-reply-to and --chain-reply-to
      test: git-apply -p2 rename/chmod only
      t3404: do not use 'describe' to implement test_cmp_rev
      t3402: test "rebase -s<strategy> -X<opt>"
      Update draft release notes to 1.7.4
      Documentation: Fix mark-up of lines with more than one tilde
      Git 1.7.0.8
      Update draft release notes to 1.7.4
      t9300: remove unnecessary use of /dev/stdin
      Git 1.7.3.3
      t9119: do not compare "Text Last Updated" line from "svn info"
      Do not link with -lcrypto under NO_OPENSSL
      t9010 fails when no svn is available
      get_sha1: teach ":$n:<path>" the same relative path logic
      Documentation/git.txt: update list of maintenance releases
      fetch_populated_submodules(): document dynamic allocation
      thread-utils.h: simplify the inclusion
      Prepare for 1.7.3.4
      Relnotes: remove items fixed on 'maint'
      get_sha1_oneline: fix lifespan rule of temp_commit_buffer variable
      Prepare for 1.7.3.4
      Git 1.6.4.5
      Update draft release notes to 1.7.4
      commit: die before asking to edit the log message
      set_try_to_free_routine(NULL) means "do nothing special"
      am --abort: keep unrelated commits since the last failure and warn
      t0021: avoid getting filter killed with SIGPIPE
      rebase --skip: correctly wrap-up when skipping the last patch
      userdiff/perl: catch BEGIN/END/... and POD as headers
      Prepare for 1.7.3.5
      Git 1.7.4-rc0
      Git 1.7.3.5
      Git 1.7.4-rc1
      Git 1.7.4-rc2
      Documentation updates for 'GIT_WORK_TREE without GIT_DIR' historical usecase
      Git 1.7.4-rc3
      Git 1.7.4

Justin Frankel (2):
      merge-recursive --patience
      merge-recursive: options to ignore whitespace changes

Kevin Ballard (13):
      merge-recursive: option to specify rename threshold
      diff: add synonyms for -M, -C, -B
      completion: Support the DWIM mode for git checkout
      blame: Add option to show author email instead of name
      Update test script annotate-tests.sh to handle missing/extra authors
      test-lib: extend test_decode_color to handle more color codes
      diff: handle lines containing only whitespace and tabs better
      submodule: preserve all arguments exactly when recursing
      submodule: only preserve flags across recursive status/update invocations
      status: Quote paths with spaces in short format
      rebase: better rearranging of fixup!/squash! lines with --autosquash
      rebase: teach --autosquash to match on sha1 in addition to message
      diff: add --detect-copies-harder as a synonym for --find-copies-harder

Kevin P. Fleming (1):
      post-receive-email: ensure sent messages are not empty

Kirill Smelkov (8):
      gitk: Show notes by default (like git log does)
      user-manual: be consistent in illustrations to 'git rebase'
      blame,cat-file: Prepare --textconv tests for correctly-failing conversion program
      blame,cat-file: Demonstrate --textconv is wrongly running converter on symlinks
      blame,cat-file --textconv: Don't assume mode is ``S_IFREF | 0664''
      setup: make sure git_dir path is in a permanent buffer, getenv(3) case
      t/t8006: Demonstrate blame is broken when cachetextconv is on
      fill_textconv(): Don't get/put cache if sha1 is not valid

Linus Torvalds (1):
      Fix missing 'does' in man-page for 'git checkout'

Mark Lodato (3):
      completion: make compatible with zsh
      completion: fix zsh check under bash with 'set -u'
      fsck docs: remove outdated and useless diagnostic

Markus Duft (2):
      add support for the SUA layer (interix; windows)
      Interix: add configure checks

Martin Storsjö (1):
      Improve the mingw getaddrinfo stub to handle more use cases

Martin von Zweigbergk (7):
      rebase -X: do not clobber strategy
      Documentation/git-pull: clarify configuration
      rebase: support --verify
      rebase --abort: do not update branch ref
      rebase: only show stat if configured to true
      Use reflog in 'pull --rebase . foo'
      completion: add missing configuration variables

Mathias Lafeldt (1):
      git-svn: fix processing of decorated commit hashes

Matthieu Moy (12):
      update comment and documentation for :/foo syntax
      diff: trivial fix for --output file error message
      Better "Changed but not updated" message in git-status
      Replace "remote tracking" with "remote-tracking"
      Change remote tracking to remote-tracking in non-trivial places
      everyday.txt: change "tracking branch" to "remote-tracking branch"
      Change "tracking branch" to "remote-tracking branch"
      Change incorrect uses of "remote branch" meaning "remote-tracking"
      Change incorrect "remote branch" to "remote tracking branch" in C code
      user-manual.txt: explain better the remote(-tracking) branch terms
      git-branch.txt: mention --set-upstream as a way to change upstream configuration
      commit: suggest --amend --reset-author to fix commiter identity

Michael J Gruber (26):
      git-reset.txt: clarify branch vs. branch head
      git-reset.txt: reset does not change files in target
      git-reset.txt: reset --soft is not a no-op
      git-reset.txt: use "working tree" consistently
      git-reset.txt: point to git-checkout
      git-reset.txt: make modes description more consistent
      remote-helpers: build in platform independent directory
      contrib/completion: --no-index option to git diff
      user-manual: fix anchor name Finding-comments-With-given-Content
      rev-list-options: clarify --parents and --children
      t5503: fix typo
      git-show-ref.txt: clarify the pattern matching
      test: allow running the tests under "prove"
      t/t7004-tag: test handling of rfc1991 signatures
      verify-tag: factor out signature detection
      tag: factor out sig detection for body edits
      tag: factor out sig detection for tag display
      tag: recognize rfc1991 signatures
      cvsimport: partial whitespace cleanup
      git-rm.txt: Fix quoting
      t800?-blame.sh: retitle uniquely
      git-difftool.txt: correct the description of $BASE and describe $MERGED
      difftool: provide basename to external tools
      t1020-subdirectory: test alias expansion in a subdirectory
      cvsimport: handle the parsing of uppercase config options
      RelNotes/1.7.4: minor fixes

Mike Pape (3):
      mingw: add network-wrappers for daemon
      mingw: implement syslog
      compat: add inet_pton and inet_ntop prototypes

Nathan W. Panike (1):
      Fix a formatting error in git-merge.txt

Nguyễn Thái Ngọc Duy (68):
      branch -h: show usage even in an invalid repository
      checkout-index -h: show usage even in an invalid repository
      commit/status -h: show usage even with broken configuration
      gc -h: show usage even with broken configuration
      ls-files -h: show usage even with corrupt index
      merge -h: show usage even with corrupt index
      update-index -h: show usage even with corrupt index
      dir.c: fix EXC_FLAG_MUSTBEDIR match in sparse checkout
      add: do not rely on dtype being NULL behavior
      clean: avoid quoting twice
      clean: remove redundant variable baselen
      get_cwd_relative(): do not misinterpret root path
      builtins: print setup info if repo is found
      Add t1510 and basic rules that run repo setup
      t1510: setup case #0
      t1510: setup case #1
      t1510: setup case #2
      t1510: setup case #3
      t1510: setup case #4
      t1510: setup case #5
      t1510: setup case #6
      t1510: setup case #7
      t1510: setup case #8
      t1510: setup case #9
      t1510: setup case #10
      t1510: setup case #11
      t1510: setup case #12
      t1510: setup case #13
      t1510: setup case #14
      t1510: setup case #15
      t1510: setup case #16
      t1510: setup case #17
      t1510: setup case #18
      t1510: setup case #19
      t1510: setup case #20
      t1510: setup case #21
      t1510: setup case #22
      t1510: setup case #23
      t1510: setup case #24
      t1510: setup case #25
      t1510: setup case #26
      t1510: setup case #27
      t1510: setup case #28
      t1510: setup case #29
      t1510: setup case #30
      t1510: setup case #31
      cache.h: realign and use (1 << x) form for CE_* constants
      dir.c: add free_excludes()
      unpack-trees: move all skip-worktree checks back to unpack_trees()
      entry.c: remove "checkout-index" from error messages
      unpack-trees: fix sparse checkout's "unable to match directories"
      Revert "excluded_1(): support exclude files in index"
      setup: save prefix (original cwd relative to toplevel) in startup_info
      Make prefix_path() return char* without const
      get_sha1: support relative path ":path" syntax
      get_sha1_oneline: make callers prepare the commit list to traverse
      get_sha1: support $commit^{/regex} syntax
      get_sha1: handle special case $commit^{/}
      Add git_config_early()
      Use git_config_early() instead of git_config() during repo setup
      setup: limit get_git_work_tree()'s to explicit setup case only
      setup: clean up setup_bare_git_dir()
      setup: clean up setup_discovered_git_dir()
      setup: rework setup_explicit_git_dir()
      Remove all logic from get_git_work_tree()
      Revert "Documentation: always respect core.worktree if set"
      git.txt: correct where --work-tree path is relative to
      setup_work_tree: adjust relative $GIT_WORK_TREE after moving cwd

Nicolas Pitre (2):
      diff: don't presume empty file when corresponding object is missing
      make pack-objects a bit more resilient to repo corruption

Pascal Obry (3):
      Minor indentation fix.
      Remove @smtp_host_parts variable as not used.
      New send-email option smtpserveroption.

Pat Notz (8):
      strbuf.h: fix comment typo
      dir.c: squelch false uninitialized memory warning
      commit: helper methods to reduce redundant blocks of code
      pretty.c: teach format_commit_message() to reencode the output
      commit: --fixup option for use with rebase --autosquash
      add tests of commit --fixup
      commit: --squash option for use with rebase --autosquash
      add tests of commit --squash

Pat Thoyts (13):
      MinGW: fix stat() and lstat() implementations for handling symlinks
      MinGW: Report errors when failing to launch the html browser.
      Skip t1300.70 and 71 on msysGit.
      Do not strip CR when grepping HTTP headers.
      Skip 'git archive --remote' test on msysGit
      git-am: fix detection of absolute paths for windows
      git-gui: show command-line errors in a messagebox on Windows
      git-gui: enable the Tk console when tracing/debugging on Windows
      git-gui: generic version trimming
      git-gui: use full dialog width for old name when renaming branch
      git-gui: correct assignment of work-tree
      git-gui: use wordprocessor tab style to ensure tabs work as expected
      git-gui: apply color information from git diff output

Pete Wyckoff (1):
      convert filter: supply path to external driver

Peter Krefting (1):
      gitk: Update Swedish translation (290t)

Peter van der Does (1):
      bash: get --pretty=m<tab> completion to work with bash v4

Petr Onderka (1):
      Add global and system-wide gitattributes

Ralf Thielow (1):
      commit.c: Remove backward goto in read_craft_line()

Ralf Wildenhues (1):
      Fix typos in the documentation

Ramkumar Ramachandra (11):
      shell: Rewrite documentation and improve error message
      t4014-format-patch: Call test_tick before committing
      format-patch: Don't go over merge commits
      fmt_merge_msg: Change fmt_merge_msg API to accept shortlog_len
      merge: Make '--log' an integer option for number of shortlog entries
      merge: Make 'merge.log' an integer or boolean option
      t6200-fmt-merge-msg: Exercise 'merge.log' to configure shortlog length
      t6200-fmt-merge-msg: Exercise '--log' to configure shortlog length
      SubmittingPatches: Document some extra tags used in commit messages
      Porcelain scripts: Rewrite cryptic "needs update" error message
      t9010 (svn-fe): Eliminate dependency on svn perl bindings

Ramsay Allan Jones (20):
      t1503: Fix arithmetic expansion syntax error when using dash
      msvc: Fix compilation errors in compat/win32/sys/poll.c
      msvc: git-daemon.exe: Fix linker "unresolved externals" error
      msvc: Fix build by adding missing INTMAX_MAX define
      msvc: Fix macro redefinition warnings
      t3600-rm.sh: Don't pass a non-existent prereq to test #15
      t9142: Move call to start_httpd into the setup test
      lib-git-svn.sh: Avoid setting web server variables unnecessarily
      lib-git-svn.sh: Add check for mis-configured web server variables
      t9501-*.sh: Fix a test failure on Cygwin
      difftool: Fix failure on Cygwin
      t3419-*.sh: Fix arithmetic expansion syntax error
      lib-git-svn.sh: Move web-server handling code into separate function
      t9157-*.sh: Add an svn version check
      t6038-*.sh: Pass the -b (--binary) option to sed on cygwin
      t3032-*.sh: Pass the -b (--binary) option to sed on cygwin
      t3032-*.sh: Do not strip CR from line-endings while grepping on MinGW
      t4135-*.sh: Skip the "backslash" tests on cygwin
      t9157-*.sh: Make the svn version check more precise
      svndump.c: Fix a printf format compiler warning

René Scharfe (10):
      diff: avoid repeated scanning while looking for funcname
      work around buggy S_ISxxx(m) implementations
      add description parameter to OPT__VERBOSE
      add description parameter to OPT__DRY_RUN
      add description parameter to OPT__QUIET
      add OPT__FORCE
      archive: improve --verbose description
      branch: improve --verbose description
      verify-tag: document --verbose
      close file on error in read_mmfile()

Robin H. Johnson (2):
      Fix false positives in t3404 due to SHELL=/bin/false
      t9001: Fix test prerequisites

SZEDER Gábor (7):
      bisect: improve error message of 'bisect log' while not bisecting
      bisect: improve error msg of 'bisect reset' when original HEAD is deleted
      bisect: check for mandatory argument of 'bisect replay'
      bash: offer refs for 'git bisect start'
      bash: not all 'git bisect' subcommands make sense when not bisecting
      bash: support more 'git notes' subcommands and their options
      bash: support pretty format aliases

Santi Béjar (1):
      parse-remote: handle detached HEAD

Schalk, Ken (1):
      t3030: Add a testcase for resolvable rename/add conflict with symlinks

Sebastian Schuberth (3):
      MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility
      MinGW: Add missing file mode bit defines
      On Windows, avoid git-gui to call Cygwin's nice utility

Shawn O. Pearce (2):
      Use git_open_noatime when accessing pack data
      Work around EMFILE when there are too many pack files

Stefan Haller (2):
      gitk: Prevent the text pane from becoming editable
      gitk: Make text selectable on Mac

Stephen Boyd (4):
      send-email: Use To: headers in patch files
      send-email: Don't leak To: headers between patches
      parse-options: Don't call parse_options_check() so much
      parse-options: do not infer PARSE_OPT_NOARG from option type

StephenB (1):
      git svn: fix the final example in man page

Steven Walter (2):
      git-svn: check_cherry_pick should exclude commits already in our history
      git-svn: allow the mergeinfo property to be set

Sven Eckelmann (1):
      contrib/ciabot: git-describe commit instead of HEAD

Sylvain Rabot (2):
      gitweb: add extensions to highlight feature map
      gitweb: remove unnecessary test when closing file descriptor

Tay Ray Chuan (14):
      smart-http: Don't change POST to GET when following redirect
      t5523-push-upstream: add function to ensure fresh upstream repo
      t5523-push-upstream: test progress messages
      format-patch: page output with --stdout
      t5550-http-fetch: add missing '&&'
      t5550-http-fetch: add test for http-fetch
      shift end_url_with_slash() from http.[ch] to url.[ch]
      url: add str wrapper for end_url_with_slash()
      http-backend: use end_url_with_slash()
      http-push: Normalise directory names when pushing to some WebDAV servers
      http-push: check path length before using it
      http-push: add trailing slash at arg-parse time, instead of later on
      http-fetch: rework url handling
      bash completion: add basic support for git-reflog

Thiago Farina (3):
      commit: Add commit_list prefix in two function names.
      builtin/branch.c: Use ALLOC_GROW instead of alloc_nr and xrealloc.
      builtin/rm.c: Use ALLOC_GROW instead of alloc_nr and xrealloc.

Thomas Rast (12):
      send-email: Refuse to send cover-letter template subject
      prefix_filename(): safely handle the case where pfx_len=0
      merge-file: correctly find files when called in subdir
      repack: place temporary packs under .git/objects/pack/
      {cvs,svn}import: use the new 'git read-tree --empty'
      t0003: properly quote $HOME
      gitk: Add the equivalent of diff --color-words
      userdiff: fix typo in ruby and python word regexes
      Documentation/git-archive: spell --worktree-attributes correctly
      Documentation/githooks: post-rewrite-copy-notes never existed
      submodule: fix relative url parsing for scp-style origin
      t0000: quote TAP snippets in test code

Tomas Carnecky (1):
      stash drops the stash even if creating the branch fails because it already exists

Tony Luck (1):
      Better advice on using topic branches for kernel development

Torsten Bögershausen (1):
      t9143: do not fail when unhandled.log.gz is not created

Uwe Kleine-König (2):
      get_author_ident_from_commit(): remove useless quoting
      Documentation/git-clone: describe --mirror more verbosely

Vasyl' Vavrychuk (1):
      trace.c: mark file-local function static

Wesley J. Landaker (1):
      Documentation: Refer to git-commit-tree in git-filter-branch help

Yann Dirson (5):
      t/t3415: use && where applicable.
      Fix copy-pasted comments related to tree diff handling.
      Keep together options controlling the behaviour of diffcore-rename.
      Document that rev-list --graph triggers parent rewriting.
      diff: use "find" instead of "detect" as prefix for long forms of -M and -C

knittl (1):
      bash: Match lightweight tags in prompt

Ævar Arnfjörð Bjarmason (25):
      send-email: use catfile() to concatenate files
      Makefile: add CC to TRACK_CFLAGS
      perl: bump the required Perl version to 5.8 from 5.6.[21]
      perl: use "use warnings" instead of -w
      send-email: use lexical filehandle for opendir
      send-email: use lexical filehandles for $compose
      send-email: use lexical filehandles during sending
      send-email: get_patch_subject doesn't need a prototype
      send-email: file_declares_8bit_cte doesn't need a prototype
      send-email: unique_email_list doesn't need a prototype
      send-email: cleanup_compose_files doesn't need a prototype
      send-email: use \E***\Q instead of \*\*\*
      send-email: sanitize_address use $foo, not "$foo"
      send-email: sanitize_address use qq["foo"], not "\"foo\""
      send-email: use (?:) instead of () if no match variables are needed
      send-email: send_message die on $!, not $?
      send-email: make_message_id use "require" instead of "use"
      send-email: use Perl idioms in while loop
      send-email: is_rfc2047_quoted use qr// regexes
      send-email: extract_valid_address use qr// regexes
      Makefile & configure: add a NO_FNMATCH flag
      Makefile & configure: add a NO_FNMATCH_CASEFOLD flag
      test-lib: make test_expect_code a test command
      t7004-tag.sh: re-arrange git tag comment for clarity
      tests: use test_cmp instead of piping to diff(1)

Štěpán Němec (8):
      Use angles for placeholders consistently
      Fix odd markup in --diff-filter documentation
      Use parentheses and `...' where appropriate
      Remove stray quotes in --pretty and --format documentation
      Put a space between `<' and argument in pack-objects usage string
      Fix {update,checkout}-index usage strings
      CodingGuidelines: Add a section on writing documentation
      diff,difftool: Don't use the {0,2} notation in usage strings

^ permalink raw reply

* A note from the maintainer
From: Junio C Hamano @ 2011-01-31  5:51 UTC (permalink / raw)
  To: git

Welcome to git development community.

This message is written by the maintainer and talks about how Git
project is managed, and how you can work with it.

* IRC and Mailing list

Members of the development community can sometimes be found on #git
IRC channel on Freenode.  Its log is available at:

        http://colabti.org/irclogger/irclogger_log/git

The development is primarily done on the Git mailing list. If you have
patches, please send them to the list address (git@vger.kernel.org).
following Documentation/SubmittingPatches.  You don't have to be
subscribed to send messages there, and the convention is to Cc:
everybody involved, so you don't even have to say "Please Cc: me, I am
not subscribed".

If you sent a patch and you did not hear any response from anybody for
several days, it could be that your patch was totally uninteresting, but
it also is possible that it was simply lost in the noise.  Please do not
hesitate to send a reminder message politely in such a case.  Messages
getting lost in the noise is a sign that people involved don't have enough
mental/time bandwidth to process them right at the moment, and it often
helps to wait until the list traffic becomes calmer before sending such a
reminder.

The list archive is available at a few public sites as well:

        http://news.gmane.org/gmane.comp.version-control.git/
        http://marc.theaimsgroup.com/?l=git
        http://www.spinics.net/lists/git/

and some people seem to prefer to read it over NNTP:

        nntp://news.gmane.org/gmane.comp.version-control.git

When you point at a message in a mailing list archive, using
gmane is often the easiest to follow by readers, like this:

        http://thread.gmane.org/gmane.comp.version-control.git/27/focus=217

as it also allows people who subscribe to the mailing list as
gmane newsgroup to "jump to" the article.

* Repositories, branches and documentation.

My public git.git repository is at:

        git://git.kernel.org/pub/scm/git/git.git/

Immediately after I publish to the primary repository at kernel.org, I
also push into an alternate here:

        git://repo.or.cz/alt-git.git/

Impatient people might have better luck with the latter one (there are a
few other mirrors I push into at sourceforge and github as well).

Their gitweb interfaces are found at:

        http://git.kernel.org/?p=git/git.git
        http://repo.or.cz/w/alt-git.git

There are three branches in git.git repository that are not about the
source tree of git: "todo", "html" and "man".  The first one was meant to
contain TODO list for me, but I am not good at maintaining such a list and
it is in an abandoned state.  The branch mostly is used to keep some
helper scripts I use to maintain git and the regular "What's cooking"
messages these days.

The "html" and "man" are autogenerated documentation from the tip of the
"master" branch; the tip of "html" is extracted to be visible at
kernel.org at:

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

The above URL is the top-level documentation page, and it has
links to documentation of older releases.

The script to maintain these two documentation branches are found in the
"todo" branch as dodoc.sh, if you are interested.  It is a demonstration
of how to use a post-update hook to automate a task after pushing into a
repository.

There are four branches in git.git repository that track the source tree
of git: "master", "maint", "next", and "pu".  I may add more maintenance
branches (e.g. "maint-1.6.3") if we have hugely backward incompatible
feature updates in the future to keep an older release alive; I may not,
but the distributed nature of git means any volunteer can run a
stable-tree like that herself.

The "master" branch is meant to contain what are very well tested and
ready to be used in a production setting.  There could occasionally be
minor breakages or brown paper bag bugs but they are not expected to be
anything major, and more importantly quickly and trivially fixable.  Every
now and then, a "feature release" is cut from the tip of this branch and
they typically are named with three dotted decimal digits.  The last such
release was 1.7.4 done on Jan 30, 2011.  You can expect that the tip of
the "master" branch is always more stable than any of the released
versions.

Whenever a feature release is made, "maint" branch is forked off from
"master" at that point.  Obvious, safe and urgent fixes after a feature
release are applied to this branch and maintenance releases are cut from
it.  The maintenance releases are named with four dotted decimal, named
after the feature release they are updates to; the last such release was
1.7.3.5.  New features never go to this branch.  This branch is also
merged into "master" to propagate the fixes forward.

A trivial and safe enhancement goes directly on top of "master".  A new
development, either initiated by myself or more often by somebody who
found his or her own itch to scratch, does not usually happen on "master",
however.  Instead, a separate topic branch is forked from the tip of
"master", and it first is tested in isolation; I may make minimum fixups
at this point.  Usually there are a handful such topic branches that are
running ahead of "master" in git.git repository.  I do not publish the tip
of these branches in my public repository, however, partly to keep the
number of branches that downstream developers need to worry about low, and
primarily because I am lazy.

The quality of topic branches are judged primarily by the mailing list
discussions.  Some of them start out as "good idea but obviously is broken
in some areas (e.g. breaks the existing testsuite)" and then with some
more work (either by the original contributor's effort or help from other
people on the list) becomes "more or less done and can now be tested by
wider audience".  Luckily, most of them start out in the latter, better
shape.

The "next" branch is to merge and test topic branches in the latter
category.  In general, the branch always contains the tip of "master".  It
might not be quite rock-solid production ready, but is expected to work
more or less without major breakage.  I usually use "next" version of git
for my own work, so it cannot be _that_ broken to prevent me from
integrating and pushing the changes out.  The "next" branch is where new
and exciting things take place.

The two branches "master" and "maint" are never rewound, and "next"
usually will not be either (this automatically means the topics that have
been merged into "next" are usually not rebased, and you can find the tip
of topic branches you are interested in from the output of "git log
next"). You should be able to safely build on top of them.

After a feature release is made from "master", however, "next" will be
rebuilt from the tip of "master" using the surviving topics.  The commit
that replaces the tip of the "next" will usually have the identical tree,
but it will have different ancestry from the tip of "master".

The "pu" (proposed updates) branch bundles all the remainder of topic
branches.  The "pu" branch, and topic branches that are only in "pu", are
subject to rebasing in general.  By the above definition of how "next"
works, you can tell that this branch will contain quite experimental and
obviously broken stuff.

When a topic that was in "pu" proves to be in testable shape, it graduates
to "next".  I do this with:

        git checkout next
        git merge that-topic-branch

Sometimes, an idea that looked promising turns out to be not so good and
the topic can be dropped from "pu" in such a case.

A topic that is in "next" is expected to be polished to perfection before
it is merged to "master" (that's why "master" can be expected to stay more
stable than any released version).  Similarly to the above, I do it with
this:

        git checkout master
        git merge that-topic-branch
        git branch -d that-topic-branch

Note that being in "next" is not a guarantee to appear in the next release
(being in "master" is such a guarantee, unless it is later found seriously
broken and reverted), nor even in any future release.  There even were
cases that topics needed reverting a few commits in them before graduating
to "master", or a topic that already was in "next" were entirely reverted
from "next" because fatal flaws were found in them later.


* Other people's trees, trusted lieutenants and credits.

Documentation/SubmittingPatches outlines to whom your proposed changes
should be sent.  As described in contrib/README, I would delegate fixes
and enhancements in contrib/ area to the primary contributors of them.

Although the following are included in git.git repository, they have their
own authoritative repository and maintainers:

 - git-gui/ comes from git-gui project, maintained by Pat Thoyts:

        git://repo.or.cz/git-gui.git

 - gitk-git/ comes from Paul Mackerras's gitk project:

        git://git.kernel.org/pub/scm/gitk/gitk.git

I would like to thank everybody who helped to raise git into the current
shape.  Especially I would like to thank the git list regulars whose help
I have relied on and expect to continue relying on heavily:

 - Linus on general design issues.

 - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre, René
   Scharfe, Jeff King, Jonathan Nieder, Johan Herland, Johannes Sixt,
   Sverre Rabbelier and Thomas Rast on general implementation issues
   and reviews on the mailing list.

 - Shawn and Nicolas Pitre on pack issues.

 - Martin Langhoff, Frank Lichtenheld and Ævar Arnfjörð Bjarmason on
   cvsserver and cvsimport.

 - Paul Mackerras on gitk.

 - Eric Wong, David D. Kilzer and Sam Vilain on git-svn.

 - Simon Hausmann and Pete Wyckoff on git-p4.

 - Jakub Narebski, John Hawley, Petr Baudis, Luben Tuikov, Giuseppe Bilotta on
   gitweb.

 - J. Bruce Fields, Jonathan Nieder, Michael J Gruber and Thomas Rast on
   documentation (and countless others for proofreading and fixing).

 - Alexandre Julliard on Emacs integration.

 - David Aguilar and Charles Bailey for taking good care of git-mergetool
   (and Theodore Ts'o for creating it in the first place) and git-difftool.

 - Johannes Schindelin, Johannes Sixt, Erik Faye-Lund and others for their
   effort to move things forward on the Windows front.

 - People on non-Linux platforms for keeping their eyes on portability;
   especially, Randal Schwartz, Theodore Ts'o, Jason Riedy, Thomas Glanzmann,
   Brandon Casey, Jeff King, Alex Riesen and countless others.

* This document

The latest copy of this document is found in git.git repository,
on 'todo' branch, as MaintNotes.

^ permalink raw reply

* What's cooking in git.git (Jan 2011, #06; Sun, 30)
From: Junio C Hamano @ 2011-01-31  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'.

1.7.4 is out. I'd like to stop and calm the tree down for a few days
so that we can catch any brown-paper-bag bugs before moving things
forward, and then open the floodgate for the next cycle, which I am
inclined to designate as "We would have done these differently if we
were creating git from scratch with the experience we have and wisdom
we have gained" cycle, allowing minor backward incompatibilities,
somewhat like 1.6.0 but not so drastic.  The result would probably
be called 1.8.0--the details in a separate message.

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

* jc/fsck-fixes (2011-01-26) 2 commits
 - fsck: do not give up too early in fsck_dir()
 - fsck: drop unused parameter from traverse_one_object()

--------------------------------------------------
[Stalled]

* nd/index-doc (2010-09-06) 1 commit
 - doc: technical details about the index file format

Half-written but it is a good start.  I may need to give some help in
describing more recent index extensions.

* cb/ignored-paths-are-precious (2010-08-21) 1 commit
 - checkout/merge: optionally fail operation when ignored files need to be overwritten

This needs tests; also we know of longstanding bugs in related area that
needs to be addressed---they do not have to be part of this series but
their reproduction recipe would belong to the test script for this topic.

It would hurt users to make the new feature on by default, especially the
ones with subdirectories that come and go.

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

* jc/rename-degrade-cc-to-c (2011-01-06) 3 commits
 - diffcore-rename: fall back to -C when -C -C busts the rename limit
 - diffcore-rename: record filepair for rename src
 - diffcore-rename: refactor "too many candidates" logic

IIRC, this was a weather-baloon "if you wanted to, this may be how you
would do it" without test updates.  People who care need to help moving
things forward.

* jc/rerere-remaining (2011-01-06) 1 commit
 - rerere "remaining"

Just a handful of weatherballoon patches without proper tests, in response
to feature/minor fix requests.

* ab/p4 (2011-01-11) 1 commit
 - git-p4: correct indenting and formatting

Lacks sign-off but is trivial.

* tr/maint-branch-no-track-head (2010-12-14) 1 commit
 - branch: do not attempt to track HEAD implicitly

Probably needs a re-roll to exclude either (1) any ref outside the
hierarchies for branches (i.e. refs/{heads,remotes}/), or (2) only refs
outside refs/ hierarchies (e.g. HEAD, ORIG_HEAD, ...).  The latter feels
safer and saner.

* hv/mingw-fs-funnies (2010-12-14) 5 commits
 - mingw_rmdir: set errno=ENOTEMPTY when appropriate
 - mingw: add fallback for rmdir in case directory is in use
 - mingw: make failures to unlink or move raise a question
 - mingw: work around irregular failures of unlink on windows
 - mingw: move unlink wrapper to mingw.c

Will be rerolled (Heiko, 2010-12-23)

* mz/rebase (2010-12-28) 31 commits
 - rebase -i: remove unnecessary state rebase-root
 - rebase -i: don't read unused variable preserve_merges
 - git-rebase--am: remove unnecessary --3way option
 - rebase -m: don't print exit code 2 when merge fails
 - rebase -m: remember allow_rerere_autoupdate option
 - rebase: remember strategy and strategy options
 - rebase: remember verbose option
 - rebase: extract code for writing basic state
 - rebase: factor out sub command handling
 - rebase: make -v a tiny bit more verbose
 - rebase -i: align variable names
 - rebase: show consistent conflict resolution hint
 - rebase: extract am code to new source file
 - rebase: extract merge code to new source file
 - rebase: remove $branch as synonym for $orig_head
 - rebase -i: support --stat
 - rebase: factor out call to pre-rebase hook
 - rebase: factor out clean work tree check
 - rebase: factor out reference parsing
 - rebase: reorder validation steps
 - rebase -i: remove now unnecessary directory checks
 - rebase: factor out command line option processing
 - rebase: align variable content
 - rebase: align variable names
 - rebase: stricter check of standalone sub command
 - rebase: act on command line outside parsing loop
 - rebase: improve detection of rebase in progress
 - rebase: remove unused rebase state 'prev_head'
 - rebase: read state outside loop
 - rebase: refactor reading of state
 - rebase: clearer names for directory variables

Will be rerolled (Martin, Jan 28).

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

* jn/unpack-lstat-failure-report (2011-01-12) 2 commits
  (merged to 'next' on 2011-01-24 at 1245180)
 + unpack-trees: handle lstat failure for existing file
 + unpack-trees: handle lstat failure for existing directory

* rr/fi-import-marks-if-exists (2011-01-15) 1 commit
 - fast-import: Introduce --import-marks-if-exists

Looked reasonable.

* tr/diff-words-test (2011-01-18) 4 commits
 - t4034 (diff --word-diff): add a minimum Perl drier test vector
 - t4034 (diff --word-diff): style suggestions
 - userdiff: simplify word-diff safeguard
 - t4034: bulk verify builtin word regex sanity

I thought this was Ok; further comments, anybody?

* ef/alias-via-run-command (2011-01-07) 1 commit
  (merged to 'next' on 2011-01-06 at 1fbd4a0)
 + alias: use run_command api to execute aliases

* uk/checkout-ambiguous-ref (2011-01-11) 1 commit
  (merged to 'next' on 2011-01-11 at 2aa30de)
 + checkout: fix bug with ambiguous refs

* cb/setup (2010-12-27) 1 commit
  (merged to 'next' on 2011-01-05 at 790b288)
 + setup: translate symlinks in filename when using absolute paths

* ae/better-template-failure-report (2010-12-18) 1 commit
  (merged to 'next' on 2011-01-05 at d3f9142)
 + Improve error messages when temporary file creation fails

* jc/unpack-trees (2010-12-22) 2 commits
 - unpack_trees(): skip trees that are the same in all input
 - unpack-trees.c: cosmetic fix

* jn/cherry-pick-strategy-option (2010-12-10) 1 commit
  (merged to 'next' on 2011-01-05 at 3ccc590)
 + cherry-pick/revert: add support for -X/--strategy-option

* nd/struct-pathspec (2010-12-15) 21 commits
  (merged to 'next' on 2011-01-24 at 08f1774)
 + t7810: overlapping pathspecs and depth limit
 + grep: drop pathspec_matches() in favor of tree_entry_interesting()
 + grep: use writable strbuf from caller for grep_tree()
 + grep: use match_pathspec_depth() for cache/worktree grepping
 + grep: convert to use struct pathspec
 + Convert ce_path_match() to use match_pathspec_depth()
 + Convert ce_path_match() to use struct pathspec
 + struct rev_info: convert prune_data to struct pathspec
 + pathspec: add match_pathspec_depth()
 + tree_entry_interesting(): optimize wildcard matching when base is matched
 + tree_entry_interesting(): support wildcard matching
 + tree_entry_interesting(): fix depth limit with overlapping pathspecs
 + tree_entry_interesting(): support depth limit
 + tree_entry_interesting(): refactor into separate smaller functions
 + diff-tree: convert base+baselen to writable strbuf
 + glossary: define pathspec
 + Move tree_entry_interesting() to tree-walk.c and export it
 + tree_entry_interesting(): remove dependency on struct diff_options
 + Convert struct diff_options to use struct pathspec
 + diff-no-index: use diff_tree_setup_paths()
 + Add struct pathspec
 (this branch is used by en/object-list-with-pathspec.)

* en/object-list-with-pathspec (2010-09-20) 2 commits
  (merged to 'next' on 2011-01-24 at 134f65c)
 + Add testcases showing how pathspecs are handled with rev-list --objects
 + Make rev-list --objects work together with pathspecs
 (this branch uses nd/struct-pathspec.)

I've been toying with the above two topics and am reasonably happy.
I suspect that there could be (and probably need to be) further
consolidation of the two remaining pathspec API, but this seems to
be already usable.

* tr/merge-unborn-clobber (2010-08-22) 1 commit
 - Exhibit merge bug that clobbers index&WT

* ab/i18n (2010-10-07) 161 commits
 - po/de.po: complete German translation
 - po/sv.po: add Swedish translation
 - gettextize: git-bisect bisect_next_check "You need to" message
 - gettextize: git-bisect [Y/n] messages
 - gettextize: git-bisect bisect_replay + $1 messages
 - gettextize: git-bisect bisect_reset + $1 messages
 - gettextize: git-bisect bisect_run + $@ messages
 - gettextize: git-bisect die + eval_gettext messages
 - gettextize: git-bisect die + gettext messages
 - gettextize: git-bisect echo + eval_gettext message
 - gettextize: git-bisect echo + gettext messages
 - gettextize: git-bisect gettext + echo message
 - gettextize: git-bisect add git-sh-i18n
 - gettextize: git-stash drop_stash say/die messages
 - gettextize: git-stash "unknown option" message
 - gettextize: git-stash die + eval_gettext $1 messages
 - gettextize: git-stash die + eval_gettext $* messages
 - gettextize: git-stash die + eval_gettext messages
 - gettextize: git-stash die + gettext messages
 - gettextize: git-stash say + gettext messages
 - gettextize: git-stash echo + gettext message
 - gettextize: git-stash add git-sh-i18n
 - gettextize: git-submodule "blob" and "submodule" messages
 - gettextize: git-submodule "path not initialized" message
 - gettextize: git-submodule "[...] path is ignored" message
 - gettextize: git-submodule "Entering [...]" message
 - gettextize: git-submodule $errmsg messages
 - gettextize: git-submodule "Submodule change[...]" messages
 - gettextize: git-submodule "cached cannot be used" message
 - gettextize: git-submodule $update_module say + die messages
 - gettextize: git-submodule die + eval_gettext messages
 - gettextize: git-submodule say + eval_gettext messages
 - gettextize: git-submodule echo + eval_gettext messages
 - gettextize: git-submodule add git-sh-i18n
 - gettextize: git-pull "rebase against" / "merge with" messages
 - gettextize: git-pull "[...] not currently on a branch" message
 - gettextize: git-pull "You asked to pull" message
 - gettextize: git-pull split up "no candidate" message
 - gettextize: git-pull eval_gettext + warning message
 - gettextize: git-pull eval_gettext + die message
 - gettextize: git-pull die messages
 - gettextize: git-pull add git-sh-i18n
 - gettext docs: add "Testing marked strings" section to po/README
 - gettext docs: the Git::I18N Perl interface
 - gettext docs: the git-sh-i18n.sh Shell interface
 - gettext docs: the gettext.h C interface
 - gettext docs: add "Marking strings for translation" section in po/README
 - gettext docs: add a "Testing your changes" section to po/README
 - po/pl.po: add Polish translation
 - po/hi.po: add Hindi Translation
 - po/en_GB.po: add British English translation
 - po/de.po: add German translation
 - Makefile: only add gettext tests on XGETTEXT_INCLUDE_TESTS=YesPlease
 - gettext docs: add po/README file documenting Git's gettext
 - gettextize: git-am printf(1) message to eval_gettext
 - gettextize: git-am core say messages
 - gettextize: git-am "Apply?" message
 - gettextize: git-am clean_abort messages
 - gettextize: git-am cannot_fallback messages
 - gettextize: git-am die messages
 - gettextize: git-am eval_gettext messages
 - gettextize: git-am multi-line getttext $msg; echo
 - gettextize: git-am one-line gettext $msg; echo
 - gettextize: git-am add git-sh-i18n
 - gettext tests: add GETTEXT_POISON tests for shell scripts
 - gettext tests: add GETTEXT_POISON support for shell scripts
 - Makefile: MSGFMT="msgfmt --check" under GNU_GETTEXT
 - Makefile: add GNU_GETTEXT, set when we expect GNU gettext
 - gettextize: git-shortlog basic messages
 - gettextize: git-revert split up "could not revert/apply" message
 - gettextize: git-revert literal "me" messages
 - gettextize: git-revert "Your local changes" message
 - gettextize: git-revert basic messages
 - gettextize: git-notes "Refusing to %s notes in %s" message
 - gettextize: git-notes GIT_NOTES_REWRITE_MODE error message
 - gettextize: git-notes basic commands
 - gettextize: git-gc "Auto packing the repository" message
 - gettextize: git-gc basic messages
 - gettextize: git-describe basic messages
 - gettextize: git-clean clean.requireForce messages
 - gettextize: git-clean basic messages
 - gettextize: git-bundle basic messages
 - gettextize: git-archive basic messages
 - gettextize: git-status "renamed: " message
 - gettextize: git-status "Initial commit" message
 - gettextize: git-status "Changes to be committed" message
 - gettextize: git-status shortstatus messages
 - gettextize: git-status "nothing to commit" messages
 - gettextize: git-status basic messages
 - gettextize: git-push "prevent you from losing" message
 - gettextize: git-push basic messages
 - gettextize: git-tag tag_template message
 - gettextize: git-tag basic messages
 - gettextize: git-reset "Unstaged changes after reset" message
 - gettextize: git-reset reset_type_names messages
 - gettextize: git-reset basic messages
 - gettextize: git-rm basic messages
 - gettextize: git-mv "bad" messages
 - gettextize: git-mv basic messages
 - gettextize: git-merge "Wonderful" message
 - gettextize: git-merge "You have not concluded your merge" messages
 - gettextize: git-merge "Updating %s..%s" message
 - gettextize: git-merge basic messages
 - gettextize: git-log "--OPT does not make sense" messages
 - gettextize: git-log basic messages
 - gettextize: git-grep "--open-files-in-pager" message
 - gettextize: git-grep basic messages
 - gettextize: git-fetch split up "(non-fast-forward)" message
 - gettextize: git-fetch update_local_ref messages
 - gettextize: git-fetch formatting messages
 - gettextize: git-fetch basic messages
 - gettextize: git-diff basic messages
 - gettextize: git-commit advice messages
 - gettextize: git-commit "enter the commit message" message
 - gettextize: git-commit print_summary messages
 - gettextize: git-commit formatting messages
 - gettextize: git-commit "middle of a merge" message
 - gettextize: git-commit basic messages
 - gettextize: git-checkout "Switched to a .. branch" message
 - gettextize: git-checkout "HEAD is now at" message
 - gettextize: git-checkout describe_detached_head messages
 - gettextize: git-checkout: our/their version message
 - gettextize: git-checkout basic messages
 - gettextize: git-branch "(no branch)" message
 - gettextize: git-branch "git branch -v" messages
 - gettextize: git-branch "Deleted branch [...]" message
 - gettextize: git-branch "remote branch '%s' not found" message
 - gettextize: git-branch basic messages
 - gettextize: git-add refresh_index message
 - gettextize: git-add "remove '%s'" message
 - gettextize: git-add "pathspec [...] did not match" message
 - gettextize: git-add "Use -f if you really want" message
 - gettextize: git-add "no files added" message
 - gettextize: git-add basic messages
 - gettextize: git-clone "Cloning into" message
 - gettextize: git-clone basic messages
 - gettext tests: test message re-encoding under C
 - po/is.po: add Icelandic translation
 - gettext tests: mark a test message as not needing translation
 - gettext tests: test re-encoding with a UTF-8 msgid under Shell
 - gettext tests: test message re-encoding under Shell
 - gettext tests: add detection for is_IS.ISO-8859-1 locale
 - gettext tests: test if $VERSION exists before using it
 - gettextize: git-init "Initialized [...] repository" message
 - gettextize: git-init basic messages
 - gettext tests: skip lib-gettext.sh tests under GETTEXT_POISON
 - gettext tests: add GETTEXT_POISON=YesPlease Makefile parameter
 - gettext.c: use libcharset.h instead of langinfo.h when available
 - gettext.c: work around us not using setlocale(LC_CTYPE, "")
 - builtin.h: Include gettext.h
 - Makefile: use variables and shorter lines for xgettext
 - Makefile: tell xgettext(1) that our source is in UTF-8
 - Makefile: provide a --msgid-bugs-address to xgettext(1)
 - Makefile: A variable for options used by xgettext(1) calls
 - gettext tests: locate i18n lib&data correctly under --valgrind
 - gettext: setlocale(LC_CTYPE, "") breaks Git's C function assumptions
 - gettext tests: rename test to work around GNU gettext bug
 - gettext: add infrastructure for translating Git with gettext
 - builtin: use builtin.h for all builtin commands
 - tests: use test_cmp instead of piping to diff(1)
 - t7004-tag.sh: re-arrange git tag comment for clarity

It is getting ridiculously painful to keep re-resolving the conflicts with
other topics in flight, even with the help with rerere.

Needs a bit more minor work to get the basic code structure right.

^ permalink raw reply

* Re: [PATCH v2] Disallow empty section and variable names
From: Johannes Sixt @ 2011-01-31  7:48 UTC (permalink / raw)
  To: Libor Pechacek; +Cc: git
In-Reply-To: <20110130203445.GA9689@fm.suse.cz>

Am 1/30/2011 21:34, schrieb Libor Pechacek:
> It is possible to break your repository config by creating an invalid key.  The
> config parser in turn chokes on it.
> 
> $ git init
> Initialized empty Git repository in /tmp/gittest/.git/
> $ git config .foo false
> $ git config .foo
> fatal: bad config file line 6 in .git/config

Just a nit: Your example is misleading because it "only" shows that if you
shove in junk, and ask for junk, you get breakage. However, the breakage
is much more serious, and you could have demonstrated it, if you had
written your example like this:

$ git config .foo false
$ git config user.email
fatal: bad config file line 6 in .git/config

> +	test_must_fail git config . &&
> +	test_must_fail git config .foo &&
> +	test_must_fail git config foo. &&
> +	test_must_fail git config .foo. &&

Not a nit: These tests only show that 'git config' cannot be asked for
junk, but they do not show that you cannot insert junk into the config
file anymore using 'git config'.

-- Hannes

^ permalink raw reply

* Re: Project- vs. Package-Level Branching in Git
From: Enrico Weigelt @ 2011-01-31  8:56 UTC (permalink / raw)
  To: git
In-Reply-To: <m3hbcpaozx.fsf@localhost.localdomain>

* Jakub Narebski <jnareb@gmail.com> wrote:

> > perhaps you'd like to have a look at my Briegel build tool:
> > 
> >     git://pubgit.metux.de/projects/briegel.git
> >     
> > ;-)
> 
> Is it Git-specific build tool?  If it is so, perhaps it would be good
> to add it to
>  
>   https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools
> 
> page on Git Wiki?

Not really, it just happens to use git extensively, eg. it can
pull sources and sysroot images directly from git repos (Tarballs
and textbased patches are still supported, but I dont use them
anymore for years).


cu
-- 
----------------------------------------------------------------------
 Enrico Weigelt, metux IT service -- http://www.metux.de/

 phone:  +49 36207 519931  email: weigelt@metux.de
 mobile: +49 151 27565287  icq:   210169427         skype: nekrad666
----------------------------------------------------------------------
 Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
----------------------------------------------------------------------

^ permalink raw reply

* Re: [PATCH v2] Disallow empty section and variable names
From: Libor Pechacek @ 2011-01-31  9:17 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: git
In-Reply-To: <4D46694F.5070208@viscovery.net>

On Mon 31-01-11 08:48:31, Johannes Sixt wrote:
> Am 1/30/2011 21:34, schrieb Libor Pechacek:
> > It is possible to break your repository config by creating an invalid key.  The
> > config parser in turn chokes on it.
> > 
> > $ git init
> > Initialized empty Git repository in /tmp/gittest/.git/
> > $ git config .foo false
> > $ git config .foo
> > fatal: bad config file line 6 in .git/config
> 
> Just a nit: Your example is misleading because it "only" shows that if you
> shove in junk, and ask for junk, you get breakage. However, the breakage
> is much more serious, and you could have demonstrated it, if you had
> written your example like this:
> 
> $ git config .foo false
> $ git config user.email
> fatal: bad config file line 6 in .git/config

Yes, that one is more persuasive.  Thanks for hint.

> > +	test_must_fail git config . &&
> > +	test_must_fail git config .foo &&
> > +	test_must_fail git config foo. &&
> > +	test_must_fail git config .foo. &&
> 
> Not a nit: These tests only show that 'git config' cannot be asked for
> junk, but they do not show that you cannot insert junk into the config
> file anymore using 'git config'.

This change builds on top of "Sanity-check config variable names" which makes
setting and getting values use the same key checking routine.  For the moment,
it does not matter if we test the "set" ot "get" path.

Yet, I accept the get/set operations can use different key checking routine in
the future (although I can't imagine the reson for it), and overall testing
the "set" path is in line with the idea of the patch.

Thanks for input, I'll send updated patch.

Libor
-- 
Libor Pechacek
SUSE L3 Team, Prague

^ permalink raw reply

* Re: [PATCH v2] Disallow empty section and variable names
From: Johannes Sixt @ 2011-01-31  9:29 UTC (permalink / raw)
  To: Libor Pechacek; +Cc: git
In-Reply-To: <20110131091728.GB24297@fm.suse.cz>

Am 1/31/2011 10:17, schrieb Libor Pechacek:
> On Mon 31-01-11 08:48:31, Johannes Sixt wrote:
>> Am 1/30/2011 21:34, schrieb Libor Pechacek:
>>> +	test_must_fail git config . &&
>>> +	test_must_fail git config .foo &&
>>> +	test_must_fail git config foo. &&
>>> +	test_must_fail git config .foo. &&
>>
>> Not a nit: These tests only show that 'git config' cannot be asked for
>> junk, but they do not show that you cannot insert junk into the config
>> file anymore using 'git config'.
> 
> This change builds on top of "Sanity-check config variable names" which makes
> setting and getting values use the same key checking routine.  For the moment,
> it does not matter if we test the "set" ot "get" path.

The purpose of tests is not to check the implementation, but the
observable behavior. Therefore, you want to write a test case to make sure
that neither usage is broken by future changes.

-- Hannes

^ permalink raw reply

* Re: [PATCH] git-p4: Corrected typo.
From: Vitor Antunes @ 2011-01-31 11:25 UTC (permalink / raw)
  To: Thomas Berg; +Cc: git
In-Reply-To: <AANLkTi=kmcWn9WWbhA4bMZ5bEo1imacEugT0BcOU9jry@mail.gmail.com>

Hi Thomas,

On Sun, Jan 30, 2011 at 11:34 PM, Thomas Berg <merlin66b@gmail.com> wrote:
> By the way, on this mailing list please don't top post. I think the
> preferred style is interleaved posting:
> http://en.wikipedia.org/wiki/Posting_style#Interleaved_style

Thanks for introducing me to these "rules" that are being used within
the git community :)

>> I also have some branch detection related patch prepared. Do you use
>> this feature often?
>
> No, the Perforce repo I work with is so non-standard that the only
> solution has been to import all the branches separately and graft the
> history together. This covers all my needs at the moment.

Maybe I'm not seeing some obvious limitation, but I can't imagine a
branching structure that can't be imported into git. Could please you
give me an example?

Thanks,

-- 
Vitor Antunes

^ permalink raw reply

* Re: [PATCH] git-p4: Corrected typo.
From: Thomas Berg @ 2011-01-31 12:51 UTC (permalink / raw)
  To: Vitor Antunes; +Cc: git
In-Reply-To: <AANLkTinCL6+oTAbh4WpsWHx8cZ8cxZvQxSO9EX_xsHh0@mail.gmail.com>

Hi Vitor,

On Mon, Jan 31, 2011 at 12:25 PM, Vitor Antunes <vitor.hda@gmail.com> wrote:
>> No, the Perforce repo I work with is so non-standard that the only
>> solution has been to import all the branches separately and graft the
>> history together. This covers all my needs at the moment.
>
> Maybe I'm not seeing some obvious limitation, but I can't imagine a
> branching structure that can't be imported into git. Could please you
> give me an example?

Here I was thinking of the fact that git-p4 (last time I checked the
implementation ) uses the list of branch specs in Perforce for
figuring out the parent of a branch. Our branch specs have changed
over time (they are used for different integration purposes), so they
are no longer usable for this purpose.

I also discovered bugs in git-p4: in some cases, if the first submit
to a new branch in Perforce is not identical to the branch it derives
from, the import was not correct.

One other issue with Perforce, CVS and many other systems is that they
branch per file. Therefore Perforce can represent partial merges
between two branches, which git cannot. Because of this, translating
merges in Perforce to merges in git is not always possible or
desirable:
- if you integrate just one file from one branch to another in
Perforce, and leave the rest unmerged, you probably want to represent
it as a normal git commit (not a merge)
- if you merge almost everything, but leave out a file for some
reason, you may still want to represent it as a merge in git

The git-p4raw tool has excellent handling of merges, see details in
this file around line 4300:
https://github.com/samv/git-p4raw/blob/master/git-p4raw
It supports several algorithms for automatic merge detection, as well
as manually changing it after the import is done.

Cheers,
Thomas

^ permalink raw reply

* [PATCH v3] Disallow empty section and variable names
From: Libor Pechacek @ 2011-01-31 13:08 UTC (permalink / raw)
  To: git; +Cc: Johannes Sixt
In-Reply-To: <4D468109.8020409@viscovery.net>

It is possible to break your repository config by creating an invalid key.  The
config parser in turn chokes on it.

$ git init
Initialized empty Git repository in /tmp/gittest/.git/
$ git config .foo false
$ git config core.bare
fatal: bad config file line 6 in .git/config

This patch makes git-config reject keys which start or end with a dot, adds
tests for these cases and also fixes a typo in t5526-fetch-submodules, which
was exposed by the new check.

Signed-off-by: Libor Pechacek <lpechacek@suse.cz>
Cc: Johannes Sixt <j.sixt@viscovery.net>
---

Incoporated feedback from Johannes, introduced keylen local variable to improve
readability of the code.  Applies on top "Sanity-check config variable names".

 config.c                    |   10 ++++++++--
 t/t1300-repo-config.sh      |    4 ++++
 t/t5526-fetch-submodules.sh |    2 +-
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/config.c b/config.c
index fde91f5..5eb89a7 100644
--- a/config.c
+++ b/config.c
@@ -1113,6 +1113,7 @@ int git_config_set(const char *key, const char *value)
 int git_config_parse_key(const char *key, char **store_key, int *baselen_)
 {
 	int i, dot, baselen;
+	int keylen = strlen(key);
 	const char *last_dot = strrchr(key, '.');
 
 	/*
@@ -1120,11 +1121,16 @@ int git_config_parse_key(const char *key, char **store_key, int *baselen_)
 	 * key name separated by a dot, we have to know where the dot is.
 	 */
 
-	if (last_dot == NULL) {
+	if (last_dot == NULL || *key == '.') {
 		error("key does not contain a section: %s", key);
 		return -2;
 	}
 
+	if (keylen && key[keylen-1] == '.') {
+		error("key does not contain variable name: %s", key);
+		return -2;
+	}
+
 	baselen = last_dot - key;
 	if (baselen_)
 		*baselen_ = baselen;
@@ -1132,7 +1138,7 @@ int git_config_parse_key(const char *key, char **store_key, int *baselen_)
 	/*
 	 * Validate the key and while at it, lower case it for matching.
 	 */
-	*store_key = xmalloc(strlen(key) + 1);
+	*store_key = xmalloc(keylen + 1);
 
 	dot = 0;
 	for (i = 0; key[i]; i++) {
diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh
index c3d91d1..53fb822 100755
--- a/t/t1300-repo-config.sh
+++ b/t/t1300-repo-config.sh
@@ -889,6 +889,10 @@ test_expect_success 'key sanity-checking' '
 	test_must_fail git config foo.1bar &&
 	test_must_fail git config foo."ba
 				z".bar &&
+	test_must_fail git config . false &&
+	test_must_fail git config .foo false &&
+	test_must_fail git config foo. false &&
+	test_must_fail git config .foo. false &&
 	git config foo.bar true &&
 	git config foo."ba =z".bar false
 '
diff --git a/t/t5526-fetch-submodules.sh b/t/t5526-fetch-submodules.sh
index 884a5e5..7106c6c 100755
--- a/t/t5526-fetch-submodules.sh
+++ b/t/t5526-fetch-submodules.sh
@@ -124,7 +124,7 @@ test_expect_success "--recurse-submodules overrides fetchRecurseSubmodules setti
 	(
 		cd downstream &&
 		git fetch --recurse-submodules >../actual.out 2>../actual.err &&
-		git config -f --unset .gitmodules submodule.submodule.fetchRecurseSubmodules true &&
+		git config -f .gitmodules --unset submodule.submodule.fetchRecurseSubmodules true &&
 		git config --unset submodule.submodule.fetchRecurseSubmodules
 	) &&
 	test_cmp expect.out actual.out &&
-- 
1.7.4.rc3.11.g863f7

^ permalink raw reply related

* Re: [PATCH] git-p4: Corrected typo.
From: Vitor Antunes @ 2011-01-31 13:39 UTC (permalink / raw)
  To: Thomas Berg; +Cc: git
In-Reply-To: <AANLkTinrALdy9w7K50r=k-oMV9V5+7+LKvui_DSmJ6nK@mail.gmail.com>

Hi Thomas,

On Mon, Jan 31, 2011 at 12:51 PM, Thomas Berg <merlin66b@gmail.com> wrote:
>> Maybe I'm not seeing some obvious limitation, but I can't imagine a
>> branching structure that can't be imported into git. Could please you
>> give me an example?
>
> Here I was thinking of the fact that git-p4 (last time I checked the
> implementation ) uses the list of branch specs in Perforce for
> figuring out the parent of a branch. Our branch specs have changed
> over time (they are used for different integration purposes), so they
> are no longer usable for this purpose.

My personal git-p4 script uses a configuration option to define the
list of branches. I also added an option to get the list of branches
filtered by user (p4 branches -u), which avoids waiting for the server
since I don't have any branches defined.

> I also discovered bugs in git-p4: in some cases, if the first submit
> to a new branch in Perforce is not identical to the branch it derives
> from, the import was not correct.

Another thing that I modified was the following lines:

1559                         for (prev, cur) in
zip(self.previousDepotPaths, depotPaths):
1560                             for i in range(0, min(len(cur), len(prev))):
1561                                 if cur[i] <> prev[i]:
1562                                     i = i - 1
1563                                     break

This tries to find the root directory of all branches, but does that
comparing char by char. So, if you have something like:

//depot/branches/branch
//depot/branches/branch_test1
//depot/branches/branch_test2

It will assume that your root branch is //depot/branches/branch, which is wrong.
I've modified this to split the string by "/" and compare those items,
making sure it will detect //depot/branches as the root directory.

> One other issue with Perforce, CVS and many other systems is that they
> branch per file. Therefore Perforce can represent partial merges
> between two branches, which git cannot. Because of this, translating
> merges in Perforce to merges in git is not always possible or
> desirable:
> - if you integrate just one file from one branch to another in
> Perforce, and leave the rest unmerged, you probably want to represent
> it as a normal git commit (not a merge)
> - if you merge almost everything, but leave out a file for some
> reason, you may still want to represent it as a merge in git

Yes, merge detection is something that is working. I never tried to
look into this because I don't find it too important for my work flow.

> The git-p4raw tool has excellent handling of merges, see details in
> this file around line 4300:
> https://github.com/samv/git-p4raw/blob/master/git-p4raw
> It supports several algorithms for automatic merge detection, as well
> as manually changing it after the import is done.

I'll have to look into this later :)

Bye,
-- 
Vitor Antunes

^ permalink raw reply

* Re: What's cooking in git.git (Jan 2011, #06; Sun, 30)
From: Sverre Rabbelier @ 2011-01-31 15:08 UTC (permalink / raw)
  To: Junio C Hamano, Ævar Arnfjörð Bjarmason; +Cc: git
In-Reply-To: <7vzkqh8vqw.fsf@alter.siamese.dyndns.org>

Heya,

On Mon, Jan 31, 2011 at 06:53, Junio C Hamano <gitster@pobox.com> wrote:
> 1.7.4 is out. I'd like to stop and calm the tree down for a few days
> so that we can catch any brown-paper-bag bugs before moving things
> forward, and then open the floodgate for the next cycle, which I am
> inclined to designate as "We would have done these differently if we
> were creating git from scratch with the experience we have and wisdom
> we have gained" cycle, allowing minor backward incompatibilities,
> somewhat like 1.6.0 but not so drastic.  The result would probably
> be called 1.8.0--the details in a separate message.

Nice, is this based on the topics that are currently cooking, or on
people having indicated an intent to submit such patches?



Now that we're past 1.7.4., perhaps it's time to resurrect a dead
thread. From a past "What's cooking":

On Tue, Dec 14, 2010 at 03:20, Junio C Hamano <gitster@pobox.com> wrote:
> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
>
>> On Mon, Dec 13, 2010 at 09:34, Junio C Hamano <gitster@pobox.com> wrote:
>>
>>> Needs a bit more minor work to get the basic code structure right.
>>
>> And I'm still not sure (see earlier replies to "What's Cooking" posts)
>> what needs to be done to make it better.
>
> One open question was why you do not want to move 'LIB_OBJS += gettext.o'
> away from the LIB_OBJS section down to the configuration evaluation
> section, i.e., why gettext.o would be different from block-sha1/sha1.o.

Ævar, you didn't respond to that message. Junio, do I understand
correctly that if this problem is addressed the topic is ready to be
merged to next?

-- 
Cheers,

Sverre Rabbelier

^ permalink raw reply

* Re: [PATCH] git-p4: Corrected typo.
From: Vitor Antunes @ 2011-01-31 15:54 UTC (permalink / raw)
  To: Thomas Berg; +Cc: git
In-Reply-To: <AANLkTinKQRfwaMpGQiDCkh1RerQ_MrakwvNLAqgmbF9A@mail.gmail.com>

Hi Thomas,

> On Mon, Jan 31, 2011 at 12:51 PM, Thomas Berg <merlin66b@gmail.com> wrote:
>> I also discovered bugs in git-p4: in some cases, if the first submit
>> to a new branch in Perforce is not identical to the branch it derives
>> from, the import was not correct.

I forgot to answer this specific topic. I also noticed this bug.
Basically, git-p4 choses the first commit from the origin branch to
start the branch from. My idea was to walk through the commit tree in
the original branch until I find a commit in which the diff is null.
Unfortunately, I don't know what is the best approach to achieve this
in git. Do you have any ideas?

Thanks,
-- 
Vitor Antunes

^ permalink raw reply

* Re: [PATCH v3] Disallow empty section and variable names
From: Jens Lehmann @ 2011-01-31 16:48 UTC (permalink / raw)
  To: Libor Pechacek; +Cc: git, Johannes Sixt
In-Reply-To: <20110131130855.GC24297@fm.suse.cz>

Am 31.01.2011 14:08, schrieb Libor Pechacek:
> diff --git a/t/t5526-fetch-submodules.sh b/t/t5526-fetch-submodules.sh
> index 884a5e5..7106c6c 100755
> --- a/t/t5526-fetch-submodules.sh
> +++ b/t/t5526-fetch-submodules.sh
> @@ -124,7 +124,7 @@ test_expect_success "--recurse-submodules overrides fetchRecurseSubmodules setti
>  	(
>  		cd downstream &&
>  		git fetch --recurse-submodules >../actual.out 2>../actual.err &&
> -		git config -f --unset .gitmodules submodule.submodule.fetchRecurseSubmodules true &&
> +		git config -f .gitmodules --unset submodule.submodule.fetchRecurseSubmodules true &&

This is not quite the right fix (notice the extra "true" value
at the end). IMHO this should be fixed separately, patch coming.

^ permalink raw reply

* [PATCH] t5526: Fix wrong argument order in "git config"
From: Jens Lehmann @ 2011-01-31 16:51 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List, Libor Pechacek

This fixes a typo where the "git config" arguments "-f" and "--unset" were
swapped leading to the creation of a "--unset" file.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
---

Now that 1.7.4 is out and somebody else already stumbled across this
typo I introduced ...

 t/t5526-fetch-submodules.sh |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/t/t5526-fetch-submodules.sh b/t/t5526-fetch-submodules.sh
index 884a5e5..a5f4585 100755
--- a/t/t5526-fetch-submodules.sh
+++ b/t/t5526-fetch-submodules.sh
@@ -124,7 +124,7 @@ test_expect_success "--recurse-submodules overrides fetchRecurseSubmodules setti
 	(
 		cd downstream &&
 		git fetch --recurse-submodules >../actual.out 2>../actual.err &&
-		git config -f --unset .gitmodules submodule.submodule.fetchRecurseSubmodules true &&
+		git config --unset -f .gitmodules submodule.submodule.fetchRecurseSubmodules &&
 		git config --unset submodule.submodule.fetchRecurseSubmodules
 	) &&
 	test_cmp expect.out actual.out &&
-- 
1.7.3.4.27.g3921d.dirty

^ permalink raw reply related

* Planning for 1.7.5 and 1.8.0
From: Junio C Hamano @ 2011-01-31 17:05 UTC (permalink / raw)
  To: git
In-Reply-To: <7vzkqh8vqw.fsf@alter.siamese.dyndns.org>

Now the 1.7.4 release is out, I'd like people to help thinking about the
next cycle(s).

As a discussion-starter, here are my random wishes.  Even though this does
not attempt to be exhaustive, keeping the number of goals manageably small
may help us focus.

 * The i18n effort Ævar Arnfjörð Bjarmason started two cycles ago has
   stalled. If enough people feel i18n's Porcelain UI is worth having, I
   think we would need a brief calming period in the entire tree in order
   for us to get the minimum support (definition of _() macro that is
   empty is a good start) and _() mark-up of existing strings in, and then
   ask everybody to rebase their ongoing work on top of it.

 * There was a discussion on documentation updates to reduce "here we tell
   you only the basics; see elsewhere for details", and consolidating the
   description of configuration options in one place.

 * Nguyễn has been scratching my longstanding itch by attempting to unify
   two pathspec semantics (the ones based on tree-diff matches only
   leading path while others know globs) to reduce inconsistencies. I
   would really want to see this polished and in the main release.

 * Elijah's fix to "rev-list --objects", together with the updated
   pathspec semantics will allow us to cleanly implement narrow cloning
   (possibly deprecating and replacing the narrow checkout in the
   future).  I am hoping that we can lay groundwork on this inside one
   cycle and the initial end-to-end implementation in another.

 * Shawn Pearce says that the diff implementation JGit uses (histogram
   diff) performs way better than the xdiff implementation we use by
   default. It would be great if somebody can spend time taking a look at
   it and possibly port it back to C-git.


Over the time we have discussed minor glitches and inconsistencies that we
all (or at least most of us anyway) agreed we would have done differently
if we were writing Git from scratch, yet we cannot retroactively introduce
differences not to harm existing users.  We may also want to revisit these
discussions during this round--if there are reasonable number of them that
we can agree the benefit of tweaked semantics/behaviour outweighs the risk
of breaking and having to update ancient scripts that exploited obscure
corner case behaviour of Git, we would want warn the users loudly, bite
the bullet and break them so that we can move forward.  We would however
need to roll such potentially disruptive changes into a big single cycle,
like we did in 1.6.0.

I'll follow-up this message with a couple of example proposals.  Please
send your own, imitating the format of the message, as a reply to this
message.  Do not forget to retitle your message when you do so (iow, I
don't want to see "Re: Planning for 1.7.5 and 1.8.0").

Thanks.

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox