Code

git.git
16 years agorebase --interactive: Compute upstream SHA1 before switching branches
Johannes Sixt [Mon, 2 Jun 2008 14:01:40 +0000 (16:01 +0200)]
rebase --interactive: Compute upstream SHA1 before switching branches

If the upstream argument to rebase (the first argument) was relative to
HEAD and the name of the branch to rebase (the second argument) was given,
the upstream would have been interpreted relative to the second argument.
In particular, this command

    git rebase -i HEAD topic

would always finish with "Nothing to do". (a1bf91e fixed the same issue
for non-interactive rebase.)

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation/git-filter-branch.txt: Fix description of --commit-filter
Kevin Ballard [Fri, 30 May 2008 21:43:40 +0000 (14:43 -0700)]
Documentation/git-filter-branch.txt: Fix description of --commit-filter

The old description was misleading and logically impossible. It claimed that
the ancestors of the original commit would be re-written to have the multiple
emitted ids as parents. Not only would this modify existing objects, but it
would create a cycle. What this actually does is pass the multiple emitted ids
to the newly-created children to use as parents.

Signed-off-by: Kevin Ballard <kevin@sb.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogitweb: Fix "next" link on bottom of page
Jakub Narebski [Mon, 2 Jun 2008 09:54:41 +0000 (11:54 +0200)]
gitweb: Fix "next" link on bottom of page

Fix search form generation to not modify $cgi->param(...)'s.

In git_header_html() we used to use $cgi->hidden(-name => "a") etc. to
generate hidden fields; unfortunately to use this form it is required
to modify $cgi->param("a") etc., which makes href(-replay,...) use
wrong replay values.  This for example made the "next" link on the
bottom of the page has a=search instead of a=$action, and thus fails to
get you to the next page.

Because in CGI the value of a hidden field is "sticky", there is no
way to modify it short of modifying $cgi->param(...).  Therefore it
got replaced by generating <input type="hidden" ...> element [semi]
directly.

Alternate solution would be for href(-replay,...) to use values saved
in global variables, such as $action etc., instead of (re)reading them
from $cgi->param($symbol).

The bad link was reported by Kai Blin through
  http://bugs.debian.org/481902

Reported-by: Kai Blin <kai.blin@gmail.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Tested-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRevert "git.el: Set process-environment instead of invoking env"
Karl Hasselström [Mon, 2 Jun 2008 22:41:44 +0000 (00:41 +0200)]
Revert "git.el: Set process-environment instead of invoking env"

This reverts commit dbe48256b41c1e94d81f2458d7e84b1fdcb47026, which
caused mis-encoding of non-ASCII author/committer names when the
git-status mode is used to create commits.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'sb/am-tests'
Junio C Hamano [Mon, 2 Jun 2008 06:45:41 +0000 (23:45 -0700)]
Merge branch 'sb/am-tests'

* sb/am-tests:
  Merge t4150-am-subdir.sh and t4151-am.sh into t4150-am.sh
  Add test cases for git-am

16 years agoMerge branch 'lw/test-fix'
Junio C Hamano [Mon, 2 Jun 2008 06:45:37 +0000 (23:45 -0700)]
Merge branch 'lw/test-fix'

* lw/test-fix:
  t/test-lib.sh: resolve symlinks in working directory, for pathname comparisons

16 years agoMerge branch 'sp/remote'
Junio C Hamano [Mon, 2 Jun 2008 06:43:30 +0000 (23:43 -0700)]
Merge branch 'sp/remote'

* sp/remote:
  Make "git-remote rm" delete refs acccording to fetch specs
  Make "git-remote prune" delete refs according to fetch specs
  Remove unused remote_prefix member in builtin-remote

16 years agoMerge branch 'lt/pack-sync'
Junio C Hamano [Mon, 2 Jun 2008 06:43:21 +0000 (23:43 -0700)]
Merge branch 'lt/pack-sync'

* lt/pack-sync:
  Remove now unnecessary 'sync()' calls
  Make pack creation always fsync() the result

16 years agoMerge branch 'np/pack-check'
Junio C Hamano [Mon, 2 Jun 2008 06:39:24 +0000 (23:39 -0700)]
Merge branch 'np/pack-check'

* np/pack-check:
  make verify-pack a bit more useful with bad packs

16 years agomake verify-pack a bit more useful with bad packs
Nicolas Pitre [Thu, 29 May 2008 21:34:50 +0000 (17:34 -0400)]
make verify-pack a bit more useful with bad packs

When a pack gets corrupted, its SHA1 checksum will fail.  However, this
is more useful to let the test go on in order to find the actual
problem location than only complain about the SHA1 mismatch and
bail out.

Also, it is more useful to compare the stored pack SHA1 with the one in
the index file instead of the computed SHA1 since the computed SHA1
from a corrupted pack won't match the one stored in the index either.

Finally a few code and message cleanups were thrown in as a bonus.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'jb/reset-q'
Junio C Hamano [Mon, 2 Jun 2008 06:14:11 +0000 (23:14 -0700)]
Merge branch 'jb/reset-q'

* jb/reset-q:
  git-reset: honor -q and do not show progress message

16 years agoMerge branch 'jc/checkout'
Junio C Hamano [Mon, 2 Jun 2008 05:55:33 +0000 (22:55 -0700)]
Merge branch 'jc/checkout'

* 'jc/checkout':
  checkout: "best effort" checkout
  unpack_trees(): allow callers to differentiate worktree errors from merge errors
  checkout: consolidate reset_{to_new,clean_to_new}()
  checkout: make reset_clean_to_new() not die by itself

16 years agoMerge branch 'lr/init-bare'
Junio C Hamano [Mon, 2 Jun 2008 05:54:16 +0000 (22:54 -0700)]
Merge branch 'lr/init-bare'

* lr/init-bare:
  git-init: accept --bare option

16 years agoGit.pm: fix return value of config method
Lea Wiemann [Sun, 1 Jun 2008 20:34:47 +0000 (22:34 +0200)]
Git.pm: fix return value of config method

If config is called in array context, it is supposed to return all
values set for the given option key.  This works for all cases except
if there is no value set at all.  In that case, it wrongly returns
(undef) instead of ().  This fixes the return statement so that it
returns undef in scalar context but an empty array in array context.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoglossary: improve a few links
Lea Wiemann [Sun, 1 Jun 2008 18:15:33 +0000 (20:15 +0200)]
glossary: improve a few links

They now point to more specific/appropriate targets.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation: convert "glossary" and "core-tutorial" to man pages
Christian Couder [Thu, 29 May 2008 17:21:46 +0000 (19:21 +0200)]
Documentation: convert "glossary" and "core-tutorial" to man pages

This patch renames the following documents and at the same time converts
them to the man format:

core-tutorial.txt -> gitcore-tutorial.txt
glossary.txt      -> gitglossary.txt

But as the glossary is included in the user manual and as the new
gitglossary man page cannot be included as a whole in the user manual,
the actual glossary content is now in its own "glossary-content.txt"
new file. And this file is included by both the user manual and the
gitglossary man page.

Other documents that reference the above ones are changed accordingly
and sometimes improved a little too.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoGit.pm: fix documentation of hash_object
Lea Wiemann [Sun, 1 Jun 2008 20:26:25 +0000 (22:26 +0200)]
Git.pm: fix documentation of hash_object

The documentation of hash_object incorrectly states that it accepts a
file handle -- in fact it doesn't, and there is even a TODO comment
for this.  This fixes the documentation.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agograph API: avoid printing unnecessary padding before some octopus merges
Adam Simpkins [Sun, 1 Jun 2008 20:56:58 +0000 (13:56 -0700)]
graph API: avoid printing unnecessary padding before some octopus merges

When an octopus merge is printed, several lines are printed before it to
move over existing branch lines to its right.  This is needed to make
room for the children of the octopus merge.  For example:

| | | |
| |  \ \
| |   \ \
| |    \ \
| M---. \ \
| |\ \ \ \ \

However, this step isn't necessary if there are no branch lines to the
right of the octopus merge.  Therefore, skip this step when it is not
needed, to avoid printing extra lines that don't really serve any
purpose.

Signed-off-by: Adam Simpkins <adam@adamsimpkins.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agograph API: improve display of merge commits
Adam Simpkins [Sun, 1 Jun 2008 20:56:57 +0000 (13:56 -0700)]
graph API: improve display of merge commits

This change improves the way merge commits are displayed, to eliminate a
few visual artifacts.  Previously, merge commits were displayed as:

| M  \
| |\  |

As pointed out by Teemu Likonen, this didn't look nice if the rightmost
branch line was displayed as '\' on the previous line, as it then
appeared to have an extra space in it:

| |\
| M  \
| |\  |

This change updates the code so that branch lines to the right of merge
commits are printed slightly differently depending on how the previous
line was displayed:

| |\          | | |        | |  /
| M \         | M |        | M |
| |\ \        | |\ \       | |\ \

Signed-off-by: Adam Simpkins <adam@adamsimpkins.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-svn fails in prop_walk if $self->{path} is not empty
Christian Engwer [Tue, 27 May 2008 08:46:55 +0000 (08:46 +0000)]
git-svn fails in prop_walk if $self->{path} is not empty

If url://repo/trunk is the current Git branch, prop_walk strips trunk
from the path name. That is useful as, for example "git svn show-ignore"
should not return results like

    trunk/foo

but

    foo

if svn:ignore for trunk includes foo.

The problem now is that prop_walk strips trunk from the path and then
calls itself recursively. But now trunk is missing in the path and
get_dir fails, because it is called for a non existing path.

The attached patch fixed the problem, by adding the previously stipped
$self->{path} in the recursive call. I tested it with my current
git-svn repository for the commands show-ignore and show-external.

Patch was submitted through
 http://bugs.debian.org/477393

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoAdd a --dry-run option to git-svn rebase
Seth Falcon [Tue, 20 May 2008 03:29:17 +0000 (20:29 -0700)]
Add a --dry-run option to git-svn rebase

When working with multiple branches in an svn repository, it can be
useful to verify the svn repository and local tracking branch that will
be used for the rebase operation.

Signed-off-by: Seth Falcon <seth@userprimary.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoFix path duplication in git svn commit-diff
Karl Hasselström [Sat, 17 May 2008 15:07:09 +0000 (17:07 +0200)]
Fix path duplication in git svn commit-diff

Given an SVN repo file:///tmp/svntest/repo, trying to commit changes
to a file proj/trunk/foo.txt in that repo with this command line

  git svn commit-diff -r2 HEAD^ HEAD file:///tmp/svntest/repo/proj/trunk

gave the error message

  Filesystem has no item: File not found: transaction '2-6', path
  '/proj/trunk/proj/trunk/foo.txt'

This fixes the duplication.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMake "git-remote rm" delete refs acccording to fetch specs
Shawn O. Pearce [Sun, 1 Jun 2008 04:28:04 +0000 (00:28 -0400)]
Make "git-remote rm" delete refs acccording to fetch specs

A remote may be configured to fetch into tracking branches that
don't match its name.  A user may have created a remote by hand
that will fetch to a different tracking branch namespace:

  [remote "alt"]
    url = git://repo.or.cz/alt-git.git
    fetch = refs/heads/*:refs/remotes/origin/*

When deleting remote alt we should clean up the refs whose names
start with "refs/remotes/origin/", even though the remote itself
was named alt by the user.

To avoid deleting refs used by another remote we only clear refs
that are unique to this remote.  This prevents `git prune rm alt`
from removing the refs used by say origin if alt was just using a
different URL for the same repository.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMake "git-remote prune" delete refs according to fetch specs
Shawn O. Pearce [Sun, 1 Jun 2008 03:58:05 +0000 (23:58 -0400)]
Make "git-remote prune" delete refs according to fetch specs

A remote may be configured to fetch into tracking branches that
do not match the remote name.  For example a user may have created
extra remotes that will fetch to the same tracking branch namespace,
but from different URLs:

  [remote "origin"]
    url = git://git.kernel.org/pub/scm/git/git.git
    fetch = refs/heads/*:refs/remotes/origin/*

  [remote "alt"]
    url = git://repo.or.cz/alt-git.git
    fetch = refs/heads/*:refs/remotes/origin/*

When running `git remote prune alt` we expect stale branches to
be removed from "refs/remotes/origin/*" and not from the unused
namespace of "refs/remotes/alt/*".

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRemove unused remote_prefix member in builtin-remote
Shawn O. Pearce [Sun, 1 Jun 2008 03:57:48 +0000 (23:57 -0400)]
Remove unused remote_prefix member in builtin-remote

Not sure when this became unused, but no code references it,
other than to populate the strbuf with an initial value.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot/test-lib.sh: resolve symlinks in working directory, for pathname comparisons
Lea Wiemann [Sat, 31 May 2008 21:11:21 +0000 (23:11 +0200)]
t/test-lib.sh: resolve symlinks in working directory, for pathname comparisons

Without this, some tests will fail because they compare command output
of subprocesses (such as git) with $PWD -- but subprocesses have the
physical path as their working directory, whereas $PWD contains the
symlinked path.  This fixes it.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-reset: honor -q and do not show progress message
Jamis Buck [Sun, 1 Jun 2008 01:10:58 +0000 (18:10 -0700)]
git-reset: honor -q and do not show progress message

When running git-reset in a non-interactive setting, the -q switch
works for everything except the progress updates. This squelches it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge t4150-am-subdir.sh and t4151-am.sh into t4150-am.sh
Stephan Beyer [Sat, 31 May 2008 22:11:43 +0000 (00:11 +0200)]
Merge t4150-am-subdir.sh and t4151-am.sh into t4150-am.sh

This patch moves the am test cases in t4150-am.sh and the
am subdirectory test cases from t/t4150-am-subdir.sh into
t/4151-am.sh.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoAdd test cases for git-am
Stephan Beyer [Sat, 31 May 2008 22:11:42 +0000 (00:11 +0200)]
Add test cases for git-am

Add t/t4151-am.sh that does basic testing of git-am functionality,
including:
 * am applies patch correctly
 * am changes committer and keeps author
 * am --signoff adds Signed-off-by: line
 * am stays in branch
 * am --signoff does not add Signed-off-by: line if already there
 * am without --keep removes Re: and [PATCH] stuff
 * am --keep really keeps the subject
 * am -3 falls back to 3-way merge
 * am pauses on conflict
 * am --skip works
 * am --resolved works
 * am takes patches from a Pine mailbox
 * am fails on mail without patch
 * am fails on empty patch

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRemove now unnecessary 'sync()' calls
Linus Torvalds [Fri, 30 May 2008 15:54:46 +0000 (08:54 -0700)]
Remove now unnecessary 'sync()' calls

Since the pack-files are now always created stably on disk, there is no
need to sync() before pruning lose objects or old stale pack-files.

[jc: with Nico's clean-up]

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMake pack creation always fsync() the result
Linus Torvalds [Fri, 30 May 2008 15:42:16 +0000 (08:42 -0700)]
Make pack creation always fsync() the result

This means that we can depend on packs always being stable on disk,
simplifying a lot of the object serialization worries.  And unlike loose
objects, serializing pack creation IO isn't going to be a performance
killer.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoClarify description of <repository> argument to pull/fetch for naming remotes.
John J. Franey [Thu, 29 May 2008 17:32:31 +0000 (13:32 -0400)]
Clarify description of <repository> argument to pull/fetch for naming remotes.

Alter the description of <repository> in OPTIONS section to
explicitly state that a 'remote name' is accepted.
Rewrite REMOTES section to more directly identify the
different kinds of remote-name permitted.

Signed-off-by: John J. Franey <jjfraney@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agorollback lock files on more signals than just SIGINT
Paolo Bonzini [Thu, 29 May 2008 14:55:53 +0000 (16:55 +0200)]
rollback lock files on more signals than just SIGINT

Other signals are also common, for example SIGTERM and SIGHUP.
This patch modifies the lock file mechanism to catch more signals.
It also modifies http-push.c which was missing SIGTERM.

Signed-off-by: Paolo Bonzini <bonzini@gnu.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRevision walking documentation: document most important functions
Miklos Vajna [Sat, 31 May 2008 00:18:08 +0000 (02:18 +0200)]
Revision walking documentation: document most important functions

Unfortunately the list is not complete, but includes the essential ones.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogitweb: Remove gitweb/test/ directory
Jakub Narebski [Sat, 31 May 2008 18:28:18 +0000 (20:28 +0200)]
gitweb: Remove gitweb/test/ directory

Testing if gitweb handles filenames with spaces, filenames with plus
sign ('+') which encodes spaces in CGI parameters (in URLs), and
filenames with Unicode characters should be handled by gitweb tests.

Those files are remainder of the time when gitweb was project on its
own, not a part of git (with its testsuite).

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoAdd shortcut in refresh_cache_ent() for marked entries.
Marius Storm-Olsen [Fri, 30 May 2008 12:38:35 +0000 (14:38 +0200)]
Add shortcut in refresh_cache_ent() for marked entries.

When a cache entry has been marked as CE_VALID, the user has
promised us that any change in the work tree does not matter.
Just mark the entry as up-to-date, and continue.

Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoClearify the documentation for core.ignoreStat
Marius Storm-Olsen [Fri, 30 May 2008 11:14:24 +0000 (13:14 +0200)]
Clearify the documentation for core.ignoreStat

The previous documentation didn't make it clear that the
"assume unchanged" was on per file basis, and not a global
flag.

Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocheckout: "best effort" checkout
Junio C Hamano [Wed, 28 May 2008 22:26:59 +0000 (15:26 -0700)]
checkout: "best effort" checkout

When unpack_trees() returned an error while switching branches, we used to
stop right there, exiting without writing the index out or switching HEAD.

This is Ok when unpack_trees() returned an error because it detected
untracked files or locally modified paths that could be overwritten by
branch switching, because that error return is done before we start to
modify the work tree.  But it is undesirable if unpack_trees() already
started to update the work tree and a failure is returned because some but
not all paths are updated in the work tree, perhaps because a directory
that some files need to go in was read-only by mistake, or a file that
will be overwritten by branch switching had a mandatory lock on it and we
failed to unlink it.

This changes the behaviour upon such an error to complete the branch
switching; the files updated in the work tree will hopefully be much more
consistent with the index and HEAD derived from the switched-to branch.

We still issue error messages, and exit the command with non-zero status,
so scripted callers need to notice it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agounpack_trees(): allow callers to differentiate worktree errors from merge errors
Junio C Hamano [Wed, 28 May 2008 22:12:30 +0000 (15:12 -0700)]
unpack_trees(): allow callers to differentiate worktree errors from merge errors

Instead of uniformly returning -1 on any error, this teaches
unpack_trees() to return -2 when the merge itself is Ok but worktree
refuses to get updated.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocheckout: consolidate reset_{to_new,clean_to_new}()
Junio C Hamano [Wed, 28 May 2008 21:59:40 +0000 (14:59 -0700)]
checkout: consolidate reset_{to_new,clean_to_new}()

These two were very similar functions with only tiny bit of difference.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-init: accept --bare option
Luciano Rocha [Wed, 28 May 2008 18:53:57 +0000 (19:53 +0100)]
git-init: accept --bare option

It is unfortunate that "git init --bare" does not work and the only reason
why "init" did not learn its own "--bare" option is because "git --bare
init" already does the job (and as an option to the git 'potty', it is
more generic solution).

This teaches "git init" its own "--bare" option, so that both "git --bare init"
and "git init --bare" works mostly the same way.

[jc: rewrote the log message and added test]

Signed-off-by: Luciano Rocha <strange@nsk.pt>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocheckout: make reset_clean_to_new() not die by itself
Junio C Hamano [Wed, 28 May 2008 21:54:02 +0000 (14:54 -0700)]
checkout: make reset_clean_to_new() not die by itself

Instead, have its error percolate up through the callchain and let it be
the exit status of the main command.  No semantic changes yet.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years ago"git checkout -- paths..." should error out when paths cannot be written
Junio C Hamano [Wed, 28 May 2008 21:48:57 +0000 (14:48 -0700)]
"git checkout -- paths..." should error out when paths cannot be written

When "git checkout -- paths..." cannot update work tree for whatever
reason, checkout_entry() correctly issued an error message for the path to
the end user, but the command ignored the error, causing the entire
command to succeed.  This fixes it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation: git-cherry uses git-patch-id
Junio C Hamano [Thu, 29 May 2008 00:03:46 +0000 (17:03 -0700)]
Documentation: git-cherry uses git-patch-id

Geoffrey Irving noticed that git-cherry talks about comparing commits without
hinting how they are compared.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoManual subsection to refer to other pages is SEE ALSO
Junio C Hamano [Wed, 28 May 2008 23:55:27 +0000 (16:55 -0700)]
Manual subsection to refer to other pages is SEE ALSO

Consistently say so in all caps as it is customary to do so.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agobisect: use "$GIT_DIR/BISECT_START" to check if we are bisecting
Christian Couder [Wed, 28 May 2008 16:57:02 +0000 (18:57 +0200)]
bisect: use "$GIT_DIR/BISECT_START" to check if we are bisecting

It seems simpler and safer to use the BISECT_START file everywhere
to decide if we are bisecting or not, instead of using it in some
places and BISECT_NAMES in other places.

In commit 6459c7c6786aa9bda0c7a095c9db66c36da0e5f0 (Nov 18 2007,
Bisect: use "$GIT_DIR/BISECT_NAMES" to check if we are bisecting.),
we decided to use BISECT_NAMES but code changed a lot and we now
have to check BISECT_START first in the "bisect_start" function
anyway.

This patch also makes things a little bit safer by creating
the BISECT_START file first and deleting it last, and also by
adding checks in "bisect_clean_state".

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agobuiltin-fetch.c (store_updated_refs): Honor update_local_ref() return value
Dmitry V. Levin [Wed, 28 May 2008 15:29:36 +0000 (19:29 +0400)]
builtin-fetch.c (store_updated_refs): Honor update_local_ref() return value

Sync with builtin-fetch--tool.c where append_fetch_head()
honors update_local_ref() return value.

This fixes non fast forward fetch exit status,
http://bugzilla.altlinux.org/show_bug.cgi?id=15037

Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agofix sha1_pack_index_name()
Junio C Hamano [Wed, 28 May 2008 16:47:43 +0000 (09:47 -0700)]
fix sha1_pack_index_name()

An earlier commit 633f43e (Remove redundant code, eliminate one static
variable, 2008-05-24) had a thinko (perhaps an eyeno) that broke
sha1_pack_index_name() function.  One symptom of this was that the http
walker is now completely broken.

This should fix it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoGit::cat_blob: allow using an empty blob to fix git-svn breakage
Junio C Hamano [Wed, 28 May 2008 06:33:22 +0000 (23:33 -0700)]
Git::cat_blob: allow using an empty blob to fix git-svn breakage

Recent "git-svn optimization" series introduced Git::cat_blob() subroutine
whose interface was broken in that it returned the size of the blob but
signalled an error by returning 0.  You can never use an empty blob with
such an interface.

This fixes the interface to return a negative value to signal an error.

Reported by Björn Steinbrink.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot5100: Avoid filename "nul"
Junio C Hamano [Wed, 28 May 2008 06:12:29 +0000 (23:12 -0700)]
t5100: Avoid filename "nul"

There are broken filesystems that cannot have a file whose name is "nul"
anywhere on it.  Rename the test file to make ourselves more portable.

Noticed by Mark Levedahl.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge 1.5.5.3 in
Junio C Hamano [Wed, 28 May 2008 05:22:47 +0000 (22:22 -0700)]
Merge 1.5.5.3 in

16 years agoGIT 1.5.5.3 v1.5.5.3
Junio C Hamano [Wed, 28 May 2008 05:20:53 +0000 (22:20 -0700)]
GIT 1.5.5.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocommit --interactive: properly update the index before commiting
Gerrit Pape [Tue, 27 May 2008 08:59:16 +0000 (08:59 +0000)]
commit --interactive: properly update the index before commiting

When adding files through git commit --interactive, and 'quit'
afterwards, the message in the editor of the commit message indicates
that many (maybe all) files are deleted from the tree.  Dismissing that
and running git commit afterwards does the right thing.  This commit
fixes git commit --interactive to properly update the index before
commiting.

Reported by Jiří Paleček through
 http://bugs.debian.org/480429

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogitweb: only display "next" links in logs if there is a next page
Lea Wiemann [Tue, 27 May 2008 23:25:42 +0000 (01:25 +0200)]
gitweb: only display "next" links in logs if there is a next page

There was a bug in the implementation of the "next" links in
format_paging_nav (for log and shortlog), which caused the next links
to always be displayed, even if there is no next page.  This fixes it.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRevert "filter-branch: subdirectory filter needs --full-history"
Johannes Sixt [Mon, 26 May 2008 19:09:18 +0000 (21:09 +0200)]
Revert "filter-branch: subdirectory filter needs --full-history"

This reverts commit cfabd6eee1745cfec58cfcb794ce8847e43b888a. I had
implemented it without understanding what --full-history does. Consider
this history:

    C--M--N
   /  /  /
  A--B  /
   \   /
    D-/

where B and C modify a path, X, in the same way so that the result is
identical, and D does not modify it at all. With the path limiter X and
without --full-history this is simplified to

   A--B

i.e. only one of the paths via B or C is chosen. I had assumed that
--full-history would keep both paths like this

    C--M
   /  /
  A--B

removing the path via D; but in fact it keeps the entire history.

Currently, git does not have the capability to simplify to this
intermediary case. However, the other extreme to keep the entire history
is not wanted either in usual cases. I think we can expect that histories
like the above are rare, and in the usual cases we want a simplified
history. So let's remove --full-history again.

(Concerning t7003, subsequent tests depend on what the test case sets up,
so we can't just back out the entire test case.)

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation/git-bundle.txt: fix synopsis
Gerrit Pape [Tue, 27 May 2008 08:51:22 +0000 (08:51 +0000)]
Documentation/git-bundle.txt: fix synopsis

The <git-rev-list args> are mandatory to git bundle create, not
optional.  The usage output of git bundle is already right on this.

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoclone: make sure we support the transport type
Jeff King [Tue, 27 May 2008 14:28:43 +0000 (10:28 -0400)]
clone: make sure we support the transport type

If we use an unsupported transport (e.g., http when curl
support is not compiled in), transport_get reports an error
to the user, but we still get a transport object. We need to
manually check and abort the clone process at that point, or
we end up with a segfault.

Noticed by Thomas Rast.

Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot5700-clone-reference: Quote $U
Johannes Sixt [Tue, 27 May 2008 07:36:22 +0000 (09:36 +0200)]
t5700-clone-reference: Quote $U

The new "trash directory" bites again.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoAdd some tests for git update-ref -d
Karl Hasselström [Sun, 25 May 2008 16:14:29 +0000 (18:14 +0200)]
Add some tests for git update-ref -d

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'jc/diff-no-no-index'
Junio C Hamano [Tue, 27 May 2008 05:38:19 +0000 (22:38 -0700)]
Merge branch 'jc/diff-no-no-index'

* jc/diff-no-no-index:
  git diff --no-index: default to page like other diff frontends
  git-diff: allow  --no-index semantics a bit more
  "git diff": do not ignore index without --no-index
  diff-files: do not play --no-index games
  tests: do not use implicit "git diff --no-index"

16 years agogit diff --no-index: default to page like other diff frontends
Junio C Hamano [Tue, 27 May 2008 05:35:07 +0000 (22:35 -0700)]
git diff --no-index: default to page like other diff frontends

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-diff: allow --no-index semantics a bit more
Junio C Hamano [Tue, 27 May 2008 04:54:23 +0000 (21:54 -0700)]
git-diff: allow  --no-index semantics a bit more

Even when inside a git work tree, if two paths are given and at least one
is clearly outside the work tree, it cannot be a request to diff a tracked
path anyway; allow such an invocation to use --no-index semantics.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'maint'
Junio C Hamano [Tue, 27 May 2008 02:49:01 +0000 (19:49 -0700)]
Merge branch 'maint'

* maint:
  Documentation: fix graph in git-rev-parse.txt
  show-branch --current: do not barf on detached HEAD

16 years agoMerge branch 'gp/bisect-fix' into maint
Junio C Hamano [Tue, 27 May 2008 02:15:03 +0000 (19:15 -0700)]
Merge branch 'gp/bisect-fix' into maint

* gp/bisect-fix:
  bisect: print an error message when "git rev-list --bisect-vars" fails
  git-bisect.sh: don't accidentally override existing branch "bisect"

16 years agoMerge git://repo.or.cz/git-gui
Junio C Hamano [Tue, 27 May 2008 02:10:43 +0000 (19:10 -0700)]
Merge git://repo.or.cz/git-gui

* git://repo.or.cz/git-gui:
  git-gui: Vertically align textboxes with labels
  git-gui: Handle workdir detection when CYGWIN=nowinsymlinks
  git-gui: Add a --trace command line option

16 years agoDocumentation: fix graph in git-rev-parse.txt
Michele Ballabio [Mon, 26 May 2008 13:24:02 +0000 (15:24 +0200)]
Documentation: fix graph in git-rev-parse.txt

Preformatted html and man pages show a mangled graph, caused by a
backslash.

Commit f1ec6b22a8c1ab1cca0f1875f85aea5d2434e5a6 fixed this same issue,
but it seems that new versions of the Asciidoc toolchain changed their
behaviour.

Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-gui: Vertically align textboxes with labels gitgui-0.10.2
Twiinz [Mon, 19 May 2008 04:01:58 +0000 (00:01 -0400)]
git-gui: Vertically align textboxes with labels

In git-gui after clicking either on 'Create New Repository' or
'Open Existing Repository' the form elements aren't centered like
they are pretty much everywhere else in the app. At least when ran
on a mac, haven't checked on other platforms.

Using grid instead of pack seems to fix this.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoshow-branch --current: do not barf on detached HEAD
Junio C Hamano [Mon, 26 May 2008 22:09:51 +0000 (15:09 -0700)]
show-branch --current: do not barf on detached HEAD

The code assumed that there always is the current branch, but the result
from resolve_ref() on detached HEAD does not even start with "refs/heads/".

Originally noticed and fixed by Stephan Beyer.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMakefile: fix dependency on wt-status.h
Junio C Hamano [Mon, 26 May 2008 21:56:19 +0000 (14:56 -0700)]
Makefile: fix dependency on wt-status.h

Noticed by Hannes, reported by Dscho.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agohg-to-git: add --verbose option
Johannes Schindelin [Mon, 26 May 2008 13:20:54 +0000 (14:20 +0100)]
hg-to-git: add --verbose option

This patch adds an option to make hg-to-git quiet by default.  Note:
it only suppresses those messages that would be printed when everything
was up-to-date.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: Stelian Pop <stelian@popies.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation/git.txt: link to 1.5.5.2 documentation.
Junio C Hamano [Mon, 26 May 2008 04:14:09 +0000 (21:14 -0700)]
Documentation/git.txt: link to 1.5.5.2 documentation.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'maint'
Junio C Hamano [Mon, 26 May 2008 05:43:05 +0000 (22:43 -0700)]
Merge branch 'maint'

* maint:
  builtin-fast-export: Only output a single parent per line
  Release Notes for 1.5.5.2

Conflicts:

RelNotes

16 years agoMerge branch 'jk/maint-send-email-compose' into maint
Junio C Hamano [Mon, 26 May 2008 05:34:23 +0000 (22:34 -0700)]
Merge branch 'jk/maint-send-email-compose' into maint

* jk/maint-send-email-compose:
  send-email: rfc2047-quote subject lines with non-ascii characters
  send-email: specify content-type of --compose body

16 years agoMerge branch 'hb/maint-send-email-quote-recipients' into maint
Junio C Hamano [Mon, 26 May 2008 05:34:20 +0000 (22:34 -0700)]
Merge branch 'hb/maint-send-email-quote-recipients' into maint

* hb/maint-send-email-quote-recipients:
  Fix recipient santitization

16 years agoMerge branch 'maint-1.5.4' into maint
Junio C Hamano [Mon, 26 May 2008 05:34:05 +0000 (22:34 -0700)]
Merge branch 'maint-1.5.4' into maint

* maint-1.5.4:
  builtin-fast-export: Only output a single parent per line

16 years agobuiltin-fast-export: Only output a single parent per line
Pieter de Bie [Sat, 24 May 2008 23:21:53 +0000 (01:21 +0200)]
builtin-fast-export: Only output a single parent per line

According to the git-fast-import man-page, you can only put a single
committish per merge: line, like this:

  merge :10
  merge :11

However, git-fast-export puts all parents on a single line, like this:

  merge :10 :11

This changes fast-export to output a single parent per line.  Otherwise
neither git-fast-import nor bzr-fast-import can read its output.

[jc: fix-up to remove excess LF in the output that makes fast-import barf]

Signed-off-by: Pieter de Bie <pdebie@ai.rug.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRelease Notes for 1.5.5.2
Junio C Hamano [Mon, 26 May 2008 04:11:24 +0000 (21:11 -0700)]
Release Notes for 1.5.5.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoIgnore no-op changes in paranoid update hook
Shawn O. Pearce [Mon, 26 May 2008 02:18:05 +0000 (22:18 -0400)]
Ignore no-op changes in paranoid update hook

If the hook gets invoked with identical old and new ids there
is no change taking place.  We probably should not have been
called, but instead of failing silently allow the no-op.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDon't load missing ACL files in paranoid update hook
Shawn O. Pearce [Mon, 26 May 2008 02:18:01 +0000 (22:18 -0400)]
Don't load missing ACL files in paranoid update hook

If a user or group ACL file does not exist in the current tip
revision of the acl repository we will get an error from cat-file
when we ask for that blob as it cannot be resolved.  A quick look
at the history by rev-list can tell us if there is a path there
or not.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDon't diff empty tree on branch creation in paranoid update hook
Shawn O. Pearce [Mon, 26 May 2008 02:17:57 +0000 (22:17 -0400)]
Don't diff empty tree on branch creation in paranoid update hook

Listing all files in a branch during branch creation is silly;
the user's file-level ACLs probably don't mean anything at this
point.  We now treat the base case of 0{40} as an empty diff,
as this happens only when the user is creating the branch and
there are file level ACLs that diff against the old value of
the branch.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agolog --pretty: do not accept bogus "--prettyshort"
Junio C Hamano [Mon, 26 May 2008 03:19:30 +0000 (20:19 -0700)]
log --pretty: do not accept bogus "--prettyshort"

... nor bogus "format.pretty = '=short'".  Both are syntax errors.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agolog --graph: do not accept log --graphbogus
Junio C Hamano [Mon, 26 May 2008 03:19:25 +0000 (20:19 -0700)]
log --graph: do not accept log --graphbogus

An obvious fix to the argument parser.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoUpdate draft release notes for 1.5.6
Junio C Hamano [Mon, 26 May 2008 01:28:37 +0000 (18:28 -0700)]
Update draft release notes for 1.5.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'js/config-cb' v1.5.6-rc0
Junio C Hamano [Sun, 25 May 2008 21:25:02 +0000 (14:25 -0700)]
Merge branch 'js/config-cb'

* js/config-cb:
  Provide git_config with a callback-data parameter

Conflicts:

builtin-add.c
builtin-cat-file.c

16 years agoMerge branch 'as/graph'
Junio C Hamano [Sun, 25 May 2008 21:05:11 +0000 (14:05 -0700)]
Merge branch 'as/graph'

* as/graph:
  get_revision(): honor the topo_order flag for boundary commits
  Fix output of "git log --graph --boundary"
  log --graph --left-right: show left/right information in place of '*'
  graph API: don't print branch lines for uninteresting merge parents
  graph API: fix graph mis-alignment after uninteresting commits

16 years agoMerge branch 'js/mailinfo'
Junio C Hamano [Sun, 25 May 2008 21:05:09 +0000 (14:05 -0700)]
Merge branch 'js/mailinfo'

* js/mailinfo:
  mailsplit: minor clean-up in read_line_with_nul()
  mailinfo: apply the same fix not to lose NULs in BASE64 and QP codepaths
  mailsplit and mailinfo: gracefully handle NUL characters

16 years agoMerge branch 'jc/add-n-u'
Junio C Hamano [Sun, 25 May 2008 21:03:50 +0000 (14:03 -0700)]
Merge branch 'jc/add-n-u'

* jc/add-n-u:
  Make git add -n and git -u -n output consistent
  "git-add -n -u" should not add but just report

Conflicts:

builtin-add.c
builtin-mv.c
cache.h
read-cache.c

16 years agoMerge branch 'ar/t6031'
Junio C Hamano [Sun, 25 May 2008 20:49:16 +0000 (13:49 -0700)]
Merge branch 'ar/t6031'

* ar/t6031:
  Fix t6031 on filesystems without working exec bit

16 years agoMerge branch 'db/clone-in-c'
Junio C Hamano [Sun, 25 May 2008 20:38:44 +0000 (13:38 -0700)]
Merge branch 'db/clone-in-c'

* db/clone-in-c:
  Add test for cloning with "--reference" repo being a subset of source repo
  Add a test for another combination of --reference
  Test that --reference actually suppresses fetching referenced objects
  clone: fall back to copying if hardlinking fails
  builtin-clone.c: Need to closedir() in copy_or_link_directory()
  builtin-clone: fix initial checkout
  Build in clone
  Provide API access to init_db()
  Add a function to set a non-default work tree
  Allow for having for_each_ref() list extra refs
  Have a constant extern refspec for "--tags"
  Add a library function to add an alternate to the alternates file
  Add a lockfile function to append to a file
  Mark the list of refs to fetch as const

Conflicts:

cache.h
t/t5700-clone-reference.sh

16 years agoMerge branch 'jc/apply-whitespace'
Junio C Hamano [Sun, 25 May 2008 20:38:31 +0000 (13:38 -0700)]
Merge branch 'jc/apply-whitespace'

* jc/apply-whitespace:
  builtin-apply: do not declare patch is creation when we do not know it
  builtin-apply: accept patch to an empty file
  builtin-apply: typofix

16 years agoMerge branch 'jc/unpack-trees-reword'
Junio C Hamano [Sun, 25 May 2008 20:38:27 +0000 (13:38 -0700)]
Merge branch 'jc/unpack-trees-reword'

* jc/unpack-trees-reword:
  unpack-trees: allow Porcelain to give different error messages

16 years agoMerge branch 'ar/batch-cat'
Junio C Hamano [Sun, 25 May 2008 20:38:06 +0000 (13:38 -0700)]
Merge branch 'ar/batch-cat'

* ar/batch-cat:
  change quoting in test t1006-cat-file.sh
  builtin-cat-file.c: use parse_options()
  git-svn: Speed up fetch
  Git.pm: Add hash_and_insert_object and cat_blob
  Git.pm: Add command_bidi_pipe and command_close_bidi_pipe
  git-hash-object: Add --stdin-paths option
  Add more tests for git hash-object
  Move git-hash-object tests from t5303 to t1007
  git-cat-file: Add --batch option
  git-cat-file: Add --batch-check option
  git-cat-file: Make option parsing a little more flexible
  git-cat-file: Small refactor of cmd_cat_file
  Add tests for git cat-file

16 years agoMerge branch 'cc/bisect'
Junio C Hamano [Sun, 25 May 2008 20:38:03 +0000 (13:38 -0700)]
Merge branch 'cc/bisect'

* cc/bisect:
  bisect: use a detached HEAD to bisect
  bisect: trap critical errors in "bisect_start"
  bisect: fix left over "BISECT_START" file when starting with junk rev
  bisect: add test cases to check that "git bisect start" is atomic

16 years agoMerge branch 'ap/svn'
Junio C Hamano [Sun, 25 May 2008 20:37:25 +0000 (13:37 -0700)]
Merge branch 'ap/svn'

* ap/svn:
  git-svn: add test for --add-author-from and --use-log-author
  git-svn: add documentation for --add-author-from option.
  git-svn: Add --add-author-from option.
  git-svn: add documentation for --use-log-author option.

16 years agoMerge branch 'js/cvsexportcommit'
Junio C Hamano [Sun, 25 May 2008 20:37:20 +0000 (13:37 -0700)]
Merge branch 'js/cvsexportcommit'

* js/cvsexportcommit:
  cvsexportcommit: introduce -W for shared working trees (between Git and CVS)
  cvsexportcommit: chomp only removes trailing whitespace

Conflicts:

git-cvsexportcommit.perl

16 years agoMerge branch 'js/ignore-submodule'
Junio C Hamano [Sun, 25 May 2008 20:37:08 +0000 (13:37 -0700)]
Merge branch 'js/ignore-submodule'

* js/ignore-submodule:
  Ignore dirty submodule states during rebase and stash
  Teach update-index about --ignore-submodules
  diff options: Introduce --ignore-submodules

16 years agoMerge branch 'mo/cvsserver'
Junio C Hamano [Sun, 25 May 2008 20:37:04 +0000 (13:37 -0700)]
Merge branch 'mo/cvsserver'

* mo/cvsserver:
  Documentation: Fix skipped section level
  git-cvsserver: add ability to guess -kb from contents
  implement gitcvs.usecrlfattr
  git-cvsserver: add mechanism for managing working tree and current directory

16 years agomailsplit: minor clean-up in read_line_with_nul()
Junio C Hamano [Sun, 25 May 2008 08:23:55 +0000 (01:23 -0700)]
mailsplit: minor clean-up in read_line_with_nul()

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agomailinfo: apply the same fix not to lose NULs in BASE64 and QP codepaths
Junio C Hamano [Sun, 25 May 2008 08:16:05 +0000 (01:16 -0700)]
mailinfo: apply the same fix not to lose NULs in BASE64 and QP codepaths

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agomailsplit and mailinfo: gracefully handle NUL characters
Johannes Schindelin [Fri, 16 May 2008 13:03:30 +0000 (14:03 +0100)]
mailsplit and mailinfo: gracefully handle NUL characters

The function fgets() has a big problem with NUL characters: it reads
them, but nobody will know if the NUL comes from the file stream, or
was appended at the end of the line.

So implement a custom read_line_with_nul() function.

Noticed by Tommy Thorn.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>