Code

git.git
16 years agoMerge branch 'maint'
Junio C Hamano [Mon, 16 Jun 2008 23:14:22 +0000 (16:14 -0700)]
Merge branch 'maint'

* maint:
  diff: reset color before printing newline

16 years agodiff: reset color before printing newline
SZEDER Gábor [Mon, 16 Jun 2008 22:00:02 +0000 (00:00 +0200)]
diff: reset color before printing newline

It worked that way since commit 50f575fc (Tweak diff colors,
2006-06-22), but commit c1795bb0 (Unify whitespace checking, 2007-12-13)
changed it.  This patch restores the old behaviour.

Besides Linus' arguments in the log message of 50f575fc, resetting color
before printing newline is also important to keep 'git add --patch'
happy.  If the last line(s) of a file are removed, then that hunk will
end with a colored line.  However, if the newline comes before the color
reset, then the diff output will have an additional line at the end
containing only the reset sequence.  This causes trouble in
git-add--interactive.perl's parse_diff function, because @colored will
have one more element than @diff, and that last element will contain the
color reset.  The elements of these arrays will then be copied to @hunk,
but only as many as the number of elements in @diff.  As a result the
last color reset is lost and all subsequent terminal output will be
printed in color.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMake git reflog expire honour core.sharedRepository.
Pierre Habouzit [Sun, 15 Jun 2008 21:37:42 +0000 (23:37 +0200)]
Make git reflog expire honour core.sharedRepository.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoUpdate RPM spec to drop curl executable requirement
Junio C Hamano [Sun, 15 Jun 2008 20:47:14 +0000 (13:47 -0700)]
Update RPM spec to drop curl executable requirement

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoThe "curl" executable is no longer required
Johan Herland [Sun, 15 Jun 2008 10:16:01 +0000 (12:16 +0200)]
The "curl" executable is no longer required

git-clone.sh was the last user of the "curl" executable. Relevant git
commands now use libcurl instead. This should be reflected in the
install requirements.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMakefile: update check-docs target
Junio C Hamano [Sun, 15 Jun 2008 20:43:32 +0000 (13:43 -0700)]
Makefile: update check-docs target

Earlier series to rename documentation pages around did not update this
target and left check-docs broken.  This should fix it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoConsistency: Use "libcurl" instead of "cURL library" and "curl"
Johan Herland [Sun, 15 Jun 2008 10:14:12 +0000 (12:14 +0200)]
Consistency: Use "libcurl" instead of "cURL library" and "curl"

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocpio is no longer used by git-clone
Johan Herland [Sun, 15 Jun 2008 10:13:22 +0000 (12:13 +0200)]
cpio is no longer used by git-clone

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation: RelNotes-1.5.6: talk about renamed HTML files
Christian Couder [Sun, 15 Jun 2008 13:39:20 +0000 (15:39 +0200)]
Documentation: RelNotes-1.5.6: talk about renamed HTML files

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoGIT 1.5.6-rc3 v1.5.6-rc3
Junio C Hamano [Sat, 14 Jun 2008 19:57:18 +0000 (12:57 -0700)]
GIT 1.5.6-rc3

Just a lot of small fixes, mostly documentation.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoSimplify and rename find_sha1_file()
Linus Torvalds [Sat, 14 Jun 2008 18:43:01 +0000 (11:43 -0700)]
Simplify and rename find_sha1_file()

Now that we've made the loose SHA1 file reading more careful and
streamlined, we only use the old find_sha1_file() function for checking
whether a loose object file exists at all.

As such, the whole 'return stat information' part of it was just
pointless (nobody cares any more), and the naming of the function is not
really all that relevant either.

So simplify it to not do a 'stat()', but just an existence check (which
is what the callers want), and rename it to 'has_loose_object()' which
matches the use.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMake loose object file reading more careful
Linus Torvalds [Sat, 14 Jun 2008 18:32:37 +0000 (11:32 -0700)]
Make loose object file reading more careful

We used to do 'stat()+open()+mmap()+close()' to read the loose object
file data, which does work fine, but has a couple of problems:

 - it unnecessarily walks the filename twice (at 'stat()' time and then
   again to open it)

 - NFS generally has open-close consistency guarantees, which means that
   the initial 'stat()' was technically done outside of the normal
   consistency rules.

So change it to do 'open()+fstat()+mmap()+close()' instead, which avoids
both these issues.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoAvoid cross-directory renames and linking on object creation
Linus Torvalds [Sat, 14 Jun 2008 17:50:12 +0000 (10:50 -0700)]
Avoid cross-directory renames and linking on object creation

Instead of creating new temporary objects in the top-level git object
directory, create them in the same directory they will finally end up in
anyway.  This avoids making the final atomic "rename to stable name"
operation be a cross-directory event, which makes it a lot easier for
various filesystems.

Several filesystems do things like change the inode number when moving
files across directories (or refuse to do it entirely).

In particular, it can also cause problems for NFS implementations that
change the filehandle of a file when it moves to a different directory,
like the old user-space NFS server did, and like the Linux knfsd still
does if you don't export your filesystems with 'no_subtree_check' or if
you export a filesystem that doesn't have stable inode numbers across
renames).

This change also obviously implies creating the object fan-out
subdirectory at tempfile creation time, rather than at the final
move_temp_to_file() time.  Which actually accounts for most of the size
of the patch.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoUse 'trash directory' thoroughly in t/test-lib.sh
Jakub Narebski [Sat, 14 Jun 2008 18:14:12 +0000 (20:14 +0200)]
Use 'trash directory' thoroughly in t/test-lib.sh

...also in comments.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDon't allocate too much memory in quote_ref_url
Mike Hommey [Sat, 14 Jun 2008 10:02:22 +0000 (12:02 +0200)]
Don't allocate too much memory in quote_ref_url

In c13b263, http_fetch_ref got "refs/" included in the ref passed to it,
which, incidentally, makes the allocation in quote_ref_url too big, now.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogitweb: Make it work with $GIT containing spaces
Jakub Narebski [Sat, 14 Jun 2008 18:37:59 +0000 (20:37 +0200)]
gitweb: Make it work with $GIT containing spaces

This fixes single point where $GIT (which can contain full path
to git binary) with embedded spaces gave errors.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocompletion: add more 'git add' options
SZEDER Gábor [Sat, 14 Jun 2008 09:48:01 +0000 (11:48 +0200)]
completion: add more 'git add' options

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit add: add long equivalents of '-u' and '-f' options
SZEDER Gábor [Sat, 14 Jun 2008 09:48:00 +0000 (11:48 +0200)]
git add: add long equivalents of '-u' and '-f' options

The option -u stands for --update and it is a good idea to make it clear
especially because this is the only mode of operation of "git add" that
does something different from "adding".  Give longer --force synonym to -f
while we are at it as well.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'rs/attr'
Junio C Hamano [Sat, 14 Jun 2008 18:48:59 +0000 (11:48 -0700)]
Merge branch 'rs/attr'

* rs/attr:
  Ignore .gitattributes in bare repositories

16 years agogit-svn: test that extra blank lines aren't inserted in commit messages.
Avery Pennarun [Thu, 12 Jun 2008 23:10:51 +0000 (19:10 -0400)]
git-svn: test that extra blank lines aren't inserted in commit messages.

Improve the git-svn-author test to check that extra newlines aren't inserted
into commit messages as they take a round trip from git to svn and back.

We test both with and without the --add-author-from option to git-svn.

git-svn: test that svn repo doesn't have extra newlines.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-svn: don't append extra newlines at the end of commit messages.
Avery Pennarun [Thu, 12 Jun 2008 23:10:50 +0000 (19:10 -0400)]
git-svn: don't append extra newlines at the end of commit messages.

In git, all commits end in exactly one newline character.  In svn, commits
end in zero or more newlines.  Thus, when importing commits from svn into
git, git-svn always appends two extra newlines to ensure that the
git-svn-id: line is separated from the main commit message by at least one
blank line.

Combined with the terminating newline that's always present in svn commits
produced by git, you usually end up with two blank lines instead of one
between the commit message and git-svn-id: line, which is undesirable.

Instead, let's remove all trailing whitespace from the git commit on the way
through to svn.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-submodule - Fix errors regarding resolve_relative_url
Mark Levedahl [Sat, 14 Jun 2008 17:09:41 +0000 (13:09 -0400)]
git-submodule - Fix errors regarding resolve_relative_url

git-submodule was invoking "die" from within resolve-relative-url, but
this does not actually cause the script to exit. Fix this by returning
the error to the caller and have the caller exit.

While we're at it, clean up the quoting on invocation of
resolve_relative_url as it was wrong.

Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodocumentation: bisect: remove bits talking about a bisection branch
Christian Couder [Sat, 14 Jun 2008 07:21:36 +0000 (09:21 +0200)]
documentation: bisect: remove bits talking about a bisection branch

... because we are now bisecting using a detached HEAD.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agosha1_file.c: dead code removal
Junio C Hamano [Sat, 14 Jun 2008 06:00:51 +0000 (23:00 -0700)]
sha1_file.c: dead code removal

write_sha1_from_fd() and write_sha1_to_fd() were dead code nobody called,
neither the latter's helper repack_object() was.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-instaweb: improve auto-discovery of httpd and call conventions.
Flavio Poletti [Thu, 12 Jun 2008 21:54:55 +0000 (23:54 +0200)]
git-instaweb: improve auto-discovery of httpd and call conventions.

This patch allows calling:

   git-instaweb -d apache2

and have the script Do The Right Thing. In particular, the auto-discovery
mechanism has been extended in order to be used for module listing as
well, and the call convention is that if the daemon is apache2/lighttpd
and the parameter to the "-d" option does not end by "-f", the "-f" is
added to the end of the option itself.

Change all backticks to $( ... ) as per Documentation/CodingGuidelines.

Signed-off-by: Flavio Poletti <flavio@polettix.it>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot4126: fix test that happened to work due to timing
Junio C Hamano [Sat, 14 Jun 2008 00:16:02 +0000 (17:16 -0700)]
t4126: fix test that happened to work due to timing

The test did "reset --hard" (where the HEAD commit has an empty
blob at path "empty") followed by "> empty", expecting that
the index does not notice the file _changed_ since git wrote
it out upon "reset" if the redirection is done quickly enough.

There was no need to do the emptying, and it gave a wrong result
if "reset --hard" happened on time T and then ">empty" happened on
the next second T+1.  This fixes it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'om/remote-fix'
Junio C Hamano [Fri, 13 Jun 2008 05:55:44 +0000 (22:55 -0700)]
Merge branch 'om/remote-fix'

* om/remote-fix:
  "remote prune": be quiet when there is nothing to prune
  remote show: list tracked remote branches with -n
  remote prune: print the list of pruned branches
  builtin-remote: split show_or_prune() in two separate functions
  remote show: fix the -n option

16 years agofast-export: Correctly generate initial commits with no parents
Shawn O. Pearce [Fri, 13 Jun 2008 04:38:55 +0000 (00:38 -0400)]
fast-export: Correctly generate initial commits with no parents

If we are exporting a commit which has no parents we may be doing
it to a branch that already exists, causing fast-import to assume
the branch's current revision should be the sole parent of the
new commit.  This can cause `git fast-export | git fast-import`
to produce an incorrect graph for:

   A-------M----o------o  refs/heads/master
          /
       B-+

In this graph A and B are initial commits (no parents) but if A was
output first to refs/heads/master and then B is output fast-import
would assume the graph was this instead:

   A-------M----o------o  refs/heads/master
    \     /
     +-B-+

Which would cause B, M, and all later commits to have a different
SHA-1, and obviously be quite a different graph.

Sending a reset command prior to B informs fast-import to clear
the implied parent of A, allowing B to remain an initial commit.

Reported-by: Ben Lynn <benlynn@gmail.com>
Deemed-obviously-correct-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot/.gitattributes: only ignore whitespace errors in test files
Lea Wiemann [Thu, 12 Jun 2008 22:35:59 +0000 (00:35 +0200)]
t/.gitattributes: only ignore whitespace errors in test files

Only ignore whitespace errors in t/tNNNN-*.sh and the t/tNNNN
subdirectories.  Other files (like test libraries) should still be
checked.

Also fix a whitespace error in t/test-lib.sh.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodocument --pretty=tformat: option
Jeff King [Thu, 12 Jun 2008 06:14:28 +0000 (02:14 -0400)]
document --pretty=tformat: option

This was introduced in 4da45bef, but never documented anywhere.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoImprove sed portability
Chris Ridd [Wed, 11 Jun 2008 13:09:19 +0000 (14:09 +0100)]
Improve sed portability

The behaviour of "sed" on an incomplete line is unspecified by POSIX, and
On Solaris it apparently fails to process input that doesn't end in a LF.

Consequently constructs like

  re=$(printf '%s' foo | sed -e 's/bar/BAR/g' $)

cause re to be set to the empty string. Such a construct is used in
git-submodule.sh.

Because the LF at the end of command output are stripped away by the
command substitution, it is a safe and sane change to add a LF at the end
of the printf format specifier.

Signed-off-by: Chris Ridd <chris.ridd@isode.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agouser-manual: describe how higher stages are set during a merge
Junio C Hamano [Thu, 12 Jun 2008 21:30:37 +0000 (14:30 -0700)]
user-manual: describe how higher stages are set during a merge

Higher stages store the blobs involved from their side verbatim.  Removal
of uninteresting hunks are done by "diff --cc" upon demand and not stored
in the index.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodoc: adding gitman.info and *.texi to .gitignore
Geoffrey Irving [Thu, 12 Jun 2008 14:29:42 +0000 (07:29 -0700)]
doc: adding gitman.info and *.texi to .gitignore

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation: exclude @pxref{[REMOTES]} from texinfo intermediate output
Junio C Hamano [Thu, 12 Jun 2008 21:21:05 +0000 (14:21 -0700)]
Documentation: exclude @pxref{[REMOTES]} from texinfo intermediate output

We already had a hack to exclude @pxref{[URLS]} from the texi stream that
refers to nonexistent anchor.

This allows "make info" to produce gitman.info again.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation/git-pull.txt: Use more standard [NOTE] markup
Junio C Hamano [Thu, 12 Jun 2008 21:19:09 +0000 (14:19 -0700)]
Documentation/git-pull.txt: Use more standard [NOTE] markup

Unlike other manual pages (e.g. git-blame.txt), this used *NOTE:*
to show a side note headed with boldface string "NOTE".  Use a paragraph
headed by [NOTE] like others instead.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years ago"remote prune": be quiet when there is nothing to prune
Junio C Hamano [Thu, 12 Jun 2008 06:43:25 +0000 (23:43 -0700)]
"remote prune": be quiet when there is nothing to prune

The previous commit made it always say "Pruning $remote" but reported the
URL only when there is something to prune.  Make it consistent by not
saying anything at all when there is nothing to prune.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoTypo in RelNotes.
Mikael Magnusson [Thu, 12 Jun 2008 02:38:38 +0000 (04:38 +0200)]
Typo in RelNotes.

Signed-off-by: Mikael Magnusson <mikachu@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge git://git.kernel.org/pub/scm/gitk/gitk
Junio C Hamano [Wed, 11 Jun 2008 23:22:53 +0000 (16:22 -0700)]
Merge git://git.kernel.org/pub/scm/gitk/gitk

* git://git.kernel.org/pub/scm/gitk/gitk:
  gitk: Handle detached heads better

16 years agoMerge branch 'maint'
Junio C Hamano [Wed, 11 Jun 2008 23:21:56 +0000 (16:21 -0700)]
Merge branch 'maint'

* maint:
  fix typo in tutorial

16 years agofix typo in tutorial
Fred Maranhão [Wed, 11 Jun 2008 23:09:48 +0000 (19:09 -0400)]
fix typo in tutorial

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoremote show: list tracked remote branches with -n
Olivier Marin [Tue, 10 Jun 2008 22:54:49 +0000 (00:54 +0200)]
remote show: list tracked remote branches with -n

Signed-off-by: Olivier Marin <dkr@freesurf.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoremote prune: print the list of pruned branches
Olivier Marin [Tue, 10 Jun 2008 14:51:35 +0000 (16:51 +0200)]
remote prune: print the list of pruned branches

This command is really too quiet which make it unconfortable to use.

Also implement a --dry-run option, in place of the original -n one, to
list stale tracking branches that will be pruned, but do not actually
prune them.

Add a test case for --dry-run.

Signed-off-by: Olivier Marin <dkr@freesurf.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agobuiltin-remote: split show_or_prune() in two separate functions
Olivier Marin [Tue, 10 Jun 2008 14:51:21 +0000 (16:51 +0200)]
builtin-remote: split show_or_prune() in two separate functions

This allow us to add different features to each of them and keep the
code simple at the same time. Also create a get_remote_ref_states()
to avoid duplicated code.

Signed-off-by: Olivier Marin <dkr@freesurf.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoremote show: fix the -n option
Olivier Marin [Tue, 10 Jun 2008 14:51:08 +0000 (16:51 +0200)]
remote show: fix the -n option

The perl version accepted a -n flag, to show local informations only
without querying remote heads, that seems to have been lost in the C
revrite.

This restores the older behaviour and add a test case.

Signed-off-by: Olivier Marin <dkr@freesurf.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-cvsimport: do not fail when CVSROOT is /
Philippe Bruhat (BooK) [Tue, 10 Jun 2008 12:32:06 +0000 (14:32 +0200)]
git-cvsimport: do not fail when CVSROOT is /

For CVS repositories with unusual CVSROOT, git-cvsimport would fail:

    $ git-cvsimport -v -C foo -d :pserver:anon:@cvs.example.com:/ foo
    AuthReply: error 0 : no such repository

This patch ensures that the path is never empty, but at least '/'.

Signed-off-by: Philippe Bruhat (BooK) <book@cpan.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoConsolidate SHA1 object file close
Linus Torvalds [Wed, 11 Jun 2008 01:47:18 +0000 (18:47 -0700)]
Consolidate SHA1 object file close

This consolidates the common operations for closing the new temporary file
that we have written, before we move it into place with the final name.

There's some common code there (make it read-only and check for errors on
close), but more importantly, this also gives a single place to add an
fsync_or_die() call if we want to add a safe mode.

This was triggered due to Denis Bueno apparently twice being able to
corrupt his git repository on OS X due to an unlucky combination of kernel
crashes and a not-very-robust filesystem.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation/git-cat-file.txt: add missing line break
Lea Wiemann [Tue, 3 Jun 2008 11:06:12 +0000 (13:06 +0200)]
Documentation/git-cat-file.txt: add missing line break

Without [verse], the line break between the two synopsis lines does
not make it into the man page.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'js/merge-recursive'
Junio C Hamano [Mon, 9 Jun 2008 23:13:10 +0000 (16:13 -0700)]
Merge branch 'js/merge-recursive'

* js/merge-recursive:
  merge-recursive: respect core.autocrlf when writing out the result
  Add testcase for merging in a CRLF repo

16 years agoMerge branch 'maint'
Junio C Hamano [Mon, 9 Jun 2008 23:13:08 +0000 (16:13 -0700)]
Merge branch 'maint'

* maint:
  git-read-tree: document -v option.
  Remove exec bit from builtin-fast-export.c

16 years agomerge-recursive: respect core.autocrlf when writing out the result
Johannes Schindelin [Mon, 9 Jun 2008 21:23:16 +0000 (22:23 +0100)]
merge-recursive: respect core.autocrlf when writing out the result

The code forgot to convert the blob contents into work tree
representation before writing it out.  Also fixes leaks -- earlier
the updated blobs were never freed.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-read-tree: document -v option.
Miklos Vajna [Mon, 9 Jun 2008 20:25:15 +0000 (22:25 +0200)]
git-read-tree: document -v option.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoAdd testcase for merging in a CRLF repo
Marius Storm-Olsen [Mon, 9 Jun 2008 21:22:37 +0000 (22:22 +0100)]
Add testcase for merging in a CRLF repo

If you work on a repo with core.autocrlf == true, you would expect
every text file to have CRLF EOLs. However, if you by some operation,
get a conflict, then the conflicted file has LF EOLs.

Now, of course you'd go about resolving the files conflict, and then 'git
add <file>'. When you do that, you'll get the warning saying that LF will
be replaced by CRLF. Then you commit. The end result is that you have a
workingdir with a mix of LF and CRLF files, which after some more
operations may trigger a "whole file changed" diff, due to the workingdir
file now having LF EOLs.

An LF only conflict file results in the resolved file being in LF,
the commit is in LF and a warning saying that LF will be replaced
by CRLF, and the working dir ends up with a mix of CRLF and LF files.

Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoIgnore .gitattributes in bare repositories
René Scharfe [Sun, 8 Jun 2008 15:16:11 +0000 (17:16 +0200)]
Ignore .gitattributes in bare repositories

Attributes can be specified at three different places: the internal
table of default values, the file $GIT_DIR/info/attributes and files
named .gitattributes in the work tree.  Since bare repositories don't
have a work tree, git should ignore any .gitattributes files there.

This patch makes git do that, so the only way left for a user to specify
attributes in a bare repository is the file info/attributes (in addition
to changing the defaults and recompiling).

In addition, git-check-attr is now allowed to run without a work tree.
Like any user of the code in attr.c, it ignores the .gitattributes files
when run in a bare repository.  It can still read from info/attributes.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocat-file --batch / --batch-check: do not exit if hashes are missing
Lea Wiemann [Mon, 9 Jun 2008 00:02:21 +0000 (02:02 +0200)]
cat-file --batch / --batch-check: do not exit if hashes are missing

Previously, cat-file --batch / --batch-check would silently exit if it
was passed a non-existent SHA1 on stdin.  Now it prints "<SHA1>
missing" as in all other cases (and as advertised in the
documentation).

Note that cat-file --batch-check (but not --batch) will still output
"error: unable to find <SHA1>" on stderr if a non-existent SHA1 is
passed, but this does not affect parsing its stdout.

Also, type <= 0 was previously using the potentially uninitialized
type variable (relying on it being 0); it is now being initialized.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot1006-cat-file.sh: typo
Lea Wiemann [Sun, 8 Jun 2008 23:03:13 +0000 (01:03 +0200)]
t1006-cat-file.sh: typo

Previously timestamps were removed unconditionally (though this didn't
seem to break this test).  Now they are only removed if $no_ts is
non-empty.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoPort to 12 other Platforms.
Boyd Lynn Gerber [Sun, 8 Jun 2008 20:47:54 +0000 (14:47 -0600)]
Port to 12 other Platforms.

This patch adds support to compile and run git on 12 additional platforms.
The platforms are based on UNIX Systems Labs (USL)/Novell/SYS V code base.
The most common are Novell UnixWare 2.X.X, SCO UnixWare 7.X.X,
OpenServer 5.0.X, OpenServer 6.0.X, and SCO pre OSR 5 platforms.

Looking at the the various platform headers, I find:

#if defined(_KERNEL) || !defined(_POSIX_SOURCE) \
     && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)

which hides u_short and other typedefs that other header files on these
platforms depend on.  WIth _XOPEN_SOURCE defined, sources that include
system header files that depend on the typedefs such as u_short cannot be
compiled on these platforms.

__USLC__ indicates UNIX System Labs Corperation (USLC), or a Novell-derived
compiler and/or some SysV based OS's.

__M_UNIX indicates XENIX/SCO UNIX/OpenServer 5.0.7 and prior releases
of the SCO OS's.  It is used just like Apple and BSD, both of these
shouldn't have _XOPEN_SOURCE defined.

This is with suggestions and modifications from

Daniel Barkalow, Junio C Hamano, Thomas Harning, and Jeremy Maitin-Shepard.

Signed-off-by: Boyd Lynn Gerber <gerberb@zenez.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoprogress.c: avoid use of dynamic-sized array
Boyd Lynn Gerber [Sun, 8 Jun 2008 15:26:15 +0000 (09:26 -0600)]
progress.c: avoid use of dynamic-sized array

Dynamically sized arrays are gcc and C99 construct.  Using them hurts
portability to older compilers, although using them is nice in this case
it is not desirable.  This patch removes the only use of the construct
in stop_progress_msg(); the function is about writing out a single line
of a message, and the existing callers of this function feed messages
of only bounded size anyway, so use of dynamic array is simply overkill.

Signed-off-by: Boyd Lynn Gerber <gerberb@zenez.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-name-rev.txt: document --no-undefined and --always
Stephan Beyer [Sun, 8 Jun 2008 01:36:12 +0000 (03:36 +0200)]
git-name-rev.txt: document --no-undefined and --always

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-describe.txt: document --always
Stephan Beyer [Sun, 8 Jun 2008 01:36:11 +0000 (03:36 +0200)]
git-describe.txt: document --always

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocs: add some long/short options
Stephan Beyer [Sun, 8 Jun 2008 01:36:10 +0000 (03:36 +0200)]
Docs: add some long/short options

Namely:

 git-clean.txt: --dry-run --quiet
 git-count-objects.txt: --verbose
 git-quiltimport.txt: -n
 git-remote.txt: -v --verbose

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocs: Use "-l::\n--long\n" format in OPTIONS sections
Stephan Beyer [Sun, 8 Jun 2008 01:36:09 +0000 (03:36 +0200)]
Docs: Use "-l::\n--long\n" format in OPTIONS sections

The OPTIONS section of a documentation file contains a list
of the options a git command accepts.

Currently there are several variants to describe the case that
different options (almost) do the same in the OPTIONS section.

Some are:

 -f, --foo::
 -f|--foo::
 -f | --foo::

But AsciiDoc has the special form:

 -f::
 --foo::

This patch applies this form to the documentation of the whole git suite,
and removes useless em-dash prevention, so \--foo becomes --foo.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-commit.txt: Add missing long/short options
Stephan Beyer [Sun, 8 Jun 2008 01:36:08 +0000 (03:36 +0200)]
git-commit.txt: Add missing long/short options

Also split the "-c or -C <commit>" item into two separate items.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-send-email: allow whitespace in addressee list
Pieter de Bie [Sat, 7 Jun 2008 13:34:36 +0000 (15:34 +0200)]
git-send-email: allow whitespace in addressee list

When interactively supplying addresses to send an email to with
send-email, whitespace after the separation comma (as in 'list, jc')
wasn't ignored.  This meant that resolving of the alias ' jc' would
fail, sending an email only to list. With this patch, the optional
trailing whitespace is ignored.

Signed-off-by: Pieter de Bie <pdebie@ai.rug.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agosend-email: Allow the envelope sender to be set via configuration
Ask Bjørn Hansen [Sat, 7 Jun 2008 07:33:42 +0000 (00:33 -0700)]
send-email: Allow the envelope sender to be set via configuration

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogitweb setup instruction: rewrite HEAD and root as well
Ask Bjørn Hansen [Sat, 7 Jun 2008 07:19:26 +0000 (00:19 -0700)]
gitweb setup instruction: rewrite HEAD and root as well

Also add a few more hints for how to setup and configure gitweb as described

[jc: with a fix from Mike Hommey]

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-commit.txt: Correct option alternatives
Stephan Beyer [Sat, 7 Jun 2008 11:06:45 +0000 (13:06 +0200)]
git-commit.txt: Correct option alternatives

This patch fixes the SYNOPSIS in git-commit.txt:

 * --amend could be used in conjunction with -c/-C/-F/-m;
   it is not mutually exclusive with them.

 * -m and -F are not alternative options to -c/-C;
   you can reuse authorship from a commit (-c/-C)
   but change the message (-m/-F).

Furthermore, for long-option consistency --author <author>
is changed to --author=<author>.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-rebase -i: mention the short command aliases in the todo list
Miklos Vajna [Sat, 7 Jun 2008 16:20:19 +0000 (18:20 +0200)]
git-rebase -i: mention the short command aliases in the todo list

git rebase -i already supports 'p', 'e' and 's' as aliases for 'pick',
'edit' and 'squash', but one could know it only by reading the source
code. If a user rebases a lot, it's quite handy, so mention these short
forms as well.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRemove unused code in parse_commit_buffer()
Miklos Vajna [Sat, 7 Jun 2008 20:38:37 +0000 (22:38 +0200)]
Remove unused code in parse_commit_buffer()

The n_refs variable is no longer really used in this function, so there
is no reason to keep it.

It was introduced in 27dedf0c and the code that really used it was
removed in 7914053.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agohttp-push.c: remove duplicated code
Junio C Hamano [Sat, 7 Jun 2008 18:39:20 +0000 (11:39 -0700)]
http-push.c: remove duplicated code

An earlier commit aa1dbc9 (Update http-push functionality, 2006-03-07)
borrowed some code from rev-list.c.

This copy and paste made sense back then, because mark_edges_uninteresting(),
and its helper mark_edge_parents_uninteresting(), accessed a file scope
static variable  "revs" in rev-list.c, and http-push.c did not have nor care
about such a variable.

But these days they are already properly libified and live in list-objects.c
and they take "revs" as as an argument.  Make use of them and lose 20 or
so lines.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoRemove exec bit from builtin-fast-export.c
Johannes Sixt [Sun, 8 Jun 2008 14:40:13 +0000 (16:40 +0200)]
Remove exec bit from builtin-fast-export.c

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agomake_nonrelative_path: Use is_absolute_path()
Johannes Sixt [Sun, 8 Jun 2008 14:34:40 +0000 (16:34 +0200)]
make_nonrelative_path: Use is_absolute_path()

This helps porting to Windows.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoGIT 1.5.6-rc2 v1.5.6-rc2
Junio C Hamano [Sat, 7 Jun 2008 20:05:34 +0000 (13:05 -0700)]
GIT 1.5.6-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge 1.5.5.4 in
Junio C Hamano [Sat, 7 Jun 2008 20:01:14 +0000 (13:01 -0700)]
Merge 1.5.5.4 in

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoGIT 1.5.5.4 v1.5.5.4
Junio C Hamano [Sat, 7 Jun 2008 18:45:48 +0000 (11:45 -0700)]
GIT 1.5.5.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit log --graph: print '*' for all commits, including merges
Adam Simpkins [Thu, 5 Jun 2008 09:28:13 +0000 (02:28 -0700)]
git log --graph: print '*' for all commits, including merges

Previously, merge commits were printed with 'M' instead of '*'.  This
had the potential to confuse users when not all parents of the merge
commit were included in the log output.

As Junio has pointed out, merge commits can almost always be easily
identified from the log message, anyway.

Signed-off-by: Adam Simpkins <adam@adamsimpkins.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoUse nonrelative paths instead of absolute paths for cloned repositories
Daniel Barkalow [Fri, 6 Jun 2008 03:15:19 +0000 (23:15 -0400)]
Use nonrelative paths instead of absolute paths for cloned repositories

Particularly for the "alternates" file, if one will be created, we
want a path that doesn't depend on the current directory, but we want
to retain any symlinks in the path as given and any in the user's view
of the current directory when the path was given.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodocumentation: move git(7) to git(1)
Christian Couder [Fri, 6 Jun 2008 07:07:32 +0000 (09:07 +0200)]
documentation: move git(7) to git(1)

As the "git" man page describes the "git" command at the end-user
level, it seems better to move it to man section 1.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodocumentation: convert "diffcore" and "repository-layout" to man pages
Christian Couder [Fri, 6 Jun 2008 07:07:28 +0000 (09:07 +0200)]
documentation: convert "diffcore" and "repository-layout" to man pages

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

diffcore.txt          -> gitdiffcore.txt (man section 7)
repository-layout.txt -> gitrepository-layout.txt (man section 5)

Other documents that reference the above ones are changed accordingly.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agograph API: fix "git log --graph --first-parent"
Adam Simpkins [Thu, 5 Jun 2008 08:56:19 +0000 (01:56 -0700)]
graph API: fix "git log --graph --first-parent"

This change teaches the graph API that only the first parent of each
commit is interesting when "--first-parent" was specified.

This change also consolidates the graph parent walking logic into two
new internal functions, first_interesting_parent() and
next_interesting_parent().  A simpler fix would have been to simply
break at the end of the 2 existing for loops when
graph->revs->first_parent_only is set.  However, this change seems
nicer, especially if we ever need to add any new loops over the parent
list in the future.

Signed-off-by: Adam Simpkins <adam@adamsimpkins.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoPrint info about "git help COMMAND" on git's main usage pages
Teemu Likonen [Thu, 5 Jun 2008 21:15:36 +0000 (00:15 +0300)]
Print info about "git help COMMAND" on git's main usage pages

Git's main usage pages did not show "git help" as a way to get more
information on a specific subcommand. This patch adds an info line after
the list of git commands currently printed by "git", "git help", "git
--help" and "git help --all".

Signed-off-by: Teemu Likonen <tlikonen@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'maint'
Junio C Hamano [Fri, 6 Jun 2008 16:21:48 +0000 (09:21 -0700)]
Merge branch 'maint'

* maint:
  git-for-each-ref.txt: minor improvements
  name-rev: Fix segmentation fault when using --all

16 years agogit-for-each-ref.txt: minor improvements
Lea Wiemann [Thu, 5 Jun 2008 21:01:38 +0000 (23:01 +0200)]
git-for-each-ref.txt: minor improvements

Rewrapped synopsis and removed wrong asterisk behind --count option;
clarified --sort=<key> description for multiple keys; documented that
for-each-ref supports not only glob patterns but also prefixes like
"refs/heads" as patterns, and that multiple patterns can be given.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoname-rev: Fix segmentation fault when using --all
Björn Steinbrink [Thu, 5 Jun 2008 23:31:55 +0000 (01:31 +0200)]
name-rev: Fix segmentation fault when using --all

In commit da2478db "describe --always: fall back to showing an
abbreviated object name" we lost the check that skips empty entries in
the object hash table when iterating over it in cmd_name_rev. That may
cause a NULL pointer being handed to show_name(), leading to a
segmentation fault. So add that check back again.

Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogitweb: Add charset info to "raw" output of 'text/plain' blobs
Jakub Narebski [Tue, 3 Jun 2008 14:47:10 +0000 (16:47 +0200)]
gitweb: Add charset info to "raw" output of 'text/plain' blobs

Earlier "blob_plain" view sent "charset=utf-8" only when gitweb
guessed the content type to be text by reading from it, and not when
the MIME type was obtained from /etc/mime.types, or when gitweb
couldn't guess mimetype and used $default_blob_plain_mimetype.

This fixes the bug by always add charset info from
$default_text_plain_charset (if it is defined) to "raw" (a=blob_plain)
output for 'text/plain' blobs.

Generating information for Content-Type: header got separated into
blob_contenttype() subroutine; adding charset info in a special case
was removed from blob_mimetype(), which now should return mimetype
only.

While at it cleanup code a bit: put subroutine parameter
initialization first, make error message more robust (when $file_name
is not defined) if more cryptic, remove unnecessary '"' around
variable ("$var" -> $var).

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoStrbuf documentation: document most functions
Miklos Vajna [Wed, 4 Jun 2008 21:20:05 +0000 (23:20 +0200)]
Strbuf documentation: document most functions

All functions in strbuf.h are documented, except launch_editor().

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation/git-mailsplit: Enhanced description of -o option
Dirk Suesserott [Wed, 4 Jun 2008 20:50:31 +0000 (22:50 +0200)]
Documentation/git-mailsplit: Enhanced description of -o option

Added '-o' in the description of '-o<directory>' for consistency reasons.

Signed-off-by: Dirk Suesserott <newsletter@dirk.my1.cc>
16 years agoFix "git clone http://$URL" to check out the worktree when asked
Jeff King [Wed, 4 Jun 2008 18:38:58 +0000 (14:38 -0400)]
Fix "git clone $URL" to check out the worktree when asked

The builtin-clone now does the http commit walking and the tree unpacking
in the same process, and the commit walker leaves the in-core objects in a
funny state.  When forgetting the data read from the tree object, the
object should be marked "not parsed yet" for later users.

Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'maint'
Junio C Hamano [Wed, 4 Jun 2008 20:15:59 +0000 (13:15 -0700)]
Merge branch 'maint'

* maint:
  describe: match pattern for lightweight tags too

16 years agodescribe: match pattern for lightweight tags too
Michael Dressel [Wed, 4 Jun 2008 19:06:31 +0000 (21:06 +0200)]
describe: match pattern for lightweight tags too

The <pattern> given "git describe --match" was used only to filter tag
objects, and not to filter lightweight tags.  This fixes it.

[jc: made the log to clarify this is a bugfix, not an enhancement, with
additional test]

Signed-off-by: Michael Dressel <MichaelTiloDressel@t-online.de>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot7502: honor SHELL_PATH
Junio C Hamano [Wed, 4 Jun 2008 19:10:01 +0000 (12:10 -0700)]
t7502: honor SHELL_PATH

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDocumentation: git-log cannot use rev-list specific options
Junio C Hamano [Wed, 4 Jun 2008 06:56:56 +0000 (23:56 -0700)]
Documentation: git-log cannot use rev-list specific options

The log family and git-rev-list share the same set of options that come
from revision walking machinery, but they both have options unique to
them.  Notably, --header, --timestamp, --stdin and --quiet apply only to
rev-list.  Exclude them from the git-log documentation.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoFix t5516 on cygwin: it does not like double slashes at the beginning of a path
Alex Riesen [Tue, 3 Jun 2008 22:16:26 +0000 (00:16 +0200)]
Fix t5516 on cygwin: it does not like double slashes at the beginning of a path

The double slashes "//" result from url./$TRASH/. expansion and the
current directory, which even in cygwin contains "/" as first
character. In cygwin such strings have special meaning: UNC path.
Accessing an UNC path built for test purpose usually fails.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot7502: tighten loosely written test sequence
Junio C Hamano [Wed, 4 Jun 2008 01:10:08 +0000 (18:10 -0700)]
t7502: tighten loosely written test sequence

We would like to catch breakage at any step in the sequence.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot7502: do not globally unset GIT_COMMITTER_* environment variables
Junio C Hamano [Wed, 4 Jun 2008 01:08:08 +0000 (18:08 -0700)]
t7502: do not globally unset GIT_COMMITTER_* environment variables

One particular test wants to check the behaviour of the command
when these variables are not set, but the later tests should have
the reliable committer identity for repeatable tests.

Move the "unset" of the variables inside a subshell in the test
that wants to unset them.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocat-file --batch: flush stdout also when objects are missing
Lea Wiemann [Tue, 3 Jun 2008 18:34:17 +0000 (20:34 +0200)]
cat-file --batch: flush stdout also when objects are missing

cat-file --batch/--batch-check only flushes stdout when the object
exists, but not when it doesn't ("<object> missing").  This makes
bidirectional pipes hang.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoGIT v1.5.6-rc1 v1.5.6-rc1
Junio C Hamano [Tue, 3 Jun 2008 07:17:22 +0000 (00:17 -0700)]
GIT v1.5.6-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocommit: drop duplicated parents
Junio C Hamano [Tue, 3 Jun 2008 05:17:42 +0000 (22:17 -0700)]
commit: drop duplicated parents

The scripted version of git-commit internally used git-commit-tree which
omitted duplicated parents given from the command line.  This prevented a
nonsensical octopus merge from getting created even when you said "git
merge A B" while you are already on branch A.

However, when git-commit was rewritten in C, this sanity check was lost.
This resurrects it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
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>