Code

git.git
17 years agoFix funny types used in attribute value representation
Junio C Hamano [Wed, 18 Apr 2007 23:16:37 +0000 (16:16 -0700)]
Fix funny types used in attribute value representation

It was bothering me a lot that I abused small integer values
casted to (void *) to represent non string values in
gitattributes.  This corrects it by making the type of attribute
values (const char *), and using the address of a few statically
allocated character buffer to denote true/false.  Unset attributes
are represented as having NULLs as their values.

Added in-header documentation to explain how git_checkattr()
routine should be called.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAllow low-level driver to specify different behaviour during internal merge.
Junio C Hamano [Wed, 18 Apr 2007 19:18:25 +0000 (12:18 -0700)]
Allow low-level driver to specify different behaviour during internal merge.

This allows [merge "drivername"] to have a variable "recursive"
that names a different low-level merge driver to be used when
merging common ancestors to come up with a virtual ancestor.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoCustom low-level merge driver: change the configuration scheme.
Junio C Hamano [Wed, 18 Apr 2007 18:27:32 +0000 (11:27 -0700)]
Custom low-level merge driver: change the configuration scheme.

This changes the configuration syntax for defining a low-level
merge driver to be:

[merge "<<drivername>>"]
driver = "<<command line>>"
name = "<<driver description>>"

which is much nicer to read and is extensible.  Credit goes to
Martin Waitz and Linus.

In addition, when we use an external low-level merge driver, it
is reported as an extra output from merge-recursive, using the
value of merge.<<drivername>.name variable.

The demonstration in t6026 has also been updated.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAllow the default low-level merge driver to be configured.
Junio C Hamano [Wed, 18 Apr 2007 08:47:21 +0000 (01:47 -0700)]
Allow the default low-level merge driver to be configured.

When no 'merge' attribute is given to a path, merge-recursive
uses the built-in xdl-merge as the low-level merge driver.

A new configuration item 'merge.default' can name a low-level
merge driver of user's choice to be used instead.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoCustom low-level merge driver support.
Junio C Hamano [Wed, 18 Apr 2007 05:51:45 +0000 (22:51 -0700)]
Custom low-level merge driver support.

This allows users to specify custom low-level merge driver per
path, using the attributes mechanism.  Just like you can specify
one of built-in "text", "binary", "union" low-level merge
drivers by saying:

* merge=text
.gitignore merge=union
*.jpg merge=binary

pick a name of your favorite merge driver, and assign it as the
value of the 'merge' attribute.

A custom low-level merge driver is defined via the config
mechanism.  This patch introduces 'merge.driver', a multi-valued
configuration.  Its value is the name (i.e. the one you use as
the value of 'merge' attribute) followed by a command line
specification.  The command line can contain %O, %A, and %B to
be interpolated with the names of temporary files that hold the
common ancestor version, the version from your branch, and the
version from the other branch, and the resulting command is
spawned.

The low-level merge driver is expected to update the temporary
file for your branch (i.e. %A) with the result and exit with
status 0 for a clean merge, and non-zero status for a conflicted
merge.

A new test in t6026 demonstrates a sample usage.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd a demonstration/test of customized merge.
Junio C Hamano [Tue, 17 Apr 2007 07:05:00 +0000 (00:05 -0700)]
Add a demonstration/test of customized merge.

This demonstrates how the new low-level per-path merge backends,
union and ours, work, and shows how they are controlled by the
gitattribute mechanism.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAllow specifying specialized merge-backend per path.
Junio C Hamano [Tue, 17 Apr 2007 05:59:18 +0000 (22:59 -0700)]
Allow specifying specialized merge-backend per path.

This allows 'merge' attribute to control how the file-level
three-way merge is done per path.

 - If you set 'merge' to true, leave it unspecified, or set it
   to "text", we use the built-in 3-way xdl-merge.

 - If you set 'merge' to false, or set it to "binary, the
   "binary" merge is done.  The merge result is the blob from
   'our' tree, but this still leaves the path conflicted, so
   that the mess can be sorted out by the user.  This is
   obviously meant to be useful for binary files.

 - 'merge=union' (this is the first example of a string valued
   attribute, introduced in the previous one) uses the "union"
   merge.  The "union" merge takes lines in conflicted hunks
   from both sides, which is useful for line-oriented files such
   as .gitignore.

Instead fo setting merge to 'true' or 'false' by using 'merge'
or '-merge', setting it explicitly to "text" or "binary" will
become useful once we start allowing custom per-path backends to
be added, and allow them to be activated for the default
(i.e. 'merge' attribute specified to 'true' or 'false') case,
using some other mechanisms.  Setting merge attribute to "text"
or "binary" will be a way to explicitly request to override such
a custom default for selected paths.

Currently there is no way to specify random programs but it
should be trivial for motivated contributors to add later.

There is one caveat, though.  ll_merge() is called for both
internal ancestor merge and the outer "final" merge.  I think an
interactive custom per-path merge backend should refrain from
going interactive when performing an internal merge (you can
tell it by checking call_depth) and instead just call either
ll_xdl_merge() if the content is text, or call ll_binary_merge()
otherwise.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agomerge-recursive: separate out xdl_merge() interface.
Junio C Hamano [Tue, 17 Apr 2007 04:58:01 +0000 (21:58 -0700)]
merge-recursive: separate out xdl_merge() interface.

This just moves code around to make the actual call to
xdl_merge() into a separate function.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAllow more than true/false to attributes.
Junio C Hamano [Tue, 17 Apr 2007 04:33:31 +0000 (21:33 -0700)]
Allow more than true/false to attributes.

This allows you to define three values (and possibly more) to
each attribute: true, false, and unset.

Typically the handlers that notice and act on attribute values
treat "unset" attribute to mean "do your default thing"
(e.g. crlf that is unset would trigger "guess from contents"),
so being able to override a setting to an unset state is
actually useful.

 - If you want to set the attribute value to true, have an entry
   in .gitattributes file that mentions the attribute name; e.g.

*.o binary

 - If you want to set the attribute value explicitly to false,
   use '-'; e.g.

*.a -diff

 - If you want to make the attribute value _unset_, perhaps to
   override an earlier entry, use '!'; e.g.

*.a -diff
c.i.a !diff

This also allows string values to attributes, with the natural
syntax:

attrname=attrvalue

but you cannot use it, as nobody takes notice and acts on
it yet.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocument git-check-attr
James Bowes [Sun, 15 Apr 2007 01:27:20 +0000 (21:27 -0400)]
Document git-check-attr

Signed-off-by: James Bowes <jbowes@dangerouslyinc.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoChange attribute negation marker from '!' to '-'.
Junio C Hamano [Sun, 15 Apr 2007 21:56:09 +0000 (14:56 -0700)]
Change attribute negation marker from '!' to '-'.

At the same time, we do not want to allow arbitrary strings for
attribute names, as we are likely to want to extend the syntax
later.  Allow only alnum, dash, underscore and dot for now.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDefine a built-in attribute macro "binary".
Junio C Hamano [Sat, 14 Apr 2007 15:56:35 +0000 (08:56 -0700)]
Define a built-in attribute macro "binary".

For binary files we would want to disable textual diff
generation and automatic crlf conversion.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoattribute macro support
Junio C Hamano [Sat, 14 Apr 2007 15:54:37 +0000 (08:54 -0700)]
attribute macro support

This adds "attribute macros" (for lack of better name).  So far,
we have low-level attributes such as crlf and diff, which are
defined in operational terms --- setting or unsetting them on a
particular path directly affects what is done to the path.  For
example, in order to decline diffs or crlf conversions on a
binary blob, no diffs on PostScript files, and treat all other
files normally, you would have something like these:

* diff crlf
*.ps !diff
proprietary.o !diff !crlf

That is fine as the operation goes, but gets unwieldy rather
rapidly, when we start adding more low-level attributes that are
defined in operational terms.  A near-term example of such an
attribute would be 'merge-3way' which would control if git
should attempt the usual 3-way file-level merge internally, or
leave merging to a specialized external program of user's
choice.  When it is added, we do _not_ want to force the users
to update the above to:

* diff crlf merge-3way
*.ps !diff
proprietary.o !diff !crlf !merge-3way

The way this patch solves this issue is to realize that the
attributes the user is assigning to paths are not defined in
terms of operations but in terms of what they are.

All of the three low-level attributes usually make sense for
most of the files that sane SCM users have git operate on (these
files are typically called "text').  Only a few cases, such as
binary blob, need exception to decline the "usual treatment
given to text files" -- and people mark them as "binary".

So this allows the $GIT_DIR/info/alternates and .gitattributes
at the toplevel of the project to also specify attributes that
assigns other attributes.  The syntax is '[attr]' followed by an
attribute name followed by a list of attribute names:

[attr] binary !diff !crlf !merge-3way

When "binary" attribute is set to a path, if the path has not
got diff/crlf/merge-3way attribute set or unset by other rules,
this rule unsets the three low-level attributes.

It is expected that the user level .gitattributes will be
expressed mostly in terms of attributes based on what the files
are, and the above sample would become like this:

(built-in attribute configuration)
[attr] binary !diff !crlf !merge-3way
* diff crlf merge-3way

(project specific .gitattributes)
proprietary.o binary

(user preference $GIT_DIR/info/attributes)
*.ps !diff

There are a few caveats.

 * As described above, you can define these macros only in
   $GIT_DIR/info/attributes and toplevel .gitattributes.

 * There is no attempt to detect circular definition of macro
   attributes, and definitions are evaluated from bottom to top
   as usual to fill in other attributes that have not yet got
   values.  The following would work as expected:

[attr] text diff crlf
[attr] ps text !diff
*.ps ps

   while this would most likely not (I haven't tried):

[attr] ps text !diff
[attr] text diff crlf
*.ps ps

 * When a macro says "[attr] A B !C", saying that a path does
   not have attribute A does not let you tell anything about
   attributes B or C.  That is, given this:

[attr] text diff crlf
[attr] ps text !diff
*.txt !ps

  path hello.txt, which would match "*.txt" pattern, would have
  "ps" attribute set to zero, but that does not make text
  attribute of hello.txt set to false (nor diff attribute set to
  true).

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMakefile: add patch-ids.h back in.
Junio C Hamano [Sun, 15 Apr 2007 20:39:32 +0000 (13:39 -0700)]
Makefile: add patch-ids.h back in.

I lost it by mistake while shuffling the gitattributes series which
originally was on top of the subproject topic onto the master branch.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix 'diff' attribute semantics.
Junio C Hamano [Sun, 15 Apr 2007 21:35:11 +0000 (14:35 -0700)]
Fix 'diff' attribute semantics.

This is in the same spirit as the previous one.  Earlier 'diff'
meant 'do the built-in binary heuristics and disable patch text
generation based on it' while '!diff' meant 'do not guess, do
not generate patch text'.  There was no way to say 'do generate
patch text even when the heuristics says it has NUL in it'.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix 'crlf' attribute semantics.
Junio C Hamano [Sun, 15 Apr 2007 20:35:45 +0000 (13:35 -0700)]
Fix 'crlf' attribute semantics.

Earlier we said 'crlf lets the path go through core.autocrlf
process while !crlf disables it altogether'.  This fixes the
semantics to:

 - Lack of 'crlf' attribute makes core.autocrlf to apply
   (i.e. we guess based on the contents and if platform
   expresses its desire to have CRLF line endings via
   core.autocrlf, we do so).

 - Setting 'crlf' attribute to true forces CRLF line endings in
   working tree files, even if blob does not look like text
   (e.g. contains NUL or other bytes we consider binary).

 - Setting 'crlf' attribute to false disables conversion.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoTeach 'diff' about 'diff' attribute.
Junio C Hamano [Fri, 13 Apr 2007 06:05:29 +0000 (23:05 -0700)]
Teach 'diff' about 'diff' attribute.

This makes paths that explicitly unset 'diff' attribute not to
produce "textual" diffs from 'git-diff' family.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDefine 'crlf' attribute.
Junio C Hamano [Fri, 13 Apr 2007 05:30:05 +0000 (22:30 -0700)]
Define 'crlf' attribute.

This defines the semantics of 'crlf' attribute as an example.
When a path has this attribute unset (i.e. '!crlf'), autocrlf
line-end conversion is not applied.

Eventually we would want to let users to build a pipeline of
processing to munge blob data to filesystem format (and in the
other direction) based on combination of attributes, and at that
point the mechanism in convert_to_{git,working_tree}() that
looks at 'crlf' attribute needs to be enhanced.  Perhaps the
existing 'crlf' would become the first step in the input chain,
and the last step in the output chain.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd basic infrastructure to assign attributes to paths
Junio C Hamano [Thu, 12 Apr 2007 08:07:32 +0000 (01:07 -0700)]
Add basic infrastructure to assign attributes to paths

This adds the basic infrastructure to assign attributes to
paths, in a way similar to what the exclusion mechanism does
based on $GIT_DIR/info/exclude and .gitignore files.

An attribute is just a simple string that does not contain any
whitespace.  They can be specified in $GIT_DIR/info/attributes
file, and .gitattributes file in each directory.

Each line in these files defines a pattern matching rule.
Similar to the exclusion mechanism, a later match overrides an
earlier match in the same file, and entries from .gitattributes
file in the same directory takes precedence over the ones from
parent directories.  Lines in $GIT_DIR/info/attributes file are
used as the lowest precedence default rules.

A line is either a comment (an empty line, or a line that begins
with a '#'), or a rule, which is a whitespace separated list of
tokens.  The first token on the line is a shell glob pattern.
The rest are names of attributes, each of which can optionally
be prefixed with '!'.  Such a line means "if a path matches this
glob, this attribute is set (or unset -- if the attribute name
is prefixed with '!').  For glob matching, the same "if the
pattern does not have a slash in it, the basename of the path is
matched with fnmatch(3) against the pattern, otherwise, the path
is matched with the pattern with FNM_PATHNAME" rule as the
exclusion mechanism is used.

This does not define what an attribute means.  Tying an
attribute to various effects it has on git operation for paths
that have it will be specified separately.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Sat, 14 Apr 2007 11:18:46 +0000 (04:18 -0700)]
Merge branch 'maint'

* maint:
  git-quiltimport complaining yet still working
  config.txt: Fix grammatical error in description of http.noEPSV
  config.txt: Change pserver to server in description of gitcvs.*
  config.txt: Document core.autocrlf
  config.txt: Document gitcvs.allbinary
  Do not default to --no-index when given two directories.
  Use rev-list --reverse in git-rebase.sh

17 years agogit-quiltimport complaining yet still working
Linus Torvalds [Fri, 13 Apr 2007 21:34:18 +0000 (14:34 -0700)]
git-quiltimport complaining yet still working

There were two bugs: "stop_here" doesn't exist, but the bug that causes
this code to trigger in the *first* place is the wrong use of "$dotest".
It should be ".dotest"

This is essentially the same bug introduced by 87ab7992, one was
fixed with 0d38ab25 but this was somehow left behind.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoconfig.txt: Fix grammatical error in description of http.noEPSV
Frank Lichtenheld [Fri, 13 Apr 2007 16:02:33 +0000 (18:02 +0200)]
config.txt: Fix grammatical error in description of http.noEPSV

s/doesn't/don't/ since "ftp servers" is plural

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoconfig.txt: Change pserver to server in description of gitcvs.*
Frank Lichtenheld [Fri, 13 Apr 2007 16:02:32 +0000 (18:02 +0200)]
config.txt: Change pserver to server in description of gitcvs.*

These variables apply to the SSH access as well, so don't use
pserver here which might confuse users.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoconfig.txt: Document core.autocrlf
Frank Lichtenheld [Fri, 13 Apr 2007 16:02:31 +0000 (18:02 +0200)]
config.txt: Document core.autocrlf

Text shamelessly stolen from the 1.5.1 release notes.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoconfig.txt: Document gitcvs.allbinary
Frank Lichtenheld [Fri, 13 Apr 2007 16:02:30 +0000 (18:02 +0200)]
config.txt: Document gitcvs.allbinary

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDo not default to --no-index when given two directories.
Junio C Hamano [Fri, 13 Apr 2007 10:23:20 +0000 (03:23 -0700)]
Do not default to --no-index when given two directories.

git-diff -- a/ b/ always defaulted to --no-index, primarily
because the function is_in_index() was implemented quite
incorrectly.

Noticed by Patrick Maaß and Simon Schubert independently,
initial patch was provided by Patrick but I fixed it
differently.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUse rev-list --reverse in git-rebase.sh
Alex Riesen [Fri, 13 Apr 2007 22:19:05 +0000 (00:19 +0200)]
Use rev-list --reverse in git-rebase.sh

...and drop the last perl dependency in the script.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'jc/cherry'
Junio C Hamano [Fri, 13 Apr 2007 04:04:27 +0000 (21:04 -0700)]
Merge branch 'jc/cherry'

* jc/cherry:
  Documentation: --cherry-pick
  git-log --cherry-pick A...B
  Refactor patch-id filtering out of git-cherry and git-format-patch.
  Add %m to '--pretty=format:'

17 years agoMerge branch 'maint'
Junio C Hamano [Fri, 13 Apr 2007 04:04:09 +0000 (21:04 -0700)]
Merge branch 'maint'

* maint:
  handle_options in git wrapper miscounts the options it handled.

17 years agohandle_options in git wrapper miscounts the options it handled.
Matthias Lederhofer [Thu, 12 Apr 2007 18:52:03 +0000 (20:52 +0200)]
handle_options in git wrapper miscounts the options it handled.

handle_options did not count the number of used arguments
correctly.  When --git-dir was used the extra argument was
not added to the number of handled arguments.

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix git {log,show,...} --pretty=email
Junio C Hamano [Thu, 12 Apr 2007 10:04:05 +0000 (03:04 -0700)]
Fix git {log,show,...} --pretty=email

An earlier --subject-prefix patch forgot that format-patch is
not the only codepath that adds the "[PATCH]" prefix, and broke
everybody else in the log family.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDon't yap about merge-subtree during make
Shawn O. Pearce [Thu, 12 Apr 2007 05:21:18 +0000 (01:21 -0400)]
Don't yap about merge-subtree during make

By default we are pretty quiet about the actual commands that
we are running.  So we should continue to be quiet about the new
merge-subtree hardlink to merge-recursive.  Technically this is not
a builtin, but it is close because subtree is actually builtin to
a non-builtin.  So lets just make things easy and call it a builtin.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocumentation: --cherry-pick
Junio C Hamano [Tue, 10 Apr 2007 22:28:32 +0000 (15:28 -0700)]
Documentation: --cherry-pick

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-log --cherry-pick A...B
Junio C Hamano [Mon, 9 Apr 2007 10:40:38 +0000 (03:40 -0700)]
git-log --cherry-pick A...B

This is meant to be a saner replacement for "git-cherry".

When used with "A...B", this filters out commits whose patch
text has the same patch-id as a commit on the other side.  It
would probably most useful to use with --left-right.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoRefactor patch-id filtering out of git-cherry and git-format-patch.
Junio C Hamano [Tue, 10 Apr 2007 00:01:27 +0000 (17:01 -0700)]
Refactor patch-id filtering out of git-cherry and git-format-patch.

This implements the patch-id computation and recording library,
patch-ids.c, and rewrites the get_patch_ids() function used in
cherry and format-patch to use it, so that they do not pollute
the object namespace.  Earlier code threw non-objects into the
in-core object database, and hoped for not getting bitten by
SHA-1 collisions.  While it may be practically Ok, it still was
an ugly hack.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd %m to '--pretty=format:'
Junio C Hamano [Mon, 9 Apr 2007 09:34:05 +0000 (02:34 -0700)]
Add %m to '--pretty=format:'

When used with '--boundary A...B', this shows the -/</> marker
you would get with --left-right option to 'git-log' family.
When symmetric diff is not used, everybody is shown to be on the
"right" branch.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agosscanf/strtoul: parse integers robustly
Jim Meyering [Mon, 9 Apr 2007 23:01:44 +0000 (01:01 +0200)]
sscanf/strtoul: parse integers robustly

* builtin-grep.c (strtoul_ui): Move function definition from here, to...
* git-compat-util.h (strtoul_ui): ...here, with an added "base" parameter.
* builtin-grep.c (cmd_grep): Update use of strtoul_ui to include base, "10".
* builtin-update-index.c (read_index_info): Diagnose an invalid mode integer
that is out of range or merely larger than INT_MAX.
(cmd_update_index): Use strtoul_ui, not sscanf.
* convert-objects.c (write_subdirectory): Likewise.

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd testcase for format-patch --subject-prefix (take 3)
Robin H. Johnson [Wed, 11 Apr 2007 23:58:08 +0000 (16:58 -0700)]
Add testcase for format-patch --subject-prefix (take 3)

Add testcase for format-patch --subject-prefix support.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd custom subject prefix support to format-patch (take 3)
Robin H. Johnson [Wed, 11 Apr 2007 23:58:07 +0000 (16:58 -0700)]
Add custom subject prefix support to format-patch (take 3)

Add a new option to git-format-patch, entitled --subject-prefix that allows
control of the subject prefix '[PATCH]'. Using this option, the text 'PATCH' is
replaced with whatever input is provided to the option. This allows easily
generating patches like '[PATCH 2.6.21-rc3]' or properly numbered series like
'[-mm3 PATCH N/M]'. This patch provides the implementation and documentation.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Thu, 12 Apr 2007 01:43:01 +0000 (18:43 -0700)]
Merge branch 'maint'

* maint:
  GIT 1.5.1.1
  cvsserver: Fix handling of diappeared files on update
  fsck: do not complain on detached HEAD.
  (encode_85, decode_85): Mark source buffer pointer as "const".

17 years agoGIT 1.5.1.1 v1.5.1.1
Junio C Hamano [Wed, 11 Apr 2007 21:39:07 +0000 (14:39 -0700)]
GIT 1.5.1.1

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocvsserver: Fix handling of diappeared files on update
Frank Lichtenheld [Wed, 11 Apr 2007 20:38:19 +0000 (22:38 +0200)]
cvsserver: Fix handling of diappeared files on update

Only send a modified response if the client sent a
"Modified" entry. This fixes the case where the
file was locally deleted on the client without
being removed from CVS. In this case the client
will only have sent the Entry for the file but nothing
else.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Acked-by: Martin Langhoff <martin@catalyst.net.nz>
Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agofsck: do not complain on detached HEAD.
Junio C Hamano [Wed, 11 Apr 2007 08:28:43 +0000 (01:28 -0700)]
fsck: do not complain on detached HEAD.

Detached HEAD is just a normal state of a repository.  Do not
say anything about it.

Do not give worrying "error:" messages when we let the user know
that the HEAD points at nothing (i.e. yet to be born branch),
nor we do not have any default refs to start following the
objects chain.  Reword them as "notice:".

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years ago(encode_85, decode_85): Mark source buffer pointer as "const".
Jim Meyering [Mon, 9 Apr 2007 22:56:33 +0000 (00:56 +0200)]
(encode_85, decode_85): Mark source buffer pointer as "const".

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogitweb: Allow configuring the default projects order and add order 'none'
Frank Lichtenheld [Fri, 6 Apr 2007 21:58:24 +0000 (23:58 +0200)]
gitweb: Allow configuring the default projects order and add order 'none'

Introduce new configuration variable $default_projects_order
that can be used to specify the default order of projects on
the index page if no 'o' parameter is given.

Allow a new value 'none' for order that will cause the projects
to be in the order we learned about them. In case of reading the
list of projects from a file, this should be the order as they are
listed in the file. In case of reading the list of projects from
a directory this will probably give random results depending on the
filesystem in use.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogitweb: Allow forks with project list file
Frank Lichtenheld [Fri, 6 Apr 2007 21:58:11 +0000 (23:58 +0200)]
gitweb: Allow forks with project list file

Make it possible to use the forks feature even when
reading the list of projects from a file, by creating
a list of known prefixes as we go. Forks have to be
listed after the main project in order to be recognised
as such.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Tue, 10 Apr 2007 20:53:07 +0000 (13:53 -0700)]
Merge branch 'maint'

* maint:
  Documentation: show-ref: document --exclude-existing
  cvsexportcommit -p : fix the usage of git-apply -C.

17 years agoDocumentation: show-ref: document --exclude-existing
Julian Phillips [Mon, 9 Apr 2007 20:57:36 +0000 (21:57 +0100)]
Documentation: show-ref: document --exclude-existing

Use the comment in the code to document the --exclude-existing
function to git-show-ref.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocvsexportcommit -p : fix the usage of git-apply -C.
Tomash Brechko [Mon, 9 Apr 2007 11:24:02 +0000 (15:24 +0400)]
cvsexportcommit -p : fix the usage of git-apply -C.

Unlike 'patch --fuzz=NUM', which specifies the number of lines allowed
to mismatch, 'git-apply -CNUM' requests the match of NUM lines of
context.  Omitting -C requests full context match, and that's what
should be used for cvsexportcommit -p.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-archive: make tar the default format
René Scharfe [Mon, 9 Apr 2007 15:12:53 +0000 (17:12 +0200)]
git-archive: make tar the default format

As noted by Junio, --format=tar should be assumed if no format
was specified.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'jc/push'
Junio C Hamano [Mon, 9 Apr 2007 06:54:47 +0000 (23:54 -0700)]
Merge branch 'jc/push'

* jc/push:
  git-push to multiple locations does not stop at the first failure
  git-push reports the URL after failing.

17 years agoMerge branch 'jc/merge-subtree'
Junio C Hamano [Mon, 9 Apr 2007 06:51:14 +0000 (23:51 -0700)]
Merge branch 'jc/merge-subtree'

* jc/merge-subtree:
  A new merge stragety 'subtree'.

It is safe to merge this early as this is a feature that user
explicitly needs to ask for and would not trigger otherwise.  A
known issue with the current implementation is that the subtree
matching heuristics is very stupid.  It could run ls-tree twice
and try to count intersection.

Giving it wider audience would help it to get improved by
motivated volunteers.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'js/fetch-progress'
Junio C Hamano [Mon, 9 Apr 2007 06:27:22 +0000 (23:27 -0700)]
Merge branch 'js/fetch-progress'

* js/fetch-progress:
  git-fetch: add --quiet

17 years agoMerge branch 'maint'
Junio C Hamano [Mon, 9 Apr 2007 06:20:43 +0000 (23:20 -0700)]
Merge branch 'maint'

* maint:
  Add Documentation/cmd-list.made to .gitignore
  git-svn: fix log command to avoid infinite loop on long commit messages
  git-svn: dcommit/rebase confused by patches with git-svn-id: lines
  git-svn: bail out on incorrect command-line options

17 years agoAdd Documentation/cmd-list.made to .gitignore
Junio C Hamano [Mon, 9 Apr 2007 05:14:16 +0000 (22:14 -0700)]
Add Documentation/cmd-list.made to .gitignore

Noticed by Randal L. Schwartz.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-svn: fix log command to avoid infinite loop on long commit messages
Eric Wong [Sun, 8 Apr 2007 07:59:22 +0000 (00:59 -0700)]
git-svn: fix log command to avoid infinite loop on long commit messages

This bug has been around since the the conversion to use the
Git.pm library back in October or November.  Eventually I'd like
"git rev-list/log" to have the option to not truncate overly
long messages.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-svn: dcommit/rebase confused by patches with git-svn-id: lines
Eric Wong [Sun, 8 Apr 2007 07:59:19 +0000 (00:59 -0700)]
git-svn: dcommit/rebase confused by patches with git-svn-id: lines

When patches are merged from another git-svn managed branch,
they will have the git-svn-id: metadata line in them (generated
by git-format-patch).

When doing rebase or dcommit via git-svn, this would cause
git-svn to find the wrong upstream branch.  We now verify
that the commit is consistent with the value in the .rev_db
file.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-svn: bail out on incorrect command-line options
Eric Wong [Tue, 3 Apr 2007 08:57:08 +0000 (01:57 -0700)]
git-svn: bail out on incorrect command-line options

"git svn log" is the only command that needs the pass-through
option in Getopt::Long; otherwise we will bail out and let the
user know something is wrong.

Also, avoid printing out unaccepted mixed-case options (that
are reserved for the command-line) such as --useSvmProps
in the usage() function.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoStart 1.5.2 cycle by prepareing RelNotes for it.
Junio C Hamano [Sun, 8 Apr 2007 06:59:32 +0000 (23:59 -0700)]
Start 1.5.2 cycle by prepareing RelNotes for it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'jc/read-tree-df' (early part)
Junio C Hamano [Sun, 8 Apr 2007 06:52:40 +0000 (23:52 -0700)]
Merge branch 'jc/read-tree-df' (early part)

* 'jc/read-tree-df' (early part):
  Fix switching to a branch with D/F when current branch has file D.
  Fix twoway_merge that passed d/f conflict marker to merged_entry().
  Fix read-tree --prefix=dir/.
  unpack-trees: get rid of *indpos parameter.
  unpack_trees.c: pass unpack_trees_options structure to keep_entry() as well.
  add_cache_entry(): removal of file foo does not conflict with foo/bar

17 years agoMerge branch 'maint'
Junio C Hamano [Sun, 8 Apr 2007 06:34:45 +0000 (23:34 -0700)]
Merge branch 'maint'

* maint:
  Prepare for 1.5.1.1
  cvsserver: small corrections to asciidoc documentation

17 years agoPrepare for 1.5.1.1
Junio C Hamano [Sun, 8 Apr 2007 06:33:14 +0000 (23:33 -0700)]
Prepare for 1.5.1.1

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocvsserver: small corrections to asciidoc documentation
Frank Lichtenheld [Sat, 7 Apr 2007 14:58:08 +0000 (16:58 +0200)]
cvsserver: small corrections to asciidoc documentation

Fix a typo: s/Not/Note/

Some formating fixes: Use ` ` syntax for all filenames and
' ' syntax for all commandline switches.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoA new merge stragety 'subtree'.
Junio C Hamano [Fri, 16 Feb 2007 00:32:45 +0000 (16:32 -0800)]
A new merge stragety 'subtree'.

This merge strategy largely piggy-backs on git-merge-recursive.
When merging trees A and B, if B corresponds to a subtree of A,
B is first adjusted to match the tree structure of A, instead of
reading the trees at the same level.  This adjustment is also
done to the common ancestor tree.

If you are pulling updates from git-gui repository into git.git
repository, the root level of the former corresponds to git-gui/
subdirectory of the latter.  The tree object of git-gui's toplevel
is wrapped in a fake tree object, whose sole entry has name 'git-gui'
and records object name of the true tree, before being used by
the 3-way merge code.

If you are merging the other way, only the git-gui/ subtree of
git.git is extracted and merged into git-gui's toplevel.

The detection of corresponding subtree is done by comparing the
pathnames and types in the toplevel of the tree.

Heuristics galore!  That's the git way ;-).

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-push to multiple locations does not stop at the first failure
Junio C Hamano [Sat, 7 Apr 2007 06:04:53 +0000 (23:04 -0700)]
git-push to multiple locations does not stop at the first failure

When pushing into multiple repositories with git push, via
multiple URL in .git/remotes/$shorthand or multiple url
variables in [remote "$shorthand"] section, we used to stop upon
the first failure.  Continue the operation and report the
failure at the end.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-push reports the URL after failing.
Junio C Hamano [Sat, 7 Apr 2007 06:04:55 +0000 (23:04 -0700)]
git-push reports the URL after failing.

This came up on #git when somebody was getting 'unable to create
./objects/tmp_oXXXX' but sweared he had write permission to that
directory.  It turned out that the repository URL was changed
and he was accessing a repository he does not have a write
permission anymore.

I am not sure how much this would have helped somebody who
believed he was accessing location when the permission of that
location was changed while he was looking the other way, though.
But giving more information on the error path would be better,
and the next change would be helped with this as well.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'jc/index-output'
Junio C Hamano [Sat, 7 Apr 2007 09:26:24 +0000 (02:26 -0700)]
Merge branch 'jc/index-output'

* jc/index-output:
  git-read-tree --index-output=<file>
  _GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file.

Conflicts:

builtin-apply.c

17 years agoMerge branch 'fp/make-j'
Junio C Hamano [Sat, 7 Apr 2007 09:20:47 +0000 (02:20 -0700)]
Merge branch 'fp/make-j'

* fp/make-j:
  Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.

17 years agoMerge branch 'cc/bisect'
Junio C Hamano [Sat, 7 Apr 2007 09:20:39 +0000 (02:20 -0700)]
Merge branch 'cc/bisect'

* cc/bisect:
  git-bisect: allow bisecting with only one bad commit.
  t6030: add a bit more tests to git-bisect
  git-bisect: modernization
  Documentation: bisect: "start" accepts one bad and many good commits
  Bisect: teach "bisect start" to optionally use one bad and many good revs.

17 years agoMerge branch 'jc/checkout' (early part)
Junio C Hamano [Sat, 7 Apr 2007 09:19:54 +0000 (02:19 -0700)]
Merge branch 'jc/checkout' (early part)

* 'jc/checkout' (early part):
  checkout: allow detaching to HEAD even when switching to the tip of a branch

17 years agoMerge branch 'maint'
Junio C Hamano [Sat, 7 Apr 2007 08:30:43 +0000 (01:30 -0700)]
Merge branch 'maint'

* maint:
  Documentation: tighten dependency for git.{html,txt}
  Makefile: iconv() on Darwin has the old interface
  t5300-pack-object.sh: portability issue using /usr/bin/stat
  t3200-branch.sh: small language nit
  usermanual.txt: some capitalization nits
  Make builtin-branch.c handle the git config file
  rename_ref(): only print a warning when config-file update fails
  Distinguish branches by more than case in tests.
  Avoid composing too long "References" header.
  cvsimport: Improve formating consistency
  cvsimport: Reorder options in documentation for better understanding
  cvsimport: Improve usage error reporting
  cvsimport: Improve documentation of CVSROOT and CVS module determination
  cvsimport: sync usage lines with existing options

Conflicts:

Documentation/Makefile

17 years agoDocumentation: tighten dependency for git.{html,txt}
Junio C Hamano [Fri, 6 Apr 2007 05:17:20 +0000 (22:17 -0700)]
Documentation: tighten dependency for git.{html,txt}

Every time _any_ documentation page changed, cmds-*.txt files
were regenerated, which caused git.{html,txt} to be remade.  Try
not to update cmds-*.txt files if their new contents match the
old ones.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMakefile: iconv() on Darwin has the old interface
Arjen Laarhoven [Fri, 6 Apr 2007 23:49:17 +0000 (01:49 +0200)]
Makefile: iconv() on Darwin has the old interface

The libiconv on Darwin uses the old iconv() interface (2nd argument is a
const char **, instead of a char **).  Add OLD_ICONV to the Darwin
variable definitions to handle this.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Acked-by: Brian Gernhardt <benji@silverinsanity.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agot5300-pack-object.sh: portability issue using /usr/bin/stat
Arjen Laarhoven [Fri, 6 Apr 2007 23:49:03 +0000 (01:49 +0200)]
t5300-pack-object.sh: portability issue using /usr/bin/stat

In the test 'compare delta flavors', /usr/bin/stat is used to get file size.
This isn't portable.  There already is a dependency on Perl, use its '-s'
operator to get the file size.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-bisect: allow bisecting with only one bad commit.
Junio C Hamano [Fri, 6 Apr 2007 06:27:44 +0000 (23:27 -0700)]
git-bisect: allow bisecting with only one bad commit.

This allows you to say:

git bisect start
git bisect bad $bad
git bisect next

to start bisection without knowing a good commit.  This would
have you try a commit that is half-way since the beginning of
the history, which is rather wasteful if you already know a good
commit, but if you don't (or your history is short enough that
you do not care), there is no reason not to allow this.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agot6030: add a bit more tests to git-bisect
Junio C Hamano [Fri, 6 Apr 2007 05:52:37 +0000 (22:52 -0700)]
t6030: add a bit more tests to git-bisect

Verify that git-bisect does not start before getting one bad and
one good commit.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agot3200-branch.sh: small language nit
Arjen Laarhoven [Fri, 6 Apr 2007 23:48:54 +0000 (01:48 +0200)]
t3200-branch.sh: small language nit

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agousermanual.txt: some capitalization nits
Arjen Laarhoven [Fri, 6 Apr 2007 23:48:36 +0000 (01:48 +0200)]
usermanual.txt: some capitalization nits

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMake builtin-branch.c handle the git config file
Lars Hjemli [Fri, 6 Apr 2007 12:13:00 +0000 (14:13 +0200)]
Make builtin-branch.c handle the git config file

This moves the knowledge about .git/config usage out of refs.c and into
builtin-branch.c instead, which allows git-branch to update HEAD to point
at the moved branch before attempting to update the config file. It also
allows git-branch to exit with an error code if updating the config file
should fail.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agorename_ref(): only print a warning when config-file update fails
Lars Hjemli [Fri, 6 Apr 2007 08:33:06 +0000 (10:33 +0200)]
rename_ref(): only print a warning when config-file update fails

If git_config_rename_section() fails, rename_ref() used to return 1, which
left HEAD pointing to an absent refs/heads file (since the actual renaming
had already occurred).

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDistinguish branches by more than case in tests.
Brian Gernhardt [Fri, 6 Apr 2007 05:42:04 +0000 (01:42 -0400)]
Distinguish branches by more than case in tests.

The renaming without config test changed a branch from q to Q, which
fails on non-case sensitive file systems.  Change the test to use q
and q2.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAvoid composing too long "References" header.
YOSHIFUJI Hideaki / 吉藤英明 [Thu, 5 Apr 2007 23:50:24 +0000 (08:50 +0900)]
Avoid composing too long "References" header.

The number of characters in a line MUST be no more than 998 characters,
and SHOULD be no more than 78 characters (RFC2822).
It is much safer to fold the header by ourselves.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocvsimport: Improve formating consistency
Frank Lichtenheld [Fri, 6 Apr 2007 21:52:43 +0000 (23:52 +0200)]
cvsimport: Improve formating consistency

Use ' ' syntax for all commandline options mentioned in text.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocvsimport: Reorder options in documentation for better understanding
Frank Lichtenheld [Fri, 6 Apr 2007 21:52:42 +0000 (23:52 +0200)]
cvsimport: Reorder options in documentation for better understanding

The current order the options are documented in makes no sense
at all to me. Reorder them so that similar options are grouped
together and also order them somehwhat by importance.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocvsimport: Improve usage error reporting
Frank Lichtenheld [Fri, 6 Apr 2007 21:52:41 +0000 (23:52 +0200)]
cvsimport: Improve usage error reporting

Actually tell the user what he did wrong in case of usage errors
instead of only printing the general usage information.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocvsimport: Improve documentation of CVSROOT and CVS module determination
Frank Lichtenheld [Fri, 6 Apr 2007 21:52:40 +0000 (23:52 +0200)]
cvsimport: Improve documentation of CVSROOT and CVS module determination

Document the fact that git-cvsimport tries to find out CVSROOT from
CVS/Root and $ENV{CVSROOT} and CVS_module from CVS/Repository.

Also use ` ` syntax for all filenames for consistency.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocvsimport: sync usage lines with existing options
Frank Lichtenheld [Fri, 6 Apr 2007 21:52:39 +0000 (23:52 +0200)]
cvsimport: sync usage lines with existing options

Sync both the usage lines in the code and the asciidoc
documentation with the real list of options. While
all options seems to be documented in the asciidoc
document, not all of them were listed in the usage line.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-bisect: modernization
Junio C Hamano [Fri, 6 Apr 2007 05:51:14 +0000 (22:51 -0700)]
git-bisect: modernization

This slightly modernizes the bisect script to use show-ref/for-each-ref
instead of looking into $GIT_DIR/refs files directly.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Thu, 5 Apr 2007 23:34:51 +0000 (16:34 -0700)]
Merge branch 'maint'

* maint:
  Fix lseek(2) calls with args 2 and 3 swapped
  Honor -p<n> when applying git diffs
  Fix dependency of common-cmds.h
  Fix renaming branch without config file
  DESTDIR support for git/contrib/emacs
  gitweb: Fix bug in "blobdiff" view for split (e.g. file to symlink) patches
  Document --left-right option to rev-list.
  Revert "builtin-archive: use RUN_SETUP"
  rename contrib/hooks/post-receieve-email to contrib/hooks/post-receive-email.
  rerere: make sorting really stable.
  Fix t4200-rerere for white-space from "wc -l"

17 years agoFix lseek(2) calls with args 2 and 3 swapped
Dana How [Thu, 5 Apr 2007 19:05:57 +0000 (12:05 -0700)]
Fix lseek(2) calls with args 2 and 3 swapped

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMakefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.
Fernando J. Pereda [Wed, 4 Apr 2007 20:42:33 +0000 (22:42 +0200)]
Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.

Signed-off-by: Fernando J. Pereda <ferdy@gentoo.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocumentation: bisect: "start" accepts one bad and many good commits
Christian Couder [Thu, 5 Apr 2007 03:33:53 +0000 (05:33 +0200)]
Documentation: bisect: "start" accepts one bad and many good commits

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoBisect: teach "bisect start" to optionally use one bad and many good revs.
Christian Couder [Wed, 4 Apr 2007 05:12:02 +0000 (07:12 +0200)]
Bisect: teach "bisect start" to optionally use one bad and many good revs.

One bad commit is fundamentally needed for bisect to run,
and if we beforehand know more good commits, we can narrow
the bisect space down without doing the whole tree checkout
every time we give good commits.

This patch implements:

    git bisect start [<bad> [<good>...]] [--] [<pathspec>...]

as a short-hand for this command sequence:

    git bisect start
    git bisect bad $bad
    git bisect good $good1 $good2...

On the other hand, there may be some confusion between revs
(<bad> and <good>...) and <pathspec>... if -- is not used
and if an invalid rev or a pathspec that looks like a rev is
given.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix passing of TCLTK_PATH to git-gui
Alex Riesen [Thu, 5 Apr 2007 19:31:53 +0000 (21:31 +0200)]
Fix passing of TCLTK_PATH to git-gui

GNU make does not include environment variables by default
in its namespace. Just pass them in make command line.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoRename add_file_to_index() to add_file_to_cache()
Junio C Hamano [Mon, 2 Apr 2007 05:14:40 +0000 (22:14 -0700)]
Rename add_file_to_index() to add_file_to_cache()

This function was not called "add_file_to_cache()" only because
an ancient program, update-cache, used that name as an internal
function name that does something slightly different.  Now that
is gone, we can take over the better name.

The plan is to name all functions that operate on the default
index xxx_cache().  Later patches create a variant of them that
take an explicit parameter xxx_index(), and then turn
xxx_cache() functions into macros that use "the_index".

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoRename static variable write_index to update_index in builtin-apply.c
Junio C Hamano [Mon, 2 Apr 2007 05:46:06 +0000 (22:46 -0700)]
Rename static variable write_index to update_index in builtin-apply.c

This is an internal variable used to tell if we need to write
out the resulting index.

I'll be introducing write_index() function which would collide
with it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoRename internal function "add_file_to_cache" in builtin-update-index.c
Junio C Hamano [Mon, 2 Apr 2007 05:07:26 +0000 (22:07 -0700)]
Rename internal function "add_file_to_cache" in builtin-update-index.c

I'd like to consistently name all index-layer functions that
operate on the default index xxx_cache(), and this application
specific function interferes with the plan.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoPropagate cache error internal to refresh_cache() via parameter.
Junio C Hamano [Mon, 2 Apr 2007 04:34:34 +0000 (21:34 -0700)]
Propagate cache error internal to refresh_cache() via parameter.

The function refresh_cache() is the only user of cache_errno
that switches its behaviour based on what internal function
refresh_cache_entry() finds; pass the error status back in a
parameter passed down to it, to get rid of the global variable
cache_errno.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix bogus error message from merge-recursive error path
Junio C Hamano [Mon, 2 Apr 2007 04:13:27 +0000 (21:13 -0700)]
Fix bogus error message from merge-recursive error path

This error message should not usually trigger, but the function
make_cache_entry() called by add_cacheinfo() can return early
without calling into refresh_cache_entry() that sets cache_errno.

Also the error message had a wrong function name reported, and
it did not say anything about which path failed either.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoShow binary file size change in diff --stat
Andy Parkins [Wed, 4 Apr 2007 13:14:14 +0000 (13:14 +0000)]
Show binary file size change in diff --stat

Previously, a binary file in the diffstat would show as:

 some-binary-file.bin       |  Bin

The space after the "Bin" was never used.  This patch changes binary
lines in the diffstat to be:

 some-binary-file.bin       |  Bin 12345 -> 123456 bytes

The very nice "->" notation was suggested by Johannes Schindelin, and
shows the before and after sizes more clearly than "+" and "-" would.
If a size is 0 it's not shown (although it would probably be better to
treat no-file differently from zero-byte-file).

The user can see what changed in the binary file, and how big the new
file is.  This is in keeping with the information in the rest of the
diffstat.

The diffstat_t members "added" and "deleted" were unused when the file
was binary, so this patch loads them with the file sizes in
builtin_diffstat().  These figures are then read in show_stats() when
the file is marked binary.

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>