git
17 years agoSupport GIT_PAGER_IN_USE environment variable
Jeff King [Tue, 11 Dec 2007 06:27:33 +0000 (01:27 -0500)] 
Support GIT_PAGER_IN_USE environment variable

When deciding whether or not to turn on automatic color
support, git_config_colorbool checks whether stdout is a
tty. However, because we run a pager, if stdout is not a
tty, we must check whether it is because we started the
pager. This used to be done by checking the pager_in_use
variable.

This variable was set only when the git program being run
started the pager; there was no way for an external program
running git indicate that it had already started a pager.
This patch allows a program to set GIT_PAGER_IN_USE to a
true value to indicate that even though stdout is not a tty,
it is because a pager is being used.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoUpdate draft Release Notes for 1.5.4
Junio C Hamano [Mon, 10 Dec 2007 08:07:18 +0000 (00:07 -0800)] 
Update draft Release Notes for 1.5.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoStyle fixes for pre-commit hook tests
Wincent Colaiuta [Mon, 10 Dec 2007 07:42:45 +0000 (08:42 +0100)] 
Style fixes for pre-commit hook tests

As pointed out by Junio on the mailing list, surrounding tests in
double quotes can lead to bugs wherein variables get substituted away,
so this isn't just style churn but important to prevent others from
looking at these tests in the future and thinking that this is "the
way" that Git tests should be written.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoInteractive editor tests for commit-msg hook
Wincent Colaiuta [Mon, 10 Dec 2007 07:33:26 +0000 (08:33 +0100)] 
Interactive editor tests for commit-msg hook

Supplement the existing tests for the commit-msg hook (which all use
"git commit -m") with tests which use an interactive editor (no -m
switch) to ensure that all code paths get tested.

At the same time the quoting of some of the existing tests is changed
to conform to Junio's recommendations for test style (single quotes
used around the test unless there is a compelling reason not to, and
the opening quote on the same line as the test_expect and the closing
quote in column 1).

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRe-fix ls-remote
Junio C Hamano [Sun, 9 Dec 2007 20:16:55 +0000 (12:16 -0800)] 
Re-fix ls-remote

An earlier attempt in 2ea7fe0 (ls-remote: resurrect pattern limit support) forgot
that the user string can also be a glob.  This should finally fix it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoCleanup variables in http.[ch]
Mike Hommey [Sun, 9 Dec 2007 17:04:57 +0000 (18:04 +0100)] 
Cleanup variables in http.[ch]

Quite some variables defined as extern in http.h are only used in http.c,
and some others, only defined in http.c, were not static.

Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-send-email.perl: Really add angle brackets to In-Reply-To if necessary
Mike Hommey [Sun, 9 Dec 2007 17:17:28 +0000 (18:17 +0100)] 
git-send-email.perl: Really add angle brackets to In-Reply-To if necessary

3803bcea tried to fix this, but it only adds the branckes when the given
In-Reply-To begins and ends with whitespaces. It also didn't do anything
to the --in-reply-to argument.

Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agodon't mention index refreshing side effect in git-status docs
Jeff King [Sun, 9 Dec 2007 08:21:34 +0000 (03:21 -0500)] 
don't mention index refreshing side effect in git-status docs

The tip about speeding up subsequent operations is now
obsolete; since aecbf914, git-diff now squelches empty diffs
and performs an automatic refresh.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRemove repo version check from setup_git_directory
Nguyễn Thái Ngọc Duy [Sun, 9 Dec 2007 10:14:39 +0000 (17:14 +0700)] 
Remove repo version check from setup_git_directory

setup_git_directory_gently has done the check already.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'jc/spht'
Junio C Hamano [Sun, 9 Dec 2007 09:23:48 +0000 (01:23 -0800)] 
Merge branch 'jc/spht'

* jc/spht:
  Use gitattributes to define per-path whitespace rule
  core.whitespace: documentation updates.
  builtin-apply: teach whitespace_rules
  builtin-apply: rename "whitespace" variables and fix styles
  core.whitespace: add test for diff whitespace error highlighting
  git-diff: complain about >=8 consecutive spaces in initial indent
  War on whitespace: first, a bit of retreat.

Conflicts:

cache.h
config.c
diff.c

17 years agoMerge branch 'pr/mergetool'
Junio C Hamano [Sun, 9 Dec 2007 09:01:50 +0000 (01:01 -0800)] 
Merge branch 'pr/mergetool'

* pr/mergetool:
  Open external merge tool with original file extensions for all three files

17 years agoMerge branch 'maint'
Junio C Hamano [Sun, 9 Dec 2007 08:56:44 +0000 (00:56 -0800)] 
Merge branch 'maint'

* maint:
  config.c:store_write_pair(): don't read the byte before a malloc'd buffer.

17 years agoRe-fix "builtin-commit: fix --signoff"
Junio C Hamano [Sun, 9 Dec 2007 01:32:08 +0000 (17:32 -0800)] 
Re-fix "builtin-commit: fix --signoff"

An earlier fix to the said commit was incomplete; it mixed up the
meaning of the flag parameter passed to the internal fmt_ident()
function, so this corrects it.

git_author_info() and git_committer_info() can be told to issue a
warning when no usable user information is found, and optionally can be
told to error out.  Operations that actually use the information to
record a new commit or a tag will still error out, but the caller to
leave reflog record will just silently use bogus user information.

Not warning on misconfigured user information while writing a reflog
entry is somewhat debatable, but it is probably nicer to the users to
silently let it pass, because the only information you are losing is who
checked out the branch.

 * git_author_info() and git_committer_info() used to take 1 (positive
   int) to error out with a warning on misconfiguration; this is now
   signalled with a symbolic constant IDENT_ERROR_ON_NO_NAME.

 * These functions used to take -1 (negative int) to warn but continue;
   this is now signalled with a symbolic constant IDENT_WARN_ON_NO_NAME.

 * fmt_ident() function implements the above error reporting behaviour
   common to git_author_info() and git_committer_info().  A symbolic
   constant IDENT_NO_DATE can be or'ed in to the flag parameter to make
   it return only the "Name <email@address.xz>".

 * fmt_name() is a thin wrapper around fmt_ident() that always passes
   IDENT_ERROR_ON_NO_NAME and IDENT_NO_DATE.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAdd tests for pre-commit and commit-msg hooks
Wincent Colaiuta [Sat, 8 Dec 2007 12:29:47 +0000 (13:29 +0100)] 
Add tests for pre-commit and commit-msg hooks

As desired, these pass for git-commit.sh, fail for builtin-commit (prior
to the fixes), and succeeded for builtin-commit (after the fixes).

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoFix commit-msg hook to allow editing
Junio C Hamano [Sun, 9 Dec 2007 07:23:20 +0000 (23:23 -0800)] 
Fix commit-msg hook to allow editing

The old git-commit.sh script allowed the commit-msg hook to not only
prevent a commit from proceding, but also to edit the commit message
on the fly and allow it to proceed. So here we teach builtin-commit
to do the same.

This is based on Wincent's patch, but redone with a clarified logic.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocumentation: fix --no-verify documentation for "git commit"
Wincent Colaiuta [Sat, 8 Dec 2007 11:38:08 +0000 (12:38 +0100)] 
Documentation: fix --no-verify documentation for "git commit"

The documentation for the --no-verify switch should mention the
commit-msg hook, not just the pre-commit hook.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAllow --no-verify to bypass commit-msg hook
Wincent Colaiuta [Sat, 8 Dec 2007 11:38:07 +0000 (12:38 +0100)] 
Allow --no-verify to bypass commit-msg hook

At the moment the --no-verify switch to "git commit" instructs it to
skip over the pre-commit hook. Here we teach "git commit --no-verify"
to skip over the commit-msg hook as well. This brings the behaviour
of builtin-commit back in line with git-commit.sh.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agols-remote: resurrect pattern limit support
Junio C Hamano [Sun, 9 Dec 2007 06:52:59 +0000 (22:52 -0800)] 
ls-remote: resurrect pattern limit support

"git ls-remote $remote $name1 $name2..." used to limit the output to
refs that end with one of the $name given from the command line, but
recent rewrite to C forgot to implement that support.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoconfig.c:store_write_pair(): don't read the byte before a malloc'd buffer.
Jim Meyering [Sat, 8 Dec 2007 15:48:05 +0000 (16:48 +0100)] 
config.c:store_write_pair(): don't read the byte before a malloc'd buffer.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoshortlog: code restructuring and clean-up
Junio C Hamano [Sat, 8 Dec 2007 01:07:41 +0000 (17:07 -0800)] 
shortlog: code restructuring and clean-up

The code tried to parse and clean-up the author name and the one line
information in three places (two callers of insert_author_oneline() and
the called function itself), which was a mess.

This renames the callee to insert_one_record() and make it responsible
for cleaning up the author name and one line information.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agomailmap: fix bogus for() loop that happened to be safe by accident
Junio C Hamano [Sat, 8 Dec 2007 01:04:11 +0000 (17:04 -0800)] 
mailmap: fix bogus for() loop that happened to be safe by accident

The empty loop pretended to have an empty statement as its body by a
phony indentation, but in fact was slurping the next statement into it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agopack-objects: fix threaded load balancing
Nicolas Pitre [Sat, 8 Dec 2007 05:03:17 +0000 (00:03 -0500)] 
pack-objects: fix threaded load balancing

The current method consists of a master thread serving chunks of objects
to work threads when they're done with their previous chunk.  The issue
is to determine the best chunk size: making it too large creates poor
load balancing, while making it too small has a negative effect on pack
size because of the increased number of chunk boundaries and poor delta
window utilization.

This patch implements a completely different approach by initially
splitting the work in large chunks uniformly amongst all threads, and
whenever a thread is done then it steals half of the remaining work from
another thread with the largest amount of unprocessed objects.

This has the advantage of greatly reducing the number of chunk boundaries
with an almost perfect load balancing.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agopack-objects: reverse the delta search sort list
Nicolas Pitre [Sat, 8 Dec 2007 05:00:08 +0000 (00:00 -0500)] 
pack-objects: reverse the delta search sort list

It is currently sorted and then walked backward.  Not only this doesn't
feel natural for my poor brain, but it would make the next patch less
obvious as well.

So reverse the sort order, and reverse the list walking direction,
which effectively produce the exact same end result as before.

Also bring the relevant comment nearer the actual code and adjust it
accordingly, with minor additional clarifications.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agopack-objects: fix delta cache size accounting
Nicolas Pitre [Sat, 8 Dec 2007 01:27:52 +0000 (20:27 -0500)] 
pack-objects: fix delta cache size accounting

The wrong value was substracted from delta_cache_size when replacing
a cached delta, as trg_entry->delta_size was used after the old size
had been replaced by the new size.

Noticed by Linus.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-status: documentation improvements
Jeff King [Sat, 8 Dec 2007 09:00:31 +0000 (04:00 -0500)] 
git-status: documentation improvements

This patch is the result of reading over git-status with an
editorial eye:

  - fix a few typo/grammatical errors
  - mention untracked output
  - present output types in the order they appear from the
    command

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoadd status.relativePaths config variable
Jeff King [Fri, 7 Dec 2007 21:26:07 +0000 (16:26 -0500)] 
add status.relativePaths config variable

The output of git-status was recently changed to output relative
paths. Setting this variable to false restores the old behavior for
any old-timers that prefer it.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agowt-status.c:quote_path(): convert empty path to "./"
Jeff King [Fri, 7 Dec 2007 16:57:04 +0000 (11:57 -0500)] 
wt-status.c:quote_path(): convert empty path to "./"

Now that we are correctly removing leading prefixes from files in git
status, there is a degenerate case: the directory matching the prefix.
Because we show only the directory name for a directory that contains
only untracked files, it gets collapsed to an empty string.

Example:

  $ git init
  $ mkdir subdir
  $ touch subdir/file
  $ git status
  ...
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  #       subdir/

  So far, so good.

  $ cd subdir
  $ git status
  ....
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  #

  Oops, that's a bit confusing.

  This patch prints './' to show that there is some output.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-bisect visualize: work in non-windowed environments better
Junio C Hamano [Fri, 7 Dec 2007 10:25:34 +0000 (02:25 -0800)] 
git-bisect visualize: work in non-windowed environments better

This teaches "git bisect visualize" to be more useful in non-windowed
environments.

 (1) When no option is given, and $DISPLAY is set, it continues to
     spawn gitk as before;

 (2) When no option is given, and $DISPLAY is unset, "git log" is run
     to show the range of commits between the bad one and the good ones;

 (3) If only "-flag" options are given, "git log <options>" is run.
     E.g. "git bisect visualize --stat"

 (4) Otherwise, all of the given options are taken as the initial part
     of the command line and the commit range expression is given to
     that command.  E.g. "git bisect visualize tig" will run "tig"
     history viewer to show between the bad one and the good ones.

As "visualize" is a bit too long to type, we also give it a shorter
synonym "view".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoTeach "git add -i" to colorize whitespace errors
Wincent Colaiuta [Fri, 7 Dec 2007 12:35:10 +0000 (13:35 +0100)] 
Teach "git add -i" to colorize whitespace errors

Rather than replicating the colorization logic of "git diff-files" we
rely on "git diff-files" itself. This guarantees consistent colorization
in and outside "git add -i".

Seeing as speed is not a concern here (the bottleneck is how fast the
user can read, not how fast "git diff-files" runs) we do this by
actually running it twice, once without color and once with.

In this way as the whitespace colorization provided by "git diff-files"
evolves (per-path attributes, new classes of whitespace error), "git
add -i" will automatically benefit from it and stay in synch.

Also, by working with two sets of diff output (an uncolorized one for
internal processing and a colorized one for display only) we minimize
the risk of regressions because the changes required to implement this
are minimally invasive.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoLet git-help prefer man-pages installed with this version of git
Sergei Organov [Thu, 6 Dec 2007 18:33:01 +0000 (21:33 +0300)] 
Let git-help prefer man-pages installed with this version of git

Prepend $(prefix)/share/man to the MANPATH environment variable before
invoking 'man' from help.c:show_man_page().  There may be other git
documentation in the user's MANPATH but the user is asking a specific
instance of git about its own documentation, so we'd better show the
documentation for _that_ instance of git.

Signed-off-by: Sergei Organov <osv@javad.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoUpdate draft release notes to 1.5.4
Junio C Hamano [Fri, 7 Dec 2007 09:28:05 +0000 (01:28 -0800)] 
Update draft release notes to 1.5.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'master' of git://repo.or.cz/git-gui
Junio C Hamano [Fri, 7 Dec 2007 07:51:15 +0000 (23:51 -0800)] 
Merge branch 'master' of git://repo.or.cz/git-gui

* 'master' of git://repo.or.cz/git-gui:
  Update Hungarian translation. 100% completed.
  Update ja.po for git-gui
  git-gui: Improve the application icon on Windows.
  git-gui: install-sh from automake does not like -m755
  git-gui: Reorder msgfmt command-line arguments
  Update German translation. 100% completed.
  Update git-gui.pot with latest (few) string additions and changes.
  git-gui: update it.po and glossary/it.po
  git-gui: fix a typo in lib/commit.tcl

17 years agoMerge branch 'mw/cvsserver'
Junio C Hamano [Fri, 7 Dec 2007 07:44:49 +0000 (23:44 -0800)] 
Merge branch 'mw/cvsserver'

* mw/cvsserver:
  git-cvsserver runs hooks/post-update
  git-cvsserver runs hooks/post-receive

17 years agoMerge branch 'kh/fetch-optparse'
Junio C Hamano [Fri, 7 Dec 2007 07:44:43 +0000 (23:44 -0800)] 
Merge branch 'kh/fetch-optparse'

* kh/fetch-optparse:
  Rewrite builtin-fetch option parsing to use parse_options().

17 years agoMerge branch 'jc/git-log-doc'
Junio C Hamano [Fri, 7 Dec 2007 07:43:54 +0000 (23:43 -0800)] 
Merge branch 'jc/git-log-doc'

* jc/git-log-doc:
  Include diff options in the git-log manpage

17 years agoMerge branch 'jc/addi-color'
Junio C Hamano [Fri, 7 Dec 2007 07:43:47 +0000 (23:43 -0800)] 
Merge branch 'jc/addi-color'

* jc/addi-color:
  config --get-colorbool: diff.color is a deprecated synonym to color.diff
  Color support for "git-add -i"
  git config --get-colorbool

17 years agoMerge branch 'jc/docmake-perl'
Junio C Hamano [Fri, 7 Dec 2007 07:43:42 +0000 (23:43 -0800)] 
Merge branch 'jc/docmake-perl'

* jc/docmake-perl:
  Run the specified perl in Documentation/

17 years agoMerge branch 'jc/clean-fix'
Junio C Hamano [Fri, 7 Dec 2007 07:43:35 +0000 (23:43 -0800)] 
Merge branch 'jc/clean-fix'

* jc/clean-fix:
  t7300: add test for clean with wildcard pathspec
  git-clean: Honor pathspec.

17 years agoautoconf: Add test for OLD_ICONV (squelching compiler warning)
Jakub Narebski [Fri, 7 Dec 2007 01:27:20 +0000 (02:27 +0100)] 
autoconf: Add test for OLD_ICONV (squelching compiler warning)

Update configure.ac (and config.mak.in) to keep up with git
development by adding [compile] test whether your library has an old
iconv(), where the second (input buffer pointer) parameter is declared
with type (const char **) (OLD_ICONV).

Test-proposed-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoSilence iconv warnings on Leopard
Wincent Colaiuta [Thu, 6 Dec 2007 19:07:03 +0000 (20:07 +0100)] 
Silence iconv warnings on Leopard

Apple ships a newer version of iconv with Leopard (Mac OS X 10.5/Darwin
9). Ensure that OLD_ICONV is not set on any version of Darwin in the
9.x series; this should be good for at least a couple of years, when
Darwin 10 comes out and we can invert the sense of the test to
specifically check for Darwin 7 or 8.

A more sophisticated and robust check is possible for those who use
autoconf, but not everybody does that.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'maint'
Junio C Hamano [Fri, 7 Dec 2007 07:20:18 +0000 (23:20 -0800)] 
Merge branch 'maint'

* maint:
  Change from using email.com to example.com as example domain, as per RFC 2606.

17 years agoChange from using email.com to example.com as example domain, as per RFC 2606.
David Symonds [Thu, 6 Dec 2007 23:36:45 +0000 (10:36 +1100)] 
Change from using email.com to example.com as example domain, as per RFC 2606.

Signed-off-by: David Symonds <dsymonds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-status documentation: mention subdirectory behaviour
Junio C Hamano [Thu, 6 Dec 2007 17:15:39 +0000 (09:15 -0800)] 
git-status documentation: mention subdirectory behaviour

Consistently with all other diff oriented commands, we have given paths
relative to the work tree root in git-status output for a long time.
This documents the recent behaviour change, as people's eyes (and worse
yet, scripts, although scripts should not parse "git status" output) may
depend on the old behaviour.

In the longer run, giving a --full-name option to git-diff Porcelain
similar to what ls-files has, and change the default for git-diff
Porcelain to show relative paths may be a good thing to do, in order to
hide the oddballness of this git-status behaviour, but that would have a
rather large impact to established expectation by existing users.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agodo not discard status in fetch_refs_via_pack()
Junio C Hamano [Wed, 5 Dec 2007 07:01:19 +0000 (23:01 -0800)] 
do not discard status in fetch_refs_via_pack()

The code calls fetch_pack() to get the list of refs it fetched, and
discards refs and always returns 0 to signal success.

But builtin-fetch-pack.c::fetch_pack() has error cases.  The function
returns NULL if error is detected (shallow-support side seems to choose
to die but I suspect that is easily fixable to error out as well).

Make fetch_refs_via_pack() propagate that error to the caller.

Acked-By: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agofor-each-ref: Fix quoting style constants.
Johannes Sixt [Thu, 6 Dec 2007 12:24:39 +0000 (13:24 +0100)] 
for-each-ref: Fix quoting style constants.

for-each-ref can accept only one quoting style. For this reason it uses
OPT_BIT for the quoting style switches so that it is easy to check for
more than one bit being set. However, not all symbolic constants were
actually single bit values. In particular:

    $ git for-each-ref --python
    error: more than one quoting style ?

This fixes it.

While we are here, let's also remove the space before the question mark.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agohg-to-git: handle an empty dir in hg.
Junio C Hamano [Thu, 6 Dec 2007 15:26:29 +0000 (07:26 -0800)] 
hg-to-git: handle an empty dir in hg.

Mark Drago had a subversion repository which was then converted to hg
and now is moving in to git.  The first commit in the svn repo was
just the creation of the empty directory.  This made its way in to the
hg repository fine, but converting from hg to git would cause an
error.  The problem was that hg-to-git.py tries to commit the change,
git-commit fails, and then hg-to-git.py tries to checkout the new
revision and that fails (because it was not created).  This may have
only caused an error because it was the first commit in the
repository.  If an empty directory was added in the middle of the repo
somewhere things might have worked out fine.

This patch will use the new --allow-empty option to git-commit to
record such an "empty" commit, to reproduce the history recorded in hg
more faithfully.

Tested-by: Mark Drago <markdrago@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoUse gitattributes to define per-path whitespace rule
Junio C Hamano [Thu, 6 Dec 2007 08:14:14 +0000 (00:14 -0800)] 
Use gitattributes to define per-path whitespace rule

The `core.whitespace` configuration variable allows you to define what
`diff` and `apply` should consider whitespace errors for all paths in
the project (See gitlink:git-config[1]).  This attribute gives you finer
control per path.

For example, if you have these in the .gitattributes:

    frotz   whitespace
    nitfol  -whitespace
    xyzzy   whitespace=-trailing

all types of whitespace problems known to git are noticed in path 'frotz'
(i.e. diff shows them in diff.whitespace color, and apply warns about
them), no whitespace problem is noticed in path 'nitfol', and the
default types of whitespace problems except "trailing whitespace" are
noticed for path 'xyzzy'.  A project with mixed Python and C might want
to have:

    *.c    whitespace
    *.py   whitespace=-indent-with-non-tab

in its toplevel .gitattributes file.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoconfig --get-colorbool: diff.color is a deprecated synonym to color.diff
Junio C Hamano [Thu, 6 Dec 2007 06:12:07 +0000 (22:12 -0800)] 
config --get-colorbool: diff.color is a deprecated synonym to color.diff

The applications can ask for color.diff but the configuration of old
timer users can still instruct it to use color with diff.color this
way.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agot7300: add test for clean with wildcard pathspec
Jeff King [Thu, 6 Dec 2007 03:28:06 +0000 (22:28 -0500)] 
t7300: add test for clean with wildcard pathspec

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoOpen external merge tool with original file extensions for all three files
Pini Reznik [Wed, 5 Dec 2007 07:19:13 +0000 (09:19 +0200)] 
Open external merge tool with original file extensions for all three files

Before this change, conflicted files were open in external merge tool with
temporary filenames like REMOTE.$$ and LOCAL.$$.  This way meld was unable
to recognize these files and syntax highlighting feature was unusable.

Help such merge tools by giving temporar files the same extension as the
original.

Signed-off-by: Pini Reznik <pinir@expand.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-clean: Honor pathspec.
Junio C Hamano [Wed, 5 Dec 2007 07:55:41 +0000 (23:55 -0800)] 
git-clean: Honor pathspec.

git-clean "*.rej" should attempt to look at only paths that match
pattern "*.rej", but rewrite to C broke it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoColor support for "git-add -i"
Junio C Hamano [Wed, 5 Dec 2007 08:50:23 +0000 (00:50 -0800)] 
Color support for "git-add -i"

This is mostly lifted from earlier series by Dan Zwell, but updated to
use "git config --get-color" and "git config --get-colorbool" to make it
simpler and more consistent with commands written in C.

A new configuration color.interactive variable is like color.diff and
color.status, and controls if "git-add -i" uses color.

A set of configuration variables, color.interactive.<slot>, are used to
define what color is used for the prompt, header, and help text.

For perl scripts, Git.pm provides $repo->get_color() method, which takes
the slot name and the default color, and returns the terminal escape
sequence to color the output text.  $repo->get_colorbool() method can be
used to check if color is set to be used for a given operation.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit config --get-colorbool
Junio C Hamano [Thu, 6 Dec 2007 01:26:11 +0000 (17:26 -0800)] 
git config --get-colorbool

This adds an option to help scripts find out color settings from
the configuration file.

    git config --get-colorbool color.diff

inspects color.diff variable, and exits with status 0 (i.e. success) if
color is to be used.  It exits with status 1 otherwise.

If a script wants "true"/"false" answer to the standard output of the
command, it can pass an additional boolean parameter to its command
line, telling if its standard output is a terminal, like this:

    git config --get-colorbool color.diff true

When called like this, the command outputs "true" to its standard output
if color is to be used (i.e. "color.diff" says "always", "auto", or
"true"), and "false" otherwise.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocumentation: color.* = true means "auto"
Junio C Hamano [Thu, 6 Dec 2007 01:05:17 +0000 (17:05 -0800)] 
Documentation: color.* = true means "auto"

We forgot to document the earlier sanity-fix.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'maint'
Junio C Hamano [Thu, 6 Dec 2007 01:49:13 +0000 (17:49 -0800)] 
Merge branch 'maint'

* maint:
  git-am -i: report rewritten title
  git grep shows the same hit repeatedly for unmerged paths
  Do check_repository_format() early (re-fix)
  Do check_repository_format() early
  Add missing inside_work_tree setting in setup_git_directory_gently

17 years agogit-am -i: report rewritten title
Junio C Hamano [Wed, 5 Dec 2007 07:01:30 +0000 (23:01 -0800)] 
git-am -i: report rewritten title

Jeff Garzik noticed that "git am -i" reports the applied patch with
the title before the user edited it.  This was confusing.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit grep shows the same hit repeatedly for unmerged paths
Junio C Hamano [Thu, 6 Dec 2007 00:13:08 +0000 (16:13 -0800)] 
git grep shows the same hit repeatedly for unmerged paths

When the index is unmerged, e.g.

$ git ls-files -u
        100644 faf413748eb6ccb15161a212156c5e348302b1b6 1 setup.c
        100644 145eca50f41d811c4c8fcb21ed2604e6b2971aba 2 setup.c
        100644 cb9558c49b6027bf225ba2a6154c4d2a52bcdbe2 3 setup.c

running "git grep" for work tree files repeats hits for each unmerged
stage.

$ git grep -n -e setup_work_tree -- '*.[ch]'
        setup.c:209:void setup_work_tree(void)
        setup.c:209:void setup_work_tree(void)
        setup.c:209:void setup_work_tree(void)

This should fix it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoUpdate Hungarian translation. 100% completed.
Miklos Vajna [Tue, 4 Dec 2007 00:28:42 +0000 (01:28 +0100)] 
Update Hungarian translation. 100% completed.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoUpdate ja.po for git-gui
しらいしななこ [Wed, 5 Dec 2007 09:24:26 +0000 (18:24 +0900)] 
Update ja.po for git-gui

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoMerge branch 'nd/maint-work-tree-fix' into maint
Junio C Hamano [Wed, 5 Dec 2007 23:07:23 +0000 (15:07 -0800)] 
Merge branch 'nd/maint-work-tree-fix' into maint

* nd/maint-work-tree-fix:
  Do check_repository_format() early (re-fix)
  Do check_repository_format() early
  Add missing inside_work_tree setting in setup_git_directory_gently

17 years agoDo check_repository_format() early (re-fix)
Nguyễn Thái Ngọc Duy [Wed, 5 Dec 2007 13:33:32 +0000 (20:33 +0700)] 
Do check_repository_format() early (re-fix)

This pushes check_repository_format() (actually _gently() version)
to setup_git_directory_gently() in order to prevent from
using unsupported repositories.

New setup_git_directory_gently()'s behaviour is stop searching
for a valid gitdir and return as if there is no gitdir if a
unsupported repository is found. Warning will be thrown in these
cases.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRevert "git-am: catch missing author date early."
Junio C Hamano [Wed, 5 Dec 2007 21:16:35 +0000 (13:16 -0800)] 
Revert "git-am: catch missing author date early."

This reverts commit 6e9e0327b7d7f384d8a223b4bc40330ef3e7fb61.  People
can prepare a text file with Subject: and From: headers and feed it to
"am" (pretending the file is a piece of e-mail), and have actually been
doing so.  Strict checking for Date: breaks this established workflow,
which wants to record the time of the commit as the author time.

Thanks go to Jens Axboe for injection of sanity.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit config: Don't rely on regexec() returning 1 on non-match
Björn Steinbrink [Wed, 5 Dec 2007 15:11:24 +0000 (16:11 +0100)] 
git config: Don't rely on regexec() returning 1 on non-match

Some systems don't return 1 from regexec() when the pattern does not
match (notably HP-UX which returns 20).

Bug identified by Dscho and H.Merijn Brand.

Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Tested-by: H.Merijn Brand <h.m.brand@xs4all.nl>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocumentation: add --patch option to synopsis of git-add
Matthias Kestenholz [Wed, 5 Dec 2007 11:28:50 +0000 (12:28 +0100)] 
Documentation: add --patch option to synopsis of git-add

Signed-off-by: Matthias Kestenholz <matthias@spinlock.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoInclude diff options in the git-log manpage
Miklos Vajna [Thu, 1 Nov 2007 14:57:40 +0000 (15:57 +0100)] 
Include diff options in the git-log manpage

[jc: with quite a few fixups]

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-cvsserver runs hooks/post-update
Junio C Hamano [Wed, 5 Dec 2007 09:15:01 +0000 (01:15 -0800)] 
git-cvsserver runs hooks/post-update

Although we have introduced post-receive, we have not deprecated post-update
hook.  This adds support for it to emulate receive-pack better.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-cvsserver runs hooks/post-receive
Michael Witten [Fri, 23 Nov 2007 09:12:54 +0000 (04:12 -0500)] 
git-cvsserver runs hooks/post-receive

git-cvsserver just did the following:
    (1) run hooks/update
    (2) commit if hooks/update passed

This commit simply adds:
    (3) run hooks/post-receive

Also, there are a few grammar cleanups and
consistency improvements.

Signed-off-by: Michael Witten <mfwitten@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRewrite builtin-fetch option parsing to use parse_options().
Kristian Høgsberg [Tue, 4 Dec 2007 07:25:47 +0000 (02:25 -0500)] 
Rewrite builtin-fetch option parsing to use parse_options().

This gets a little tricky because of the way --tags and --no-tags
are handled, and the "tag <name>" syntax needs a little hand-holding too.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoSet OLD_ICONV on Cygwin.
Pascal Obry [Sat, 1 Dec 2007 09:49:22 +0000 (10:49 +0100)] 
Set OLD_ICONV on Cygwin.

Cygwin still has old definition for the iconv() second
parameter. This patch fixes the last warning on Cygwin.
This has been tested with Cygwin 1.5.24.

Signed-off-by: Pascal Obry <pascal@obry.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agot5510: add a bit more tests for fetch
Junio C Hamano [Wed, 5 Dec 2007 05:58:42 +0000 (21:58 -0800)] 
t5510: add a bit more tests for fetch

"git pull/fetch" that gets explicit refspecs from the command line should
not update configured tracking refs.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'wc/add-i'
Junio C Hamano [Wed, 5 Dec 2007 05:38:28 +0000 (21:38 -0800)] 
Merge branch 'wc/add-i'

* wc/add-i:
  git-add -i: add help text for list-and-choose UI
  add -i: allow prefix highlighting for "Add untracked" as well.
  Highlight keyboard shortcuts in git-add--interactive
  Document all help keys in "git add -i" patch mode.
  Add "--patch" option to git-add--interactive
  add -i: Fix running from a subdirectory
  builtin-add: fix command line building to call interactive
  git-add -i: allow multiple selection in patch subcommand
  Add path-limiting to git-add--interactive
  Teach builtin-add to pass multiple paths to git-add--interactive

17 years agoMerge branch 'kh/commit'
Junio C Hamano [Wed, 5 Dec 2007 01:16:33 +0000 (17:16 -0800)] 
Merge branch 'kh/commit'

* kh/commit: (33 commits)
  git-commit --allow-empty
  git-commit: Allow to amend a merge commit that does not change the tree
  quote_path: fix collapsing of relative paths
  Make git status usage say git status instead of git commit
  Fix --signoff in builtin-commit differently.
  git-commit: clean up die messages
  Do not generate full commit log message if it is not going to be used
  Remove git-status from list of scripts as it is builtin
  Fix off-by-one error when truncating the diff out of the commit message.
  builtin-commit.c: export GIT_INDEX_FILE for launch_editor as well.
  Add a few more tests for git-commit
  builtin-commit: Include the diff in the commit message when verbose.
  builtin-commit: fix partial-commit support
  Fix add_files_to_cache() to take pathspec, not user specified list of files
  Export three helper functions from ls-files
  builtin-commit: run commit-msg hook with correct message file
  builtin-commit: do not color status output shown in the message template
  file_exists(): dangling symlinks do exist
  Replace "runstatus" with "status" in the tests
  t7501-commit: Add test for git commit <file> with dirty index.
  ...

17 years agoMerge branch 'sp/refspec-match'
Junio C Hamano [Wed, 5 Dec 2007 01:07:10 +0000 (17:07 -0800)] 
Merge branch 'sp/refspec-match'

* sp/refspec-match:
  refactor fetch's ref matching to use refname_match()
  push: use same rules as git-rev-parse to resolve refspecs
  add refname_match()
  push: support pushing HEAD to real branch name

17 years agoSimplify crud() in ident.c
Alex Riesen [Mon, 3 Dec 2007 19:11:43 +0000 (20:11 +0100)] 
Simplify crud() in ident.c

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDo not rely on the exit status of "unset" for unset variables
H.Merijn Brand [Tue, 4 Dec 2007 22:45:16 +0000 (22:45 +0000)] 
Do not rely on the exit status of "unset" for unset variables

POSIX says that exit status "0" means that "unset" successfully unset
the variable.  However, it is kind of ambiguous if an environment
variable which was not set could be successfully unset.

At least the default shell on HP-UX insists on reporting an error in
such a case, so just ignore the exit status of "unset".

[Dscho: extended the patch to git-submodule.sh, as Junio realized that
 this is the only other place where we check the exit status of "unset".]

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitweb: use Perl built-in utf8 function for UTF-8 decoding.
İsmail Dönmez [Tue, 4 Dec 2007 08:55:41 +0000 (10:55 +0200)] 
gitweb: use Perl built-in utf8 function for UTF-8 decoding.

Signed-off-by: İsmail Dönmez <ismail@pardus.org.tr>
Tested-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agot9600: require cvsps 2.1 to perform tests
Jeff King [Tue, 4 Dec 2007 01:41:45 +0000 (20:41 -0500)] 
t9600: require cvsps 2.1 to perform tests

git-cvsimport won't run at all with less than cvsps 2.1, because it
lacks the -A flag. But there's no point in preventing people who have an
old cvsps from running the full testsuite.

Tested-by: A Large Angry SCM <gitzilla@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agocontrib: Make remotes2config.sh script more robust
Jakub Narebski [Sun, 2 Dec 2007 19:40:43 +0000 (20:40 +0100)] 
contrib: Make remotes2config.sh script more robust

The remotes2config.sh script replaced all 'unsafe' characters in repo
name with '.'; include '-' in the 'safe' characters set (the set is
probably even larger).

Script required also space after "URL:", "Push:" and "Pull:" in
remotes file. This for example made the following remote
  URL: git://git.kernel.org/pub/scm/git/git.git
  Pull: refs/heads/master:refs/heads/origin
  Pull:+refs/heads/pu:refs/heads/pu
miss 'pu' branch (forced branch) in config file after conversion.
Allow for any number of whitespace after "URL:", "Push:", "Pull:".

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoUse a strbuf for copying the command line for the reflog.
Kristian Høgsberg [Tue, 4 Dec 2007 07:25:46 +0000 (02:25 -0500)] 
Use a strbuf for copying the command line for the reflog.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocumentation/git.txt: typofix
Junio C Hamano [Tue, 4 Dec 2007 08:47:04 +0000 (00:47 -0800)] 
Documentation/git.txt: typofix

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocumentation: rerere is enabled by default these days.
Junio C Hamano [Tue, 4 Dec 2007 08:40:55 +0000 (00:40 -0800)] 
Documentation: rerere is enabled by default these days.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoFormatting fix for Documentation/git-help.txt
Junio C Hamano [Tue, 4 Dec 2007 08:29:32 +0000 (00:29 -0800)] 
Formatting fix for Documentation/git-help.txt

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRun the specified perl in Documentation/
Junio C Hamano [Sat, 1 Dec 2007 02:36:34 +0000 (18:36 -0800)] 
Run the specified perl in Documentation/

Makefile uses $(PERL_PATH) but Documentation/Makefile uses "perl"; that
means the two Makefiles can use two different Perl installations.

Teach Documentation/Makefile to use PERL_PATH that is exported from the
toplevel Makefile, and give a sane fallback for people who run "make"
from Documentation directory.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoUpdate draft release notes for 1.5.4
Junio C Hamano [Tue, 4 Dec 2007 07:13:02 +0000 (23:13 -0800)] 
Update draft release notes for 1.5.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAllow ':/<oneline-prefix>' syntax to work with save_commit_buffer == 0
Johannes Schindelin [Mon, 3 Dec 2007 18:42:39 +0000 (18:42 +0000)] 
Allow ':/<oneline-prefix>' syntax to work with save_commit_buffer == 0

Earlier, ':/<oneline-prefix>' would not work (i.e. die) with commands that
set save_commit_buffer = 0, such as blame, describe, pack-objects, reflog
and bundle.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAdd git-fast-export to list of commands.
Junio C Hamano [Tue, 4 Dec 2007 05:56:09 +0000 (21:56 -0800)] 
Add git-fast-export to list of commands.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agofast-export: rename the signed tag mode 'ignore' to 'verbatim'
Johannes Schindelin [Mon, 3 Dec 2007 22:44:39 +0000 (22:44 +0000)] 
fast-export: rename the signed tag mode 'ignore' to 'verbatim'

The name 'verbatim' describes much better what this mode does with
signed tags.  While at it, fix the documentation what it actually
does.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAdd remote.<name>.proxy
Sam Vilain [Mon, 3 Dec 2007 21:48:54 +0000 (10:48 +1300)] 
Add remote.<name>.proxy

As well as allowing a default http.proxy option, allow it to be set
per-remote.

Signed-off-by: Sam Vilain <sam.vilain@catalyst.net.nz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAllow HTTP proxy to be overridden in config
Sam Vilain [Fri, 23 Nov 2007 00:07:00 +0000 (13:07 +1300)] 
Allow HTTP proxy to be overridden in config

The http_proxy / HTTPS_PROXY variables used by curl to control
proxying may not be suitable for git.  Allow the user to override them
in the configuration file.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoTrace and quote with argv: get rid of unneeded count argument.
Christian Couder [Mon, 3 Dec 2007 04:51:50 +0000 (05:51 +0100)] 
Trace and quote with argv: get rid of unneeded count argument.

Now that str_buf takes care of all the allocations, there is
no more gain to pass an argument count.

So this patch removes the "count" argument from:
- "sq_quote_argv"
- "trace_argv_printf"
and all the callers.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoinstall-sh from automake does not like -m without delimiting space
Robert Schiele [Sat, 1 Dec 2007 17:05:40 +0000 (18:05 +0100)] 
install-sh from automake does not like -m without delimiting space

The install-sh script as shipped with automake requires a space between
the -m switch and its argument.  Since this is also the regular way of
doing it with other install implementations this change inserts the
missing space in all makefiles.

Signed-off-by: Robert Schiele <rschiele@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocumentation: add a new man page for "git-help"
Christian Couder [Tue, 4 Dec 2007 05:44:29 +0000 (06:44 +0100)] 
Documentation: add a new man page for "git-help"

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-commit documentation: fix unfinished sentence.
Junio C Hamano [Mon, 3 Dec 2007 21:35:26 +0000 (13:35 -0800)] 
git-commit documentation: fix unfinished sentence.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-add -i: add help text for list-and-choose UI
Wincent Colaiuta [Mon, 3 Dec 2007 08:09:43 +0000 (09:09 +0100)] 
git-add -i: add help text for list-and-choose UI

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-commit --allow-empty
Junio C Hamano [Mon, 3 Dec 2007 08:03:10 +0000 (00:03 -0800)] 
git-commit --allow-empty

It does not usually make sense to record a commit that has the exact
same tree as its sole parent commit and that is why git-commit prevents
you from making such a mistake, but when data from foreign scm is
involved, it is a different story.  We are equipped to represent such an
(perhaps insane, perhaps by mistake, or perhaps done on purpose) empty
change, and it is better to represent it bypassing the safety valve for
native use.

This is primarily for use by foreign scm interface scripts.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-commit --allow-empty
Junio C Hamano [Mon, 3 Dec 2007 08:03:10 +0000 (00:03 -0800)] 
git-commit --allow-empty

It does not usually make sense to record a commit that has the exact
same tree as its sole parent commit and that is why git-commit prevents
you from making such a mistake, but when data from foreign scm is
involved, it is a different story.  We are equipped to represent such an
(perhaps insane, perhaps by mistake, or perhaps done on purpose) empty
change, and it is better to represent it bypassing the safety valve for
native use.

This is primarily for use by foreign scm interface scripts.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-commit: Allow to amend a merge commit that does not change the tree
Johannes Sixt [Mon, 3 Dec 2007 07:24:50 +0000 (08:24 +0100)] 
git-commit: Allow to amend a merge commit that does not change the tree

Normally, it should not be allowed to generate an empty commit. A merge
commit generated with git 'merge -s ours' does not change the tree (along
the first parent), but merges are not "empty" even if they do not change
the tree. Hence, commit 8588452ceb7 allowed to amend a merge commit that
does not change the tree, but 4fb5fd5d301 disallowed it again in an
attempt to avoid that an existing commit is amended such that it becomes
empty. With this change, a commit can be edited (create a new one or amend
an existing one) either if there are changes or if there are at least two
parents.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-commit: Allow to amend a merge commit that does not change the tree
Junio C Hamano [Mon, 3 Dec 2007 07:55:23 +0000 (23:55 -0800)] 
git-commit: Allow to amend a merge commit that does not change the tree

Normally, it should not be allowed to generate an empty commit. A merge
commit generated with git 'merge -s ours' does not change the tree (along
the first parent), but merges are not "empty" even if they do not change
the tree. Hence, we should be careful not to forbid this case.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoquote_path: fix collapsing of relative paths
Jeff King [Mon, 3 Dec 2007 05:30:01 +0000 (00:30 -0500)] 
quote_path: fix collapsing of relative paths

The code tries to collapse identical leading components
between the prefix and the path. So if we're in "dir1", the
path "dir1/file" should become just "file". However, we were
ending up with "../dir1/file". The included test expected
the wrong output.

The "len" parameter to quote_path can be negative to mean
"this is a NUL terminated string".  Simply count it so that
the loop can rely on it being the length of the path.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMake git status usage say git status instead of git commit
Shawn Bohrer [Mon, 3 Dec 2007 05:02:09 +0000 (23:02 -0600)] 
Make git status usage say git status instead of git commit

git status shares the same usage information as git commit since it
shows what would be committed if the same options are given.  However,
when displaying the usage information for git status it should say it
is for git status not git commit.

Signed-off-by: Shawn Bohrer <shawn.bohrer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>