Code

git.git
17 years agogitweb: Add combined diff support to git_difftree_body
Jakub Narebski [Sun, 6 May 2007 23:10:04 +0000 (01:10 +0200)]
gitweb: Add combined diff support to git_difftree_body

You have to pass all parents as final parameters of git_difftree_body
subroutine; the number of parents of a diff must be equal to the
number derived from parsing git-diff-tree output, raw combined diff
for git_difftree_body to display combined diff correctly (but it is
not checked).

Currently the possibility of displaying diffree of combined diff is
not used in gitweb code; git_difftree_body is always caled for
ordinary diff, and with only one parent.

Description of output for combined diff:
----------------------------------------

The difftree table for combined diff starts with a cell with pathname
of changed blob (changed file), which if possible is hidden link
(class="list") to the 'blob' view of final version (if it exists),
like for difftree for ordinary diff. If file was deleted in the final
commit then filename is not hyperlinked.

There is no cell with single file status (new, deleted, mode change,
rename), as for combined diff as there is no single status: different
parents might have different status.

If git_difftree_body was called from git_commitdiff (for 'commitdiff'
action) there is inner link to anchor to appropriate fragment (patch)
in patchset body; the "patch" link does not replace "diff" link like
for ordinary diff.

Each of "diff" links is in separate cell, contrary to output for
ordinary diff in which all links are (at least for now) in a single
cell.

For each parent, if file was not present we leave cell empty. If file
was deleted in the result, we provide link to 'blob' view. Otherwise
we provide link to 'commitdiff' view, even if patch (diff) consist
only of extended diff header, and contents is not changed (pure
rename, pure mode change). The only difference is that link to
"blobdiff" view with no contents change is with 'nochange' class.

At last, there is provided link to current version of file as "blob"
link, if the file was not deleted in the result, and lik to history of
a file, if there exists one. (The link to file history might be
confused, at least for now, by renames.)

Note that git-diff-tree raw output dor combined diff does not provide
filename before change for renames and copies; we use
git_get_path_by_hash to get "src" filename for renames (this means
additional call to git-ls-tree for a _whole_ tree).

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogitweb: Add parsing of raw combined diff format to parse_difftree_raw_line
Jakub Narebski [Sun, 6 May 2007 23:10:03 +0000 (01:10 +0200)]
gitweb: Add parsing of raw combined diff format to parse_difftree_raw_line

Add parsing line of raw combined diff ("git diff-tree -c/-cc" output)
as described in section "diff format for merges" in diff-format.txt
to parse_difftree_raw_line subroutine.

Returned hash (or hashref) has for combined diff 'nparents' key which
holds number of parents in a merge. At keys 'from_mode' and 'from_id'
there are arrayrefs holding modes and ids, respectively. There is no
'similarity' value, and there is only 'to_file' value and no
'from_file' value.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUse GIT_OBJECT_DIR for temporary files of pack-objects
Alex Riesen [Mon, 7 May 2007 17:33:24 +0000 (19:33 +0200)]
Use GIT_OBJECT_DIR for temporary files of pack-objects

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix minor documentation errors
Michael Spang [Sun, 6 May 2007 18:09:34 +0000 (14:09 -0400)]
Fix minor documentation errors

- git-ls-files.txt: typo in description of --ignored
- git-clean.txt: s/forceRequire/requireForce/

Signed-off-by: Michael Spang <mspang@uwaterloo.ca>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agot7300: Basic tests for git-clean
Michael Spang [Sun, 6 May 2007 19:50:54 +0000 (15:50 -0400)]
t7300: Basic tests for git-clean

This tests the -d, -n, -f, -x, and -X options to git-clean.

Signed-off-by: Michael Spang <mspang@uwaterloo.ca>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agodir.c: Omit non-excluded directories with dir->show_ignored
Michael Spang [Mon, 7 May 2007 02:35:04 +0000 (22:35 -0400)]
dir.c: Omit non-excluded directories with dir->show_ignored

This makes "git-ls-files --others --directory --ignored" behave
as documented and consequently also fixes "git-clean -d -X".
Previously, git-clean would remove non-excluded directories
even when using the -X option.

Signed-off-by: Michael Spang <mspang@uwaterloo.ca>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'master' of git://repo.or.cz/git-gui
Junio C Hamano [Mon, 7 May 2007 21:47:14 +0000 (14:47 -0700)]
Merge branch 'master' of git://repo.or.cz/git-gui

* 'master' of git://repo.or.cz/git-gui:
  git-gui: Correctly handle UTF-8 encoded commit messages

17 years agoMerge branch 'maint'
Junio C Hamano [Mon, 7 May 2007 21:46:48 +0000 (14:46 -0700)]
Merge branch 'maint'

* maint:
  Documentation: don't reference non-existent 'git-cvsapplycommit'
  user-manual: stop deprecating the manual
  user-manual: miscellaneous editing
  user-manual: fix .gitconfig editing examples
  user-manual: clean up fast-forward and dangling-objects sections
  user-manual: add section ID's
  user-manual: more discussion of detached heads, fix typos
  git-gui: Allow spaces in path to 'wish'
  gitk: Allow user to choose whether to see the diff, old file, or new file

17 years agoMerge branch 'maint' of git://repo.or.cz/git-gui into maint
Junio C Hamano [Mon, 7 May 2007 21:46:15 +0000 (14:46 -0700)]
Merge branch 'maint' of git://repo.or.cz/git-gui into maint

* 'maint' of git://repo.or.cz/git-gui:
  git-gui: Allow spaces in path to 'wish'

17 years agoMerge git://git2.kernel.org/pub/scm/gitk/gitk into maint
Junio C Hamano [Mon, 7 May 2007 21:40:41 +0000 (14:40 -0700)]
Merge git://git2./pub/scm/gitk/gitk into maint

* git://git2.kernel.org/pub/scm/gitk/gitk:
  gitk: Allow user to choose whether to see the diff, old file, or new file

17 years agoAdded a reference to git-add in the documentation for git-update-index
Matthieu Moy [Sun, 6 May 2007 21:11:56 +0000 (23:11 +0200)]
Added a reference to git-add in the documentation for git-update-index

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocument git add -u introduced earlier.
Matthieu Moy [Sun, 6 May 2007 21:11:55 +0000 (23:11 +0200)]
Document git add -u introduced earlier.

This command was implemented, but not documented in
dfdac5d9b877641d3aad8ec49f64c2730a3487e3.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocumentation: don't reference non-existent 'git-cvsapplycommit'
Jeff King [Mon, 7 May 2007 05:28:34 +0000 (01:28 -0400)]
Documentation: don't reference non-existent 'git-cvsapplycommit'

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agouser-manual: stop deprecating the manual
J. Bruce Fields [Mon, 7 May 2007 05:01:42 +0000 (01:01 -0400)]
user-manual: stop deprecating the manual

It's just as much a work-in-progress, but at least now it's gotten
enough technical review to shake out most of the really bad lies, so
hopefully it doesn't do any actual damage.  And if we encourage people
to read it, they'll be more likely to whine about it, which will help
get it fixed faster.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: miscellaneous editing
J. Bruce Fields [Mon, 7 May 2007 04:56:45 +0000 (00:56 -0400)]
user-manual: miscellaneous editing

I cherry-picked some additional miscellaneous fixes from those suggested
by Santi Béjar, including fixes to:

- correct discussion of repository/HEAD->repository shortcut
- add mention of git-mergetool
- add mention of --track
- mention "-f" as well as "+" for fetch

Cc: Santi Béjar <sbejar@gmail.com>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: fix .gitconfig editing examples
J. Bruce Fields [Mon, 7 May 2007 04:16:33 +0000 (00:16 -0400)]
user-manual: fix .gitconfig editing examples

Santi Béjar points out that when telling people how to "introduce
themselves" to git we're advising them to replace their entire
.gitconfig file.  Fix that.

Cc: "Santi Béjar <sbejar@gmail.com>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: clean up fast-forward and dangling-objects sections
J. Bruce Fields [Mon, 30 Apr 2007 15:11:02 +0000 (11:11 -0400)]
user-manual: clean up fast-forward and dangling-objects sections

The previous commit calls attention to the fact that we have two
sections each devoted to fast-forwards and to dangling objects.  Revise
and attempt to differentiate them a bit.  Some more reorganization may
be required later....

Signed-off-by: J. Bruce Fields
17 years agouser-manual: add section ID's
J. Bruce Fields [Wed, 18 Apr 2007 04:46:19 +0000 (00:46 -0400)]
user-manual: add section ID's

Any section lacking an id gets an annoying warning when you build
the manual.  More seriously, the table of contents then generates
volatile id's which change with every build, with the effect that
we get URL's that change all the time.

The ID's are manually generated and sometimes inconsistent, but
that's OK.

XXX: what to do about the preface?

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
17 years agouser-manual: more discussion of detached heads, fix typos
J. Bruce Fields [Wed, 18 Apr 2007 04:20:46 +0000 (00:20 -0400)]
user-manual: more discussion of detached heads, fix typos

Nicolas Pitre pointed out a couple typos and some room for improvement
in the discussion of detached heads.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Cc: Nicolas Pitre <nico@cam.org>
17 years agoGIT v1.5.2-rc2 v1.5.2-rc2
Junio C Hamano [Sun, 6 May 2007 08:07:04 +0000 (01:07 -0700)]
GIT v1.5.2-rc2

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Sun, 6 May 2007 07:21:03 +0000 (00:21 -0700)]
Merge branch 'maint'

* maint:
  Small correction in reading of commit headers
  Documentation: fix typo in git-remote.txt
  Add test for blame corner cases.
  blame: -C -C -C
  blame: Notice a wholesale incorporation of an existing file.
  Fix --boundary output
  diff format documentation: describe raw combined diff format
  Mention version 1.5.1 in tutorial and user-manual
  Add --no-rebase option to git-svn dcommit
  Fix markup in git-svn man page

17 years agoHandle return code of parse_commit in revision machinery
Alex Riesen [Fri, 4 May 2007 21:54:57 +0000 (23:54 +0200)]
Handle return code of parse_commit in revision machinery

This fixes a crash in broken repositories where random commits
suddenly disappear.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoSmall correction in reading of commit headers
Alex Riesen [Fri, 4 May 2007 21:51:32 +0000 (23:51 +0200)]
Small correction in reading of commit headers

Check if a line of the header has enough characters to possibly
contain the requested prefix.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocumentation: fix typo in git-remote.txt
James Bowes [Sat, 5 May 2007 18:23:12 +0000 (14:23 -0400)]
Documentation: fix typo in git-remote.txt

Signed-off-by: James Bowes <jbowes@dangerouslyinc.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd test for blame corner cases.
Junio C Hamano [Sun, 6 May 2007 05:36:19 +0000 (22:36 -0700)]
Add test for blame corner cases.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoblame: -C -C -C
Junio C Hamano [Sun, 6 May 2007 04:18:57 +0000 (21:18 -0700)]
blame: -C -C -C

When you do this, existing "blame -C -C" would not find that the
latter half of the file2 came from the existing file1:

... both file1 and file2 are tracked ...
$ cat file1 >>file2
$ git add file1 file2
$ git commit

This is because we avoid the expensive find-copies-harder code
that makes unchanged file (in this case, file1) as a candidate
for copy & paste source when annotating an existing file
(file2).  The third -C now allows it.  However, this obviously
makes the process very expensive.  We've actually seen this
patch before, but I dismissed it because it covers such a narrow
(and arguably stupid) corner case.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoblame: Notice a wholesale incorporation of an existing file.
Junio C Hamano [Sat, 5 May 2007 16:13:26 +0000 (09:13 -0700)]
blame: Notice a wholesale incorporation of an existing file.

The -C option to blame tries to find a section of a preimage
file by running diff against the lines whose origin is still
unknown, and excluding the different parts.  The code however
did not cover the case where the tail part of the section
matched, which we handle for the normal non-move/copy codepath.

This breakage was most visible when preimage file matches in its
entirety and failed to pass blame in such a case.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix --boundary output
Linus Torvalds [Sat, 5 May 2007 22:18:03 +0000 (15:18 -0700)]
Fix --boundary output

"git log --boundary" incorrectly honoured the option only when
"left-right" was enabled.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agodiff format documentation: describe raw combined diff format
Jakub Narebski [Fri, 4 May 2007 22:48:35 +0000 (00:48 +0200)]
diff format documentation: describe raw combined diff format

Add description of raw combined diff format to diff-formats.txt,
as "diff format for merges" section, before "Generating patches..."
section.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMention version 1.5.1 in tutorial and user-manual
Carl Worth [Fri, 4 May 2007 18:27:10 +0000 (11:27 -0700)]
Mention version 1.5.1 in tutorial and user-manual

Most other documentation will frequently be read from an installation
of git so will naturally be associated with the installed version.
But these two documents in particular are often read from web pages
while users are still exploring git. It's important to mention
version 1.5.1 since these documents provide example commands that
won't work with previous versions of git.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd --no-rebase option to git-svn dcommit
Karl Hasselström [Thu, 3 May 2007 05:51:35 +0000 (07:51 +0200)]
Add --no-rebase option to git-svn dcommit

git-svn dcommit exports commits to Subversion, then imports them back
to git again, and last but not least rebases or resets HEAD to the
last of the new commits. I guess this rebasing is convenient when
using just git, but when the commits to be exported are managed by
StGIT, it's really annoying. So add an option to disable this
behavior. And document it, too!

Signed-off-by: Karl Hasselström <kha@treskal.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix markup in git-svn man page
Karl Hasselström [Fri, 4 May 2007 07:03:22 +0000 (09:03 +0200)]
Fix markup in git-svn man page

Some of the existing markup was just plain broken, and some subcommand
options weren't indented properly.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-tag(1): -v option is a subcommand; fix code block
Jonas Fonseca [Tue, 1 May 2007 07:24:59 +0000 (09:24 +0200)]
git-tag(1): -v option is a subcommand; fix code block

When the -v is passed, git-tag will exit after it is processed like it
does with the -d and -l options. Additionally, missing code block caused
wrong rendering of an option example.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoImprove request-pull to handle non-rebased branches
Shawn O. Pearce [Tue, 1 May 2007 06:08:23 +0000 (02:08 -0400)]
Improve request-pull to handle non-rebased branches

This is actually a few different changes to request-pull,
making it slightly smarter:

 1) Minor cleanup of revision->base variable names, making it
    follow the head/headrev naming convention that is already
    in use.

 2) Compute the merge-base between the two revisions upfront
    and reuse that selected merge-base to create the diffstat.

 3) Refuse to generate a pull request for branches that have no
    existing relationship.  These aren't very common and would mess
    up our diffstat generation.

 4) Disable the PAGER when running shortlog and diff, as these
    would otherwise activate the pager for each command when
    git-request-pull is run on a tty.  Instead users can get the
    entire output paged (if desired) using `git -p request-pull`.

 5) Use shortlog rather than `git log | git shortlog` now that
    recent shortlog versions are able to run the revision listing
    internally.

 6) Attempt to resolve the input URL using the user's configured
    remotes.  This is useful if the URL you want the recipient to
    see is also the one you used to push your changes.  If not a
    config-file remote could easily be setup for the public URL
    and request-pull could be passed that name instead.

 7) Automatically guess and include the remote branch name in the
    body of the message.  We list the branch name immediately after
    the URL, making it easy for the recipient to copy and paste
    the entire line onto a `git pull` command line.  Rumor has it
    Linus likes this format, for exactly that reason.

    If multiple branches at the remote match $headrev we take the
    first one returned by peek-remote and assume it is suitable.

    If no branches are available we warn the user about the problem,
    but insert a static string that is not a valid branch name
    and would be obvious to anyone reading the message as being
    totally incorrect.  This allows users to still generate a
    template message without network access (for example) and
    hand-correct the bits that cannot be verified.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Fri, 4 May 2007 06:26:54 +0000 (23:26 -0700)]
Merge branch 'maint'

* maint:
  gitweb: use decode_utf8 directly
  posix compatibility for t4200
  Document 'opendiff' value in config.txt and git-mergetool.txt
  Allow PERL_PATH="/usr/bin/env perl"
  Make xstrndup common
  diff.c: fix "size cache" handling.
  http-fetch: Disable use of curl multi support for libcurl < 7.16.

17 years agogitweb: use decode_utf8 directly
Ismail Dönmez [Tue, 1 May 2007 21:12:13 +0000 (00:12 +0300)]
gitweb: use decode_utf8 directly

Using decode() tries to decode data that is already UTF-8 and
borks, but decode_utf8 from Encode.pm has a built-in safety
against that.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoposix compatibility for t4200
Bryan Larsen [Wed, 2 May 2007 21:53:23 +0000 (17:53 -0400)]
posix compatibility for t4200

Fix t4200 so that it also works on OS X by not relying on gnu
extensions to sed.

Signed-off-by: Bryan Larsen <bryan@larsen.st>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocument 'opendiff' value in config.txt and git-mergetool.txt
Arjen Laarhoven [Thu, 3 May 2007 18:29:15 +0000 (20:29 +0200)]
Document 'opendiff' value in config.txt and git-mergetool.txt

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAllow PERL_PATH="/usr/bin/env perl"
Bryan Larsen [Thu, 3 May 2007 22:58:56 +0000 (18:58 -0400)]
Allow PERL_PATH="/usr/bin/env perl"

There is a mechanism PERL_PATH in the Makefile to specify path to
Perl binary, but sometimes it is convenient to let 'env' figure
out where Perl comes from, with PERL_PATH="/usr/bin/env perl".

Allowing this would make things easier to MacPorts, where we wish
to work with the MacPorts perl if it is installed, but fall back
to the system perl if it isn't.

Signed-off-by: Bryan Larsen <bryan@larsen.st>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMake xstrndup common
Daniel Barkalow [Thu, 3 May 2007 02:49:41 +0000 (22:49 -0400)]
Make xstrndup common

This also improves the implementation to match how strndup is
specified (by GNU): if the length given is longer than the string,
only the string's length is allocated and copied, but the string need
not be null-terminated if it is at least as long as the given length.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agodiff.c: fix "size cache" handling.
Junio C Hamano [Thu, 3 May 2007 20:00:43 +0000 (13:00 -0700)]
diff.c: fix "size cache" handling.

We broke the size-cache handling when we changed the function
signature of sha1_object_info() in 21666f1a.  We obviously
wanted to cache the size we obtained when sha1_object_info()
succeeded, not when it failed.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agohttp-fetch: Disable use of curl multi support for libcurl < 7.16.
Alexandre Julliard [Wed, 2 May 2007 12:53:23 +0000 (14:53 +0200)]
http-fetch: Disable use of curl multi support for libcurl < 7.16.

curl_multi_remove_handle() is broken in libcurl < 7.16, in that it
doesn't correctly update the active handles count when a request is
aborted. This causes the transfer to hang forever waiting for the
handle count to become less than the number of active requests.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoblame: use .mailmap unconditionally
Junio C Hamano [Thu, 3 May 2007 06:58:14 +0000 (23:58 -0700)]
blame: use .mailmap unconditionally

There really isn't any point in turning off .mailmap.  The
number of mailmap lookups are bounded by number of lines in the
target file, and the real blame processing is much more
expensive.  If it turns out to be too costly, we should optimize
the mailmap lookup itself, instead of avoiding the call.

If the author information of commits of the project are
relatively clean, .mailmap would have only small number of
entries, and the overhead of looking it up will not be high.  On
the other hand, if the author information is really screwed up
that a good .mailmap needs to be maintained to run shortlog,
giving uncleaned names in blame output is not helpful at all
either.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Wed, 2 May 2007 18:27:31 +0000 (11:27 -0700)]
Merge branch 'maint'

* maint:
  cvsserver: Handle re-added files correctly
  Fix compilation of test-delta

17 years agoMerge branch 'maint' of git://repo.or.cz/git/fastimport into maint
Junio C Hamano [Wed, 2 May 2007 18:00:16 +0000 (11:00 -0700)]
Merge branch 'maint' of git://repo.or.cz/git/fastimport into maint

* 'maint' of git://repo.or.cz/git/fastimport:
  Teach import-tars about GNU tar's @LongLink extension.

17 years agocvsserver: Handle re-added files correctly
Frank Lichtenheld [Wed, 2 May 2007 00:43:14 +0000 (02:43 +0200)]
cvsserver: Handle re-added files correctly

We can't unconditionally assign revision 1.1 to
newly added files. In case the file did exist in the
past and was deleted we need to honor the old
revision number.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDon't use seq in tests, not everyone has it
Shawn O. Pearce [Wed, 2 May 2007 16:59:55 +0000 (12:59 -0400)]
Don't use seq in tests, not everyone has it

For example Mac OS X lacks the seq command.  So we cannot use it
there.  A good old while loop works just as good.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoReuse fixup_pack_header_footer in index-pack
Shawn O. Pearce [Wed, 2 May 2007 16:14:15 +0000 (12:14 -0400)]
Reuse fixup_pack_header_footer in index-pack

Now that fast-import is using a "library function" to handle
correcting its packfile's object count and trailing SHA-1 we
should reuse the same function in index-pack, to reduce the
size of the code we must maintain.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoCreate pack-write.c for common pack writing code
Dana L. How [Wed, 2 May 2007 16:13:14 +0000 (12:13 -0400)]
Create pack-write.c for common pack writing code

Include a generalized fixup_pack_header_footer() in this new file.
Needed by git-repack --max-pack-size feature in a later patchset.

[sp: Moved close(pack_fd) to callers, to support index-pack, and
     changed name to better indicate it is for packfiles.]

Signed-off-by: Dana L. How <danahow@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoMerge branch 'gfi-maint' into gfi-master
Shawn O. Pearce [Wed, 2 May 2007 17:24:10 +0000 (13:24 -0400)]
Merge branch 'gfi-maint' into gfi-master

* gfi-maint:
  Teach import-tars about GNU tar's @LongLink extension.

17 years agoTeach import-tars about GNU tar's @LongLink extension.
Johannes Schindelin [Tue, 1 May 2007 21:42:44 +0000 (23:42 +0200)]
Teach import-tars about GNU tar's @LongLink extension.

This extension allows GNU tar to process file names in excess of the 100
characters defined by the original tar standard. It does this by faking a
file, named '././@LongLink' containing the true file name, and then adding
the file with a truncated name. The idea is that tar without this
extension will write out a file with the long file name, and write the
contents into a file with truncated name.

Unfortunately, GNU tar does a lousy job at times. When truncating results
in a _directory_ name, it will happily use _that_ as a truncated name for
the file.

An example where this actually happens is gcc-4.1.2, where the full path
of the file WeThrowThisExceptionHelper.java truncates _exactly_ before the
basename. So, we have to support that ad-hoc extension.

This bug was noticed by Chris Riddoch on IRC.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoMerge branch 'maint'
Shawn O. Pearce [Wed, 2 May 2007 16:45:31 +0000 (12:45 -0400)]
Merge branch 'maint'

* maint:
  git-gui: Allow spaces in path to 'wish'

17 years agogit-gui: Allow spaces in path to 'wish'
Shawn O. Pearce [Wed, 2 May 2007 16:44:44 +0000 (12:44 -0400)]
git-gui: Allow spaces in path to 'wish'

If the path of our wish executable that are running under
contains spaces we need to make sure they are escaped in
a proper Tcl list, otherwise we are unable to start gitk.

Reported by Randal L. Schwartz on #git.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoFix compilation of test-delta
Martin Koegler [Tue, 1 May 2007 09:47:55 +0000 (11:47 +0200)]
Fix compilation of test-delta

The code used write_in_full() without pulling its declarations from the
header file.  When header is included, usage[] collides with usage()
function.

Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoGIT v1.5.2-rc1 v1.5.2-rc1
Junio C Hamano [Tue, 1 May 2007 00:30:02 +0000 (17:30 -0700)]
GIT v1.5.2-rc1

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Tue, 1 May 2007 00:16:19 +0000 (17:16 -0700)]
Merge branch 'maint'

* maint:
  GIT v1.5.1.3
  send-email documentation: clarify --smtp-server
  git.7: Mention preformatted html doc location
  Clarify SubmittingPatches Checklist
  git-svn: Add 'find-rev' command
  Fix symlink handling in git-svn, related to PerlIO

17 years agoGIT v1.5.1.3 v1.5.1.3
Junio C Hamano [Tue, 1 May 2007 00:09:48 +0000 (17:09 -0700)]
GIT v1.5.1.3

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoInclude mailmap.h in mailmap.c to catch mailmap interface changes
Alex Riesen [Mon, 30 Apr 2007 22:31:52 +0000 (00:31 +0200)]
Include mailmap.h in mailmap.c to catch mailmap interface changes

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoRemove pointless calls to access(2) when checking for .mailmap
Alex Riesen [Mon, 30 Apr 2007 22:27:05 +0000 (00:27 +0200)]
Remove pointless calls to access(2) when checking for .mailmap

read_mailmap already returns not 0 in case of error, and nothing
seem to be interested in it. It also is silent about the fact
(read_mailmap being to chatty would justify the call to access,
but there is no point for it to be and it isn't).

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix read_mailmap to handle a caller uninterested in repo abbreviation
Alex Riesen [Mon, 30 Apr 2007 22:26:36 +0000 (00:26 +0200)]
Fix read_mailmap to handle a caller uninterested in repo abbreviation

The only such a caller builtin-blame.c would pass NULL as the place
where to store the abbreviation.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUse strlcpy instead of strncpy in mailmap.c
Alex Riesen [Mon, 30 Apr 2007 22:22:53 +0000 (00:22 +0200)]
Use strlcpy instead of strncpy in mailmap.c

strncpy does not NUL-terminate output in case of output buffer too short,
and map_email prototype (and usage) does not allow for figuring out
what the length of the name is.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agosend-email documentation: clarify --smtp-server
Jari Aalto [Mon, 30 Apr 2007 12:37:28 +0000 (15:37 +0300)]
send-email documentation: clarify --smtp-server

It can be either hostname/address, or a full path to a
local executable.

Signed-off-by: Jari Aalto <jari.aalto@cante.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit.7: Mention preformatted html doc location
Jari Aalto [Mon, 30 Apr 2007 11:21:38 +0000 (14:21 +0300)]
git.7: Mention preformatted html doc location

Signed-off-by: Jari Aalto <jari.aalto@cante.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoClarify SubmittingPatches Checklist
Jari Aalto [Mon, 30 Apr 2007 16:04:25 +0000 (19:04 +0300)]
Clarify SubmittingPatches Checklist

Separate things to be checked when making commits, and things
to be checked when sending patches.

Signed-off-by: Jari Aalto <jari.aalto@cante.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-svn: Add 'find-rev' command
Adam Roben [Sun, 29 Apr 2007 08:35:27 +0000 (01:35 -0700)]
git-svn: Add 'find-rev' command

This patch adds a new 'find-rev' command to git-svn that lets you easily
translate between SVN revision numbers and git tree-ish.

Signed-off-by: Adam Roben <aroben@apple.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix symlink handling in git-svn, related to PerlIO
Junio C Hamano [Sun, 29 Apr 2007 21:05:54 +0000 (14:05 -0700)]
Fix symlink handling in git-svn, related to PerlIO

After reading the leading contents from a symlink data obtained
from subversion, which we expect to begin with 'link ', the code
forked to hash the remainder (which should match readlink()
result) using git-hash-objects, by redirecting its STDIN from
the filehandle we read that 'link ' from.  This was Ok with Perl
on modern Linux, but on Mac OS, the read in the parent process
slurped more than we asked for in stdio buffer, and the child
did not correctly see the "remainder".

This attempts to fix the issue by using lower level sysseek and
sysread instead of seek and read to bypass the stdio buffer.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
Acked-by: Seth Falcon <sethfalcon@gmail.com>
17 years agoMerge branch 'jc/attr'
Junio C Hamano [Sun, 29 Apr 2007 18:01:27 +0000 (11:01 -0700)]
Merge branch 'jc/attr'

* jc/attr:
  Add 'filter' attribute and external filter driver definition.
  Add 'ident' conversion.

17 years agoMake sure test-genrandom and test-chmtime are builtas part of the main build.
Junio C Hamano [Sat, 28 Apr 2007 22:32:49 +0000 (15:32 -0700)]
Make sure test-genrandom and test-chmtime are builtas part of the main build.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMake macros to prevent double-inclusion in headers consistent.
Junio C Hamano [Sun, 29 Apr 2007 06:38:52 +0000 (23:38 -0700)]
Make macros to prevent double-inclusion in headers consistent.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoApply mailmap in git-blame output.
Junio C Hamano [Fri, 27 Apr 2007 07:42:15 +0000 (00:42 -0700)]
Apply mailmap in git-blame output.

This makes git-blame to use the same mailmap used by
git-shortlog.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoSplit out mailmap handling out of shortlog
Junio C Hamano [Fri, 27 Apr 2007 07:41:15 +0000 (00:41 -0700)]
Split out mailmap handling out of shortlog

This splits out a few functions to deal with mailmap from
shortlog and makes it a bit more usable from other programs.
Most notably, it does not clobber input e-mail address anymore.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoblame -s: suppress author name and time.
Junio C Hamano [Thu, 12 Apr 2007 22:50:45 +0000 (15:50 -0700)]
blame -s: suppress author name and time.

With this "git blame -b -s HEAD~n..HEAD" becomes a nicer way to
review the result of recent changes in context.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFall back to $EMAIL for missing GIT_AUTHOR_EMAIL and GIT_COMMITTER_EMAIL
Josh Triplett [Sun, 29 Apr 2007 01:40:28 +0000 (18:40 -0700)]
Fall back to $EMAIL for missing GIT_AUTHOR_EMAIL and GIT_COMMITTER_EMAIL

Some other programs get the user's email address from $EMAIL, so fall back to
that if we don't have a Git-specific email address.

Signed-off-by: Josh Triplett <josh@freedesktop.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge commit 'gfi/master'
Junio C Hamano [Sun, 29 Apr 2007 08:54:28 +0000 (01:54 -0700)]
Merge commit 'gfi/master'

* commit 'gfi/master':

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

* maint:
  http.c: Fix problem with repeated calls of http_init
  Add missing reference to GIT_COMMITTER_DATE in git-commit-tree documentation
  Fix import-tars fix.
  Update .mailmap with "Michael"
  Do not barf on too long action description
  Catch empty pathnames in trees during fsck
  Don't allow empty pathnames in fast-import
  import-tars: be nice to wrong directory modes
  git-svn: Added 'find-rev' command
  git shortlog documentation: add long options and fix a typo

17 years agohttp.c: Fix problem with repeated calls of http_init
Julian Phillips [Sun, 29 Apr 2007 02:46:42 +0000 (03:46 +0100)]
http.c: Fix problem with repeated calls of http_init

Calling http_init after calling http_cleanup causes a segfault.  This
is due to the pragma_header curl_slist being freed but not being set
to NULL.  The subsequent call to http_init tries to setup the slist
again, but it now points to an invalid memory location.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd missing reference to GIT_COMMITTER_DATE in git-commit-tree documentation
Josh Triplett [Sun, 29 Apr 2007 01:40:12 +0000 (18:40 -0700)]
Add missing reference to GIT_COMMITTER_DATE in git-commit-tree documentation

Signed-off-by: Josh Triplett <josh@freedesktop.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix import-tars fix.
Junio C Hamano [Sun, 29 Apr 2007 07:31:14 +0000 (00:31 -0700)]
Fix import-tars fix.

This heeds advice from our resident Perl expert to make sure
the script is not confused with a string that ends with /\n

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUpdate .mailmap with "Michael"
Junio C Hamano [Sun, 29 Apr 2007 07:22:00 +0000 (00:22 -0700)]
Update .mailmap with "Michael"

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDo not barf on too long action description
Junio C Hamano [Sat, 28 Apr 2007 07:15:48 +0000 (00:15 -0700)]
Do not barf on too long action description

Reflog message is primarily about easier identification, and
leaving truncated entry is much better than dying.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint' of git://repo.or.cz/git/fastimport into maint
Junio C Hamano [Sun, 29 Apr 2007 01:15:00 +0000 (18:15 -0700)]
Merge branch 'maint' of git://repo.or.cz/git/fastimport into maint

* 'maint' of git://repo.or.cz/git/fastimport:
  Don't allow empty pathnames in fast-import
  import-tars: be nice to wrong directory modes

17 years agoCatch empty pathnames in trees during fsck
Shawn O. Pearce [Sun, 29 Apr 2007 00:29:23 +0000 (20:29 -0400)]
Catch empty pathnames in trees during fsck

Released versions of fast-import have been able to create a tree that
contains files or subtrees that contain no name.  Unfortunately these
trees aren't valid, but people may have actually tried to create them
due to bugs in import-tars.perl or their own fast-import frontend.

We now look for this unusual condition and warn the user if at
least one of their tree objects contains the problem.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'gfi-maint' into gfi-master
Shawn O. Pearce [Sun, 29 Apr 2007 00:05:58 +0000 (20:05 -0400)]
Merge branch 'gfi-maint' into gfi-master

* gfi-maint:
  Don't allow empty pathnames in fast-import
  import-tars: be nice to wrong directory modes

17 years agoMerge commit 'jc/maint' into gfi-maint
Shawn O. Pearce [Sun, 29 Apr 2007 00:05:20 +0000 (20:05 -0400)]
Merge commit 'jc/maint' into gfi-maint

* commit 'jc/maint': (35 commits)
  Update git-http-fetch documentation
  Update git-local-fetch documentation
  Update git-http-push documentation
  Update -L documentation for git-blame/git-annotate
  Update git-grep documentation
  Update git-fmt-merge documentation
  Document additional options for git-fetch
  Removing -n option from git-diff-files documentation
  Start preparing for 1.5.1.3
  Sanitize @to recipients.
  git-svn: Ignore usernames in URLs in find_by_url
  Document --dry-run and envelope-sender for git-send-email.
  Allow users to optionally specify their envelope sender.
  Ensure clean addresses are always used with Net::SMTP
  Validate @recipients before using it for sendmail and Net::SMTP.
  Perform correct quoting of recipient names.
  Change the scope of the $cc variable as it is not needed outside of send_message.
  Debugging cleanup improvements
  Prefix Dry- to the message status to denote dry-runs.
  Document --dry-run parameter to send-email.
  ...

17 years agoDon't allow empty pathnames in fast-import
Shawn O. Pearce [Sun, 29 Apr 2007 00:01:27 +0000 (20:01 -0400)]
Don't allow empty pathnames in fast-import

riddochc on #git noticed corruption caused by import-tars.  This
was fixed in the prior commit by Dscho, but fast-import was wrong
to have allowed a tree to be created with an empty string as the
filename.  No operating system allows this, and Git itself doesn't
accept this into the index.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoimport-tars: be nice to wrong directory modes
Johannes Schindelin [Sat, 28 Apr 2007 23:59:47 +0000 (01:59 +0200)]
import-tars: be nice to wrong directory modes

Some tars seem to have modes 0755 for directories, not 01000755. Do
not generate an empty object for them, but ignore them.

Noticed by riddochc on IRC.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-svn: Added 'find-rev' command
Adam Roben [Fri, 27 Apr 2007 18:57:53 +0000 (11:57 -0700)]
git-svn: Added 'find-rev' command

This patch adds a new 'find-rev' command to git-svn that lets you easily
translate between SVN revision numbers and git tree-ish.

Signed-off-by: Adam Roben <aroben@apple.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit shortlog documentation: add long options and fix a typo
Michele Ballabio [Fri, 27 Apr 2007 19:56:47 +0000 (21:56 +0200)]
git shortlog documentation: add long options and fix a typo

Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Fri, 27 Apr 2007 06:29:09 +0000 (23:29 -0700)]
Merge branch 'maint'

* maint:
  Update git-http-fetch documentation
  Update git-local-fetch documentation
  Update git-http-push documentation
  Update -L documentation for git-blame/git-annotate
  Update git-grep documentation
  Update git-fmt-merge documentation
  Document additional options for git-fetch
  Removing -n option from git-diff-files documentation

17 years agoUpdate git-http-fetch documentation
Andrew Ruder [Fri, 27 Apr 2007 04:59:02 +0000 (23:59 -0500)]
Update git-http-fetch documentation

Documentation/git-http-fetch.txt: --recover to resume a failed fetch
operation.

Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUpdate git-local-fetch documentation
Andrew Ruder [Fri, 27 Apr 2007 04:59:01 +0000 (23:59 -0500)]
Update git-local-fetch documentation

Documentation/git-local-fetch.txt: -s to use
symbolic links instead of file-to-file copy, -l
to use hardlinks, -n to never use file-to-file
copies, --recover to resume a failed fetch.

Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUpdate git-http-push documentation
Andrew Ruder [Fri, 27 Apr 2007 04:59:00 +0000 (23:59 -0500)]
Update git-http-push documentation

Documentation/git-http-push.txt: Changing --complete to --all.  Added
documentation for -d and -D to remote remote refs.

Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUpdate -L documentation for git-blame/git-annotate
Andrew Ruder [Fri, 27 Apr 2007 04:58:59 +0000 (23:58 -0500)]
Update -L documentation for git-blame/git-annotate

Documenting alternate ways to use -L:

-L /regex/,end
-L start,+offset

Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUpdate git-grep documentation
Andrew Ruder [Fri, 27 Apr 2007 04:58:58 +0000 (23:58 -0500)]
Update git-grep documentation

Documentation/git-grep.txt: Document -F/--fixed-strings to
search for non-regexp patterns.  Document -I to not search
binary files.  Document -<num> as a shortcut for -C<num>.

Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUpdate git-fmt-merge documentation
Andrew Ruder [Fri, 27 Apr 2007 04:58:57 +0000 (23:58 -0500)]
Update git-fmt-merge documentation

Documentation/git-fmt-merge-msg.txt:
--summary to list commit summaries on merge
--no-summary
--file to take merged objects from a file.
Configuration option merge.summary

Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocument additional options for git-fetch
Andrew Ruder [Fri, 27 Apr 2007 04:58:56 +0000 (23:58 -0500)]
Document additional options for git-fetch

Document --quiet/-q and --verbose/-v
Add -n as an alternate for --no-tags
Fix some whitespace issues

Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoRemoving -n option from git-diff-files documentation
Andrew Ruder [Fri, 27 Apr 2007 04:58:55 +0000 (23:58 -0500)]
Removing -n option from git-diff-files documentation

-n is not a short form of --no-index as the documentation
suggests.  Removing it from the documentation and command
usage string.

Signed-off-by: Andrew Ruder <andy@aeruder.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agopost-receive-email example hook: sed command for getting description was wrong
Andy Parkins [Thu, 26 Apr 2007 21:37:16 +0000 (22:37 +0100)]
post-receive-email example hook: sed command for getting description was wrong

The sed command that extracted the first line of the project description
didn't include the -n switch and hence the project name was being
printed twice.  This was ruining the email header generation because it
was assumed that the description was only one line and was included in
the subject.  This turned the subject into a two line item and
prematurely finished the header.

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agopost-receive-email example hook: detect rewind-only updates and output sensible message
Andy Parkins [Thu, 26 Apr 2007 21:36:24 +0000 (22:36 +0100)]
post-receive-email example hook: detect rewind-only updates and output sensible message

Sometimes a non-fast-forward update doesn't add new commits, it merely
removes old commits.  This patch adds support for detecting that and
outputting a more correct message.

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agopost-receive-email example hook: fastforward should have been fast_forward
Andy Parkins [Thu, 26 Apr 2007 21:35:39 +0000 (22:35 +0100)]
post-receive-email example hook: fastforward should have been fast_forward

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