Code

git.git
16 years agoprint an error message for invalid path
Dmitry Potapov [Sat, 11 Oct 2008 16:39:37 +0000 (20:39 +0400)]
print an error message for invalid path

If verification of path failed, it is always better to print an
error message saying this than relying on the caller function to
print a meaningful error message (especially when the callee already
prints error message for another situation).

Because the callers of add_index_entry_with_check() did not print
any error message, it resulted that the user would not notice the
problem when checkout of an invalid path failed.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoDocumentation: remove stale howto/rebase-and-edit.txt
Thomas Rast [Sun, 12 Oct 2008 11:21:48 +0000 (13:21 +0200)]
Documentation: remove stale howto/rebase-and-edit.txt

The "rebase and edit" howto predates the much easier solution 'git
rebase -i' by two years.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agot9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'
Brandon Casey [Sat, 11 Oct 2008 00:21:34 +0000 (19:21 -0500)]
t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'

Since dbf5e1e9, the '--no-validate' option is a Getopt::Long boolean
option. The '--no-' prefix (as in --no-validate) for boolean options
is not supported in Getopt::Long version 2.32 which was released with
Perl 5.8.0. This version only supports '--no' as in '--novalidate'.
More recent versions of Getopt::Long, such as version 2.34, support
either prefix. So use the older form in the tests.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'maint'
Shawn O. Pearce [Fri, 10 Oct 2008 15:39:20 +0000 (08:39 -0700)]
Merge branch 'maint'

* maint:
  rebase -i: do not fail when there is no commit to cherry-pick
  test-lib: fix color reset in say_color()
  fix pread()'s short read in index-pack

Conflicts:
csum-file.c

16 years agorebase -i: do not fail when there is no commit to cherry-pick
Johannes Schindelin [Fri, 10 Oct 2008 11:42:12 +0000 (13:42 +0200)]
rebase -i: do not fail when there is no commit to cherry-pick

In case there is no commit to apply (for example because you rebase to
upstream and all your local patches have been applied there), do not
fail.  The non-interactive rebase already behaves that way.

Do this by introducing a new command, "noop", which is substituted for
an empty commit list, so that deleting the commit list can still abort
as before.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agotest-lib: fix color reset in say_color()
Miklos Vajna [Thu, 9 Oct 2008 22:07:10 +0000 (00:07 +0200)]
test-lib: fix color reset in say_color()

When executing a single test with colors enabled, the cursor was not set
back to the previous one, and you had to hit an extra enter to get it
back.

Work around this problem by calling 'tput sgr0' before printing the
final newline.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agofix pread()'s short read in index-pack
Nicolas Pitre [Fri, 10 Oct 2008 02:08:51 +0000 (22:08 -0400)]
fix pread()'s short read in index-pack

Since v1.6.0.2~13^2~ the completion of a thin pack uses sha1write() for
its ability to compute a SHA1 on the written data.  This also provides
data buffering which, along with commit 92392b4a45, will confuse pread()
whenever an appended object is 1) freed due to memory pressure because
of the depth-first delta processing, and 2) needed again because it has
many delta children, and 3) its data is still buffered by sha1write().

Let's fix the issue by simply forcing cached data out when such an
object is written so it can be pread()'d at leisure.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'js/objc-funchdr'
Shawn O. Pearce [Thu, 9 Oct 2008 18:01:51 +0000 (11:01 -0700)]
Merge branch 'js/objc-funchdr'

* js/objc-funchdr:
  Teach git diff about Objective-C syntax

16 years agoMerge branch 'pb/gitweb'
Shawn O. Pearce [Thu, 9 Oct 2008 17:52:04 +0000 (10:52 -0700)]
Merge branch 'pb/gitweb'

* pb/gitweb:
  gitweb: Support for simple project search form
  gitweb: Make the by_tag filter delve in forks as well
  gitweb: Support for tag clouds
  gitweb: Add support for extending the action bar with custom links
  gitweb: Sort the list of forks on the summary page by age
  gitweb: Clean-up sorting of project list

16 years agoMerge branch 'dm/svn-branch'
Shawn O. Pearce [Thu, 9 Oct 2008 17:39:00 +0000 (10:39 -0700)]
Merge branch 'dm/svn-branch'

* dm/svn-branch:
  Add git-svn branch to allow branch creation in SVN repositories

16 years agoMerge branch 'bc/xdiffnl'
Shawn O. Pearce [Thu, 9 Oct 2008 17:24:24 +0000 (10:24 -0700)]
Merge branch 'bc/xdiffnl'

* bc/xdiffnl:
  xdiff-interface.c: strip newline (and cr) from line before pattern matching

16 years agoMerge branch 'dp/cywginstat'
Shawn O. Pearce [Thu, 9 Oct 2008 17:24:14 +0000 (10:24 -0700)]
Merge branch 'dp/cywginstat'

* dp/cywginstat:
  cygwin: Use native Win32 API for stat
  mingw: move common functionality to win32.h
  add have_git_dir() function

16 years agoMerge branch 'lt/time-reject-fractional-seconds'
Shawn O. Pearce [Thu, 9 Oct 2008 17:23:55 +0000 (10:23 -0700)]
Merge branch 'lt/time-reject-fractional-seconds'

* lt/time-reject-fractional-seconds:
  date/time: do not get confused by fractional seconds

16 years agoMerge branch 'jc/add-ita'
Shawn O. Pearce [Thu, 9 Oct 2008 17:21:25 +0000 (10:21 -0700)]
Merge branch 'jc/add-ita'

* jc/add-ita:
  git-add --intent-to-add (-N)

16 years agoMerge branch 'mw/sendemail'
Shawn O. Pearce [Thu, 9 Oct 2008 17:19:51 +0000 (10:19 -0700)]
Merge branch 'mw/sendemail'

* mw/sendemail:
  bash completion: Add --[no-]validate to "git send-email"
  send-email: signedoffcc -> signedoffbycc, but handle both
  Docs: send-email: Create logical groupings for man text
  Docs: send-email: Create logical groupings for --help text
  Docs: send-email: Remove unnecessary config variable description
  Docs: send-email: --chain_reply_to -> --[no-]chain-reply-to
  send-email: change --no-validate to boolean --[no-]validate
  Docs: send-email: Man page option ordering
  Docs: send-email usage text much sexier
  Docs: send-email's usage text and man page mention same options

16 years agoMerge branch 'mv/merge-refresh'
Shawn O. Pearce [Thu, 9 Oct 2008 17:19:23 +0000 (10:19 -0700)]
Merge branch 'mv/merge-refresh'

* mv/merge-refresh:
  builtin-merge: refresh the index before calling a strategy

16 years agoMerge branch 'ph/parseopt'
Shawn O. Pearce [Thu, 9 Oct 2008 17:19:08 +0000 (10:19 -0700)]
Merge branch 'ph/parseopt'

* ph/parseopt:
  parse-opt: migrate builtin-merge-file.
  parse-opt: migrate git-merge-base.
  parse-opt: migrate fmt-merge-msg.

16 years agoMerge branch 'rz/grepz'
Shawn O. Pearce [Thu, 9 Oct 2008 17:18:59 +0000 (10:18 -0700)]
Merge branch 'rz/grepz'

* rz/grepz:
  git grep: Add "-z/--null" option as in GNU's grep.

16 years agoMerge branch 'mg/verboseprune'
Shawn O. Pearce [Thu, 9 Oct 2008 17:18:41 +0000 (10:18 -0700)]
Merge branch 'mg/verboseprune'

* mg/verboseprune:
  make prune report removed objects on -v

16 years agoMerge branch 'maint'
Shawn O. Pearce [Thu, 9 Oct 2008 17:18:32 +0000 (10:18 -0700)]
Merge branch 'maint'

* maint:
  builtin-apply: fix typo leading to stack corruption
  git-stash.sh: fix flawed fix of invalid ref handling (commit da65e7c1)
  builtin-merge.c: allocate correct amount of memory
  Makefile: do not set NEEDS_LIBICONV for Solaris 8
  rebase -i: remove leftover debugging
  rebase -i: proper prepare-commit-msg hook argument when squashing

16 years agoMerge branch 'sg/maint-intrebase-msghook' into maint
Shawn O. Pearce [Thu, 9 Oct 2008 16:33:23 +0000 (09:33 -0700)]
Merge branch 'sg/maint-intrebase-msghook' into maint

* sg/maint-intrebase-msghook:
  rebase -i: remove leftover debugging
  rebase -i: proper prepare-commit-msg hook argument when squashing

16 years agobuiltin-apply: fix typo leading to stack corruption
Imre Deak [Wed, 8 Oct 2008 21:24:16 +0000 (00:24 +0300)]
builtin-apply: fix typo leading to stack corruption

This typo led to stack corruption for lines with whitespace fixes
and length > 1024.

Signed-off-by: Imre Deak <imre.deak@gmail.com>
Looks-good-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-stash.sh: fix flawed fix of invalid ref handling (commit da65e7c1)
Brandon Casey [Thu, 2 Oct 2008 23:52:11 +0000 (18:52 -0500)]
git-stash.sh: fix flawed fix of invalid ref handling (commit da65e7c1)

The referenced commit tried to fix a flaw in stash's handling of a user
supplied invalid ref. i.e. 'git stash apply fake_ref@{0}' should fail
instead of applying stash@{0}. But, it did so in a naive way by avoiding the
use of the --default option of rev-parse, and instead manually supplied the
default revision if the user supplied an empty command line. This prevented
a common usage scenario of supplying flags on the stash command line (i.e.
non-empty command line) which would be parsed by lower level git commands,
without supplying a specific revision. This should fall back to the default
revision, but now it causes an error. e.g. 'git stash show -p'

The correct fix is to use the --verify option of rev-parse, which fails
properly if an invalid ref is supplied, and still allows falling back to a
default ref when one is not supplied.

Convert stash-drop to use --verify while we're at it, since specifying
multiple revisions for any of these commands is also an error and --verify
makes it so.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'jk/maint-soliconv' into maint
Shawn O. Pearce [Thu, 9 Oct 2008 16:08:43 +0000 (09:08 -0700)]
Merge branch 'jk/maint-soliconv' into maint

* jk/maint-soliconv:
  Makefile: do not set NEEDS_LIBICONV for Solaris 8

16 years agoCleanup in sha1_file.c::cache_or_unpack_entry()
Miklos Vajna [Thu, 9 Oct 2008 00:11:24 +0000 (02:11 +0200)]
Cleanup in sha1_file.c::cache_or_unpack_entry()

This patch just removes an unnecessary goto which makes the code easier
to read and shorter.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agobuiltin-merge.c: allocate correct amount of memory
Brandon Casey [Thu, 9 Oct 2008 00:07:54 +0000 (19:07 -0500)]
builtin-merge.c: allocate correct amount of memory

Fix two memory allocation errors which allocate space for a pointer
rather than enough space for the structure itself.

This:

    struct commit_list *parent = xmalloc(sizeof(struct commit_list *));

should have been this:

    struct commit_list *parent = xmalloc(sizeof(struct commit_list));

But while we're at it, change the allocation to reference the
variable it is allocating memory for to try to prevent a similar
mistake, for example if the type is changed, in the future.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Acked-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'maint'
Shawn O. Pearce [Wed, 8 Oct 2008 15:05:43 +0000 (08:05 -0700)]
Merge branch 'maint'

* maint:
  Do not use errno when pread() returns 0
  git init: --bare/--shared overrides system/global config
  git-push.txt: Describe --repo option in more detail
  git rm: refresh index before up-to-date check
  Fix a few typos in relnotes

16 years agoDo not use errno when pread() returns 0
Samuel Tardieu [Mon, 6 Oct 2008 17:28:41 +0000 (19:28 +0200)]
Do not use errno when pread() returns 0

If we use pread() while at the end of the file, it will return 0, which is
not an error from the operating system point of view. In this case, errno
has not been set and must not be used.

Signed-off-by: Samuel Tardieu <sam@rfc1149.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoReplace xmalloc/memset(0) pairs with xcalloc
Brandon Casey [Mon, 6 Oct 2008 23:39:10 +0000 (18:39 -0500)]
Replace xmalloc/memset(0) pairs with xcalloc

Many call sites immediately initialize allocated memory with zero after
calling xmalloc. A single call to xcalloc can replace this two-call
sequence.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit init: --bare/--shared overrides system/global config
Deskin Miller [Tue, 7 Oct 2008 05:37:48 +0000 (01:37 -0400)]
git init: --bare/--shared overrides system/global config

If core.bare or core.sharedRepository are set in /etc/gitconfig or
~/.gitconfig, then 'git init' will read the values when constructing a
new config file; reading them, however, will override the values
specified on the command line.  In the case of --bare, this ends up
causing a segfault, without the repository being properly initialised;
in the case of --shared, the permissions are set according to the
existing config settings, not what was specified on the command line.

This fix saves any specified values for --bare and --shared prior to
reading existing config settings, and restores them after reading but
before writing the new config file.  core.bare is ignored in all
situations, while core.sharedRepository will only be used if --shared
is not specified to git init.

Also includes testcases which use a specified global config file
override, demonstrating the former failure scenario.

Signed-off-by: Deskin Miller <deskinm@umich.edu>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-push.txt: Describe --repo option in more detail
Johannes Sixt [Tue, 7 Oct 2008 14:26:20 +0000 (16:26 +0200)]
git-push.txt: Describe --repo option in more detail

The --repo option was described in a way that the reader would have to
assume that it is the same as the <repository> parameter. But it actually
servers a purpose, which is now written down.

Furthermore, the --mirror option was missing from the synopsis.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit rm: refresh index before up-to-date check
Johannes Schindelin [Tue, 7 Oct 2008 16:08:21 +0000 (18:08 +0200)]
git rm: refresh index before up-to-date check

Since "git rm" is supposed to be porcelain, we should convince it to
be user friendly by refreshing the index itself.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoFix a few typos in relnotes
Mikael Magnusson [Tue, 7 Oct 2008 18:15:25 +0000 (20:15 +0200)]
Fix a few typos in relnotes

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoTeach git diff about Objective-C syntax
Jonathan del Strother [Tue, 30 Sep 2008 23:46:34 +0000 (00:46 +0100)]
Teach git diff about Objective-C syntax

Add support for recognition of Objective-C class & instance methods,
C functions, and class implementation/interfaces.

Signed-off-by: Jonathan del Strother <jon.delStrother@bestbefore.tv>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoAdd git-svn branch to allow branch creation in SVN repositories
Florian Ragwitz [Sun, 5 Oct 2008 02:35:17 +0000 (19:35 -0700)]
Add git-svn branch to allow branch creation in SVN repositories

[ew: fixed a warning to stderr causing t9108 to fail]

Signed-off-by: Florian Ragwitz <rafl@debian.org>
Signed-off-by: Deskin Miller <deskinm@umich.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'maint'
Shawn O. Pearce [Mon, 6 Oct 2008 15:56:07 +0000 (08:56 -0700)]
Merge branch 'maint'

* maint:
  Update release notes for 1.6.0.3
  Teach rebase -i to honor pre-rebase hook
  docs: describe pre-rebase hook
  do not segfault if make_cache_entry failed
  make prefix_path() never return NULL
  fix bogus "diff --git" header from "diff --no-index"
  Fix fetch/clone --quiet when stdout is connected
  builtin-blame: Fix blame -C -C with submodules.
  bash: remove fetch, push, pull dashed form leftovers

Conflicts:
diff.c

16 years agoUpdate release notes for 1.6.0.3
Shawn O. Pearce [Mon, 6 Oct 2008 15:22:19 +0000 (08:22 -0700)]
Update release notes for 1.6.0.3

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agodo not segfault if make_cache_entry failed
Dmitry Potapov [Sun, 5 Oct 2008 02:14:40 +0000 (06:14 +0400)]
do not segfault if make_cache_entry failed

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoTeach rebase -i to honor pre-rebase hook
Nanako Shiraishi [Mon, 6 Oct 2008 05:14:24 +0000 (14:14 +0900)]
Teach rebase -i to honor pre-rebase hook

The original git-rebase honored pre-rebase hook so that public branches
can be protected from getting rebased, but rebase --interactive ignored
the hook entirely.  This fixes it.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agodocs: describe pre-rebase hook
Nanako Shiraishi [Sun, 5 Oct 2008 13:26:54 +0000 (22:26 +0900)]
docs: describe pre-rebase hook

Documentation/git-rebase.txt talks about pre-rebase hook, but it
appears that Documentation/git-hooks.txt does not have corresponding
entry for it.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agodo not segfault if make_cache_entry failed
Dmitry Potapov [Sun, 5 Oct 2008 02:14:40 +0000 (06:14 +0400)]
do not segfault if make_cache_entry failed

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agomake prefix_path() never return NULL
Dmitry Potapov [Sun, 5 Oct 2008 00:40:36 +0000 (04:40 +0400)]
make prefix_path() never return NULL

There are 9 places where prefix_path is called, and only in one of
them the returned pointer was checked to be non-zero and only to
call exit(128) as it is usually done by die(). In other 8 places,
the returned value was not checked and it caused SIGSEGV when a
path outside of the working tree was used. For instance, running
  git update-index --add /some/path/outside
caused SIGSEGV.

This patch changes prefix_path() to die if the path is outside of
the repository, so it never returns NULL.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agofix bogus "diff --git" header from "diff --no-index"
Linus Torvalds [Sun, 5 Oct 2008 19:35:15 +0000 (15:35 -0400)]
fix bogus "diff --git" header from "diff --no-index"

When "git diff --no-index" is given an absolute pathname, it
would generate a diff header with the absolute path
prepended by the prefix, like:

  diff --git a/dev/null b/foo

Not only is this nonsensical, and not only does it violate
the description of diffs given in git-diff(1), but it would
produce broken binary diffs. Unlike text diffs, the binary
diffs don't contain the filenames anywhere else, and so "git
apply" relies on this header to figure out the filename.

This patch just refuses to use an invalid name for anything
visible in the diff.

Now, this fixes the "git diff --no-index --binary a
/dev/null" kind of case (and we'll end up using "a" as the
basename), but some other insane cases are impossible to
handle. If you do

git diff --no-index --binary a /bin/echo

you'll still get a patch like

diff --git a/a b/bin/echo
old mode 100644
new mode 100755
index ...

and "git apply" will refuse to apply it for a couple of
reasons, and the diff is simply bogus.

And that, btw, is no longer a bug, I think. It's impossible
to know whethe the user meant for the patch to be a rename
or not. And as such, refusing to apply it because you don't
know what name you should use is probably _exactly_ the
right thing to do!

Original problem reported by Imre Deak. Test script and problem
description by Jeff King.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoFix fetch/clone --quiet when stdout is connected
Tuncer Ayaz [Sun, 5 Oct 2008 13:53:00 +0000 (15:53 +0200)]
Fix fetch/clone --quiet when stdout is connected

Fixes the `git clone --quiet` issue raised by Dave Jones in
http://marc.info/?l=git&m=121529226023180&w=2

With this simple patch applied we no longer see the following remote
messages as no-progress is correctly sent to the remote site:

  remote: Counting objects: 84102, done.
  remote: Compressing objects: 100% (24720/24720), done.
  remote: Total 84102 (delta 60949), reused 80810 (delta 57900)

Signed-off-by: Tuncer Ayaz <tuncer.ayaz@gmail.com>
Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agobuiltin-blame: Fix blame -C -C with submodules.
Alexander Gavrilov [Fri, 3 Oct 2008 16:23:50 +0000 (20:23 +0400)]
builtin-blame: Fix blame -C -C with submodules.

When performing copy detection, git-blame tries to
read gitlinks as blobs, which causes it to die.

This patch adds a check to skip them.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agobash: remove fetch, push, pull dashed form leftovers
SZEDER Gábor [Fri, 3 Oct 2008 19:34:49 +0000 (21:34 +0200)]
bash: remove fetch, push, pull dashed form leftovers

We don't provide complation for git-commands in dashed form anymore,
so there is no need to keep those cases.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Tested-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agobuiltin-merge: refresh the index before calling a strategy
Miklos Vajna [Fri, 3 Oct 2008 13:02:31 +0000 (15:02 +0200)]
builtin-merge: refresh the index before calling a strategy

In case a file is touched but has no real changes then we just have to
update the index and should not error out.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMakefile: do not set NEEDS_LIBICONV for Solaris 8
Jeff King [Fri, 3 Oct 2008 06:39:36 +0000 (02:39 -0400)]
Makefile: do not set NEEDS_LIBICONV for Solaris 8

This breaks my build on Solaris 8, as there is no separate
libiconv.

The history of this line is somewhat convoluted. In 2fd955c
(in November 2005), NEEDS_LIBICONV was turned on for all
Solaris builds, claiming to "fix an error in Solaris 10 by
setting NEEDS_LIBICONV".

Later, e15f545 (in February of 2006) claimed that "Solaris
9+ don't need iconv", and moved NEEDS_LIBICONV into a
section for Solaris 8.

Furthermore, Brandon Casey claims in

<5A1KxlhmUIHe8iXPxnXYuNXsq0Yjlbwkz2eBin3z7ELuL9nK-4tSpw@cipher.nrlssc.navy.mil>

that he does not set NEEDS_LIBICONV for Solaris 7.

So either one of those commits is totally wrong, or there is
some other magic going on where some Solaris installs need
it and others don't.

Given Brandon's statement and my problems on Solaris 8 with
NEEDS_LIBICONV, I am inclined to think the first commit was
bogus, and that NEEDS_LIBICONV shouldn't be set for Solaris
at all by default. If somebody wants to use iconv and has
installed it manually, they can set it in their config.mak.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agorebase -i: remove leftover debugging
SZEDER Gábor [Fri, 3 Oct 2008 09:33:20 +0000 (11:33 +0200)]
rebase -i: remove leftover debugging

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'pb/gitweb-tagcloud' into pb/gitweb
Shawn O. Pearce [Fri, 3 Oct 2008 14:41:25 +0000 (07:41 -0700)]
Merge branch 'pb/gitweb-tagcloud' into pb/gitweb

* pb/gitweb-tagcloud:
  gitweb: Support for simple project search form
  gitweb: Make the by_tag filter delve in forks as well
  gitweb: Support for tag clouds
  ... (+ many updates from master) ...

Conflicts:
gitweb/gitweb.perl

16 years agogitweb: Support for simple project search form
Petr Baudis [Fri, 3 Oct 2008 07:29:45 +0000 (09:29 +0200)]
gitweb: Support for simple project search form

This is a trivial patch adding support for searching projects by name
and description, making use of the "infrastructure" provided by the
tag cloud generation.

Signed-off-by: Petr Baudis <petr.baudis@novartis.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogitweb: Make the by_tag filter delve in forks as well
Petr Baudis [Thu, 2 Oct 2008 15:17:01 +0000 (17:17 +0200)]
gitweb: Make the by_tag filter delve in forks as well

This requires us to build a full index including forks and then weed
them out only when printing.

Signed-off-by: Petr Baudis <petr.baudis@novartis.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogitweb: Support for tag clouds
Petr Baudis [Thu, 2 Oct 2008 15:13:02 +0000 (17:13 +0200)]
gitweb: Support for tag clouds

The "Content tags" (nothing to do with usual Git tags!) are free-form
strings that are attached to random projects and displayed in the
well-known Web2.0-ish tag cloud above project list.

The feature will make use of HTML::TagCloud if available, but will
still display (less pretty) list of tags in case the module is not
installed.

The tagging itself is not done by gitweb - user-provided external
helper CGI needs to be provided; one example is the tagproj.cgi
of Girocco. This functionality might get integrated to gitweb
in the future.

The tags are stored one-per-file in ctags/ subdirectory. The reason
they are not stored in the project config file is that you usually
want to give anyone (even CGI scripts) permission to create new tags
and they are non-essential information, and thus you would make
the ctags/ subdirectory world-writable.

Signed-off-by: Petr Baudis <petr.baudis@novartis.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agorebase -i: proper prepare-commit-msg hook argument when squashing
SZEDER Gábor [Fri, 3 Oct 2008 00:08:21 +0000 (02:08 +0200)]
rebase -i: proper prepare-commit-msg hook argument when squashing

One would expect that the prepare-commit-msg hook gets 'squash' as the
second argument when squashing commits with 'rebase -i'.  However,
that was not the case, as it got 'merge' instead.  This patch fixes
the problem.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agobash completion: Add --[no-]validate to "git send-email"
Teemu Likonen [Sun, 28 Sep 2008 04:51:21 +0000 (07:51 +0300)]
bash completion: Add --[no-]validate to "git send-email"

Signed-off-by: Teemu Likonen <tlikonen@iki.fi>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogitweb: Add support for extending the action bar with custom links
Petr Baudis [Thu, 2 Oct 2008 14:36:52 +0000 (16:36 +0200)]
gitweb: Add support for extending the action bar with custom links

This makes it possible to easily extend gitweb with custom functionality,
e.g. git-browser or web-based repository administration system like
the repo.or.cz/Girocco duct tape.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoparse-opt: migrate builtin-merge-file.
Pierre Habouzit [Thu, 2 Oct 2008 12:59:20 +0000 (14:59 +0200)]
parse-opt: migrate builtin-merge-file.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoparse-opt: migrate git-merge-base.
Pierre Habouzit [Thu, 2 Oct 2008 12:59:19 +0000 (14:59 +0200)]
parse-opt: migrate git-merge-base.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoparse-opt: migrate fmt-merge-msg.
Pierre Habouzit [Thu, 2 Oct 2008 12:59:18 +0000 (14:59 +0200)]
parse-opt: migrate fmt-merge-msg.

Also fix an inefficient printf("%s", ...) where we can use write_in_full.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoxdiff-interface.c: strip newline (and cr) from line before pattern matching
Brandon Casey [Wed, 1 Oct 2008 19:28:26 +0000 (14:28 -0500)]
xdiff-interface.c: strip newline (and cr) from line before pattern matching

POSIX doth sayeth:

   "In the regular expression processing described in IEEE Std 1003.1-2001,
    the <newline> is regarded as an ordinary character and both a period and
    a non-matching list can match one. ... Those utilities (like grep) that
    do not allow <newline>s to match are responsible for eliminating any
    <newline> from strings before matching against the RE."

Thus far git has not been removing the trailing newline from strings matched
against regular expression patterns. This has the effect that (quoting
Jonathan del Strother) "... a line containing just 'FUNCNAME' (terminated by
a newline) will be matched by the pattern '^(FUNCNAME.$)' but not
'^(FUNCNAME$)'", and more simply not '^FUNCNAME$'.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agotests: add a testcase for "git submodule sync"
David Aguilar [Thu, 2 Oct 2008 09:11:55 +0000 (02:11 -0700)]
tests: add a testcase for "git submodule sync"

This testcase ensures that upstream changes to submodule properties
can be updated using the sync subcommand.  This particular test
changes the submodule URL upstream and uses the sync command to update
an existing checkout.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'maint'
Shawn O. Pearce [Fri, 3 Oct 2008 01:16:22 +0000 (18:16 -0700)]
Merge branch 'maint'

* maint:
  gitweb: Add path_info tests to t/t9500-gitweb-standalone-no-errors.sh
  gitweb: Fix two 'uninitialized value' warnings in git_tree()
  Solaris: Use OLD_ICONV to avoid compile warnings
  gitweb: remove PATH_INFO from $my_url and $my_uri

16 years agofix openssl headers conflicting with custom SHA1 implementations
Nicolas Pitre [Wed, 1 Oct 2008 18:05:20 +0000 (14:05 -0400)]
fix openssl headers conflicting with custom SHA1 implementations

On ARM I have the following compilation errors:

    CC fast-import.o
In file included from cache.h:8,
                 from builtin.h:6,
                 from fast-import.c:142:
arm/sha1.h:14: error: conflicting types for 'SHA_CTX'
/usr/include/openssl/sha.h:105: error: previous declaration of 'SHA_CTX' was here
arm/sha1.h:16: error: conflicting types for 'SHA1_Init'
/usr/include/openssl/sha.h:115: error: previous declaration of 'SHA1_Init' was here
arm/sha1.h:17: error: conflicting types for 'SHA1_Update'
/usr/include/openssl/sha.h:116: error: previous declaration of 'SHA1_Update' was here
arm/sha1.h:18: error: conflicting types for 'SHA1_Final'
/usr/include/openssl/sha.h:117: error: previous declaration of 'SHA1_Final' was here
make: *** [fast-import.o] Error 1

This is because openssl header files are always included in
git-compat-util.h since commit 684ec6c63c whenever NO_OPENSSL is not
set, which somehow brings in <openssl/sha1.h> clashing with the custom
ARM version.  Compilation of git is probably broken on PPC too for the
same reason.

Turns out that the only file requiring openssl/ssl.h and openssl/err.h
is imap-send.c.  But only moving those problematic includes there
doesn't solve the issue as it also includes cache.h which brings in the
conflicting local SHA1 header file.

As suggested by Jeff King, the best solution is to rename our references
to SHA1 functions and structure to something git specific, and define those
according to the implementation used.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoarchive.c: make archiver static
Nanako Shiraishi [Thu, 2 Oct 2008 10:14:33 +0000 (19:14 +0900)]
archive.c: make archiver static

This variable is not used anywhere outside.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agocommit.c: make read_graft_file() static
Nanako Shiraishi [Thu, 2 Oct 2008 10:14:30 +0000 (19:14 +0900)]
commit.c: make read_graft_file() static

This function is not called by any other file.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoconfig.c: make git_parse_long() static
Nanako Shiraishi [Thu, 2 Oct 2008 10:14:27 +0000 (19:14 +0900)]
config.c: make git_parse_long() static

This function is not used in any other file.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agorun-command.c: remove run_command_v_opt_cd()
Nanako Shiraishi [Thu, 2 Oct 2008 10:14:25 +0000 (19:14 +0900)]
run-command.c: remove run_command_v_opt_cd()

This function is not used anywhere.

Johannes Sixt <johannes.sixt@telecom.at>:
> Future callers can use run_command_v_opt_cd_env() instead.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agodir.c: make dir_add_name() and dir_add_ignored() static
Nanako Shiraishi [Thu, 2 Oct 2008 10:14:23 +0000 (19:14 +0900)]
dir.c: make dir_add_name() and dir_add_ignored() static

These functions are not used by any other file.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogitweb: Add path_info tests to t/t9500-gitweb-standalone-no-errors.sh
Jakub Narebski [Thu, 2 Oct 2008 14:52:20 +0000 (16:52 +0200)]
gitweb: Add path_info tests to t/t9500-gitweb-standalone-no-errors.sh

Note that those tests only check that there are no errors nor
warnings from Perl; they do not check for example if gitweb doesn't
use ARRAY(0x8e3cc20) instead of correct value in links, etc.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogitweb: Fix two 'uninitialized value' warnings in git_tree()
Jakub Narebski [Thu, 2 Oct 2008 14:50:04 +0000 (16:50 +0200)]
gitweb: Fix two 'uninitialized value' warnings in git_tree()

If we did try to access nonexistent directory or file, which means
that git_get_hash_by_path() returns `undef`, uninitialized $hash
variable was passed to 'open' call.  Now we fail early with "404 Not
Found - No such tree" error.  (If we try to access something which
does not resolve to tree-ish, for example a file / 'blob' object, the
error will be caught later, as "404 Not Found - Reading tree failed"
error).

If we tried to use 'tree' action without $file_name ('f' parameter)
set, which means either tree given by hash or a top tree (and we
currently cannot distinguish between those two cases), we cannot print
path breadcrumbs with git_print_page_path().  Fix this by moving call
to git_print_page_path() inside conditional.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogitweb: Identify all summary metadata table rows
Petr Baudis [Thu, 2 Oct 2008 14:25:05 +0000 (16:25 +0200)]
gitweb: Identify all summary metadata table rows

In the metadata table of the summary page, all rows have their
id (or class in case of URL) set now. This for example lets sites
easily disable fields they do not want to show in their custom
stylesheet (e.g. they are overly technical or irrelevant for the site).

Signed-off-by: Petr Baudis <petr.baudis@novartis.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoSolaris: Use OLD_ICONV to avoid compile warnings
David Soria Parra [Thu, 2 Oct 2008 00:08:47 +0000 (02:08 +0200)]
Solaris: Use OLD_ICONV to avoid compile warnings

Solaris systems use the old styled iconv(3) call and therefore
the OLD_ICONV variable should be set. Otherwise we get annoying compile
warnings.

Signed-off-by: David Soria Parra <dsp@php.net>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogitweb: remove PATH_INFO from $my_url and $my_uri
Giuseppe Bilotta [Mon, 29 Sep 2008 13:07:42 +0000 (15:07 +0200)]
gitweb: remove PATH_INFO from $my_url and $my_uri

This patch fixes PATH_INFO handling by removing the relevant part from
$my_url and $my_uri, thus making it unnecessary to specify them by hand
in the gitweb configuration.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoconfig.c: Tolerate UTF8 BOM at the beginning of config file
Petr Baudis [Wed, 1 Oct 2008 20:13:02 +0000 (22:13 +0200)]
config.c: Tolerate UTF8 BOM at the beginning of config file

Unfortunately, the abomination of Windows Notepad likes to scatted
non-sensical UTF8 BOM marks across text files it edits. This is
especially troublesome when editing the Git configuration file,
and it does not appear to be particularly harmful to teach Git
to deal with this poo in the configfile.

Signed-off-by: Petr Baudis <petr.baudis@novartis.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogitweb: Quote non-displayable characters in hex, not octal
Petr Baudis [Wed, 1 Oct 2008 20:11:54 +0000 (22:11 +0200)]
gitweb: Quote non-displayable characters in hex, not octal

For the last 30 years, the mankind uses the octal representation of
characters only in rare cases and most character codes are hardly
recognizable in octal. In contrast, many programmers still know
hexadecimal well and that is also the representation of choice e.g.
for Unicode codepoints.

Signed-off-by: Petr Baudis <petr.baudis@novartis.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit grep: Add "-z/--null" option as in GNU's grep.
Raphael Zimmerer [Wed, 1 Oct 2008 16:11:15 +0000 (18:11 +0200)]
git grep: Add "-z/--null" option as in GNU's grep.

Here's a trivial patch that adds "-z" and "--null" options to "git
grep". It was discussed on the mailing-list that git's "-z"
convention should be used instead of GNU grep's "-Z".
So things like 'git grep -l -z "$FOO" | xargs -0 sed -i "s/$FOO/$BOO/"'
do work now.

Signed-off-by: Raphael Zimmerer <killekulla@rdrz.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agosend-email: signedoffcc -> signedoffbycc, but handle both
Michael Witten [Tue, 30 Sep 2008 12:58:32 +0000 (07:58 -0500)]
send-email: signedoffcc -> signedoffbycc, but handle both

The documentation now mentions sendemail.signedoffbycc instead
of sendemail.signedoffcc in order to match with the options
--signed-off-by-cc; the code has been updated to reflect this
as well, but sendemail.signedoffcc is still handled.

Signed-off-by: Michael Witten <mfwitten@mit.edu>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoDocs: send-email: Create logical groupings for man text
Michael Witten [Tue, 30 Sep 2008 12:58:31 +0000 (07:58 -0500)]
Docs: send-email: Create logical groupings for man text

The options are partitioned into more digestible groups.
Within these groups, the options are sorted alphabetically.

Signed-off-by: Michael Witten <mfwitten@mit.edu>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoDocs: send-email: Create logical groupings for --help text
Michael Witten [Tue, 30 Sep 2008 12:58:30 +0000 (07:58 -0500)]
Docs: send-email: Create logical groupings for --help text

The options are partitioned into more digestible groups.

Signed-off-by: Michael Witten <mfwitten@mit.edu>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoDocs: send-email: Remove unnecessary config variable description
Michael Witten [Tue, 30 Sep 2008 12:58:29 +0000 (07:58 -0500)]
Docs: send-email: Remove unnecessary config variable description

The config variables are mentioned within the descriptions of the
command line options with which they are associated.

Signed-off-by: Michael Witten <mfwitten@mit.edu>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoDocs: send-email: --chain_reply_to -> --[no-]chain-reply-to
Michael Witten [Tue, 30 Sep 2008 12:58:28 +0000 (07:58 -0500)]
Docs: send-email: --chain_reply_to -> --[no-]chain-reply-to

Signed-off-by: Michael Witten <mfwitten@mit.edu>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agosend-email: change --no-validate to boolean --[no-]validate
Michael Witten [Tue, 30 Sep 2008 12:58:27 +0000 (07:58 -0500)]
send-email: change --no-validate to boolean --[no-]validate

There is also now a configuration variable:

    sendemail[.<identity>].validate

Signed-off-by: Michael Witten <mfwitten@mit.edu>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoDocs: send-email: Man page option ordering
Michael Witten [Tue, 30 Sep 2008 12:58:26 +0000 (07:58 -0500)]
Docs: send-email: Man page option ordering

Now the man page lists the options in alphabetical
order (in terms of the 'main' part of an option's
name).

Signed-off-by: Michael Witten <mfwitten@mit.edu>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoDocs: send-email usage text much sexier
Michael Witten [Tue, 30 Sep 2008 12:58:25 +0000 (07:58 -0500)]
Docs: send-email usage text much sexier

All of the descriptions are aligned, shorter,
better arranged, and no line is greater than
78 columns.

Signed-off-by: Michael Witten <mfwitten@mit.edu>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoDocs: send-email's usage text and man page mention same options
Michael Witten [Tue, 30 Sep 2008 12:58:24 +0000 (07:58 -0500)]
Docs: send-email's usage text and man page mention same options

Specifically, boolean options are now listed in the form

    --[no-]option

and both forms of documentation now consistently use

    --[no-]signed-off-by-cc

Signed-off-by: Michael Witten <mfwitten@mit.edu>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogitweb: Sort the list of forks on the summary page by age
Mike Ralphson [Thu, 25 Sep 2008 16:48:48 +0000 (18:48 +0200)]
gitweb: Sort the list of forks on the summary page by age

The list of forks on the summary page was unsorted, this just makes
them sorted by age, which seems a fair way to decide which forks are
shown before the list size cut-off (15) kicks in.

s/noheader/no_header was just to make it obvious what the parameter
affects, so all the code can be found with one grep.

pb: As suggested by Mike, I have augmented this by an additional patch
that refactors the sorting logic so that it is not tied to printing
the headers.

Signed-off-by: Mike Ralphson <mike@abacus.co.uk>
Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogitweb: Clean-up sorting of project list
Petr Baudis [Thu, 25 Sep 2008 16:48:37 +0000 (18:48 +0200)]
gitweb: Clean-up sorting of project list

This decouples the sorting of project list and printing the column
headers, so that the project list can be easily sorted even when
the headers are not shown.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'maint'
Shawn O. Pearce [Wed, 1 Oct 2008 15:56:36 +0000 (08:56 -0700)]
Merge branch 'maint'

* maint:
  Improve git-log documentation wrt file filters
  Documentation: remove '\' in front of short options

16 years agoImprove git-log documentation wrt file filters
martin f. krafft [Tue, 30 Sep 2008 19:57:50 +0000 (21:57 +0200)]
Improve git-log documentation wrt file filters

The need for "--" in the git-log synopsis was previously unclear and
confusing. This patch makes it a little clearer.

Thanks to hyy <yiyihu@gmail.com> for his help.

[sp: Changed -- to \-- per prior commit e1ccf53.]

Signed-off-by: martin f. krafft <madduck@madduck.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoDocumentation: remove '\' in front of short options
SZEDER Gábor [Tue, 30 Sep 2008 17:27:10 +0000 (19:27 +0200)]
Documentation: remove '\' in front of short options

... because they show up in the man and html outputs.

This escaping is only needed for double dashes to be compatible with
older asciidoc versions;  see commit e1ccf53 ([PATCH] Escape asciidoc's
built-in em-dash replacement, 2005-09-12).

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agocygwin: Use native Win32 API for stat
Dmitry Potapov [Tue, 30 Sep 2008 13:53:47 +0000 (17:53 +0400)]
cygwin: Use native Win32 API for stat

lstat/stat functions in Cygwin are very slow, because they try to emulate
some *nix things that Git does not actually need. This patch adds Win32
specific implementation of these functions for Cygwin.

This implementation handles most situation directly but in some rare cases
it falls back on the implementation provided for Cygwin. This is necessary
for two reasons:

- Cygwin has its own file hierarchy, so absolute paths used in Cygwin is
  not suitable to be used Win32 API. cygwin_conv_to_win32_path can not be
  used because it automatically dereference Cygwin symbol links, also it
  causes extra syscall. Fortunately Git rarely use absolute paths, so we
  always use Cygwin implementation for absolute paths.

- Support of symbol links. Cygwin stores symbol links as ordinary using
  one of two possible formats. Therefore, the fast implementation falls
  back to Cygwin functions if it detects potential use of symbol links.

The speed of this implementation should be the same as mingw_lstat for
common cases, but it is considerable slower when the specified file name
does not exist.

Despite all efforts to make the fast implementation as robust as possible,
it may not work well for some very rare situations. I am aware only one
situation: use Cygwin mount to bind unrelated paths inside repository
together.  Therefore, the core.ignoreCygwinFSTricks configuration option is
provided, which controls whether native or Cygwin version of stat is used.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agomingw: move common functionality to win32.h
Dmitry Potapov [Sat, 27 Sep 2008 08:43:01 +0000 (12:43 +0400)]
mingw: move common functionality to win32.h

Some small Win32 specific functions will be shared by MinGW and
Cygwin compatibility layer. Place them into a separate header.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoadd have_git_dir() function
Dmitry Potapov [Sat, 27 Sep 2008 08:41:50 +0000 (12:41 +0400)]
add have_git_dir() function

This function is used to learn whether git_dir is already set up or not.
It is necessary, because we want to read configuration in compat/cygwin.c

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agomake prune report removed objects on -v
Michael J Gruber [Mon, 29 Sep 2008 16:49:52 +0000 (18:49 +0200)]
make prune report removed objects on -v

This adds an option "-v" which makes "git prune" more verbose:
It outputs all removed objects while removing them.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'maint'
Shawn O. Pearce [Tue, 30 Sep 2008 21:14:09 +0000 (14:14 -0700)]
Merge branch 'maint'

* maint:
  git-svn: call 'fatal' correctly in set-tree
  Replace svn.foo.org with svn.example.com in git-svn docs (RFC 2606)
  t0024: add executable permission

16 years agogit-svn: call 'fatal' correctly in set-tree
Luc Heinrich [Mon, 29 Sep 2008 13:58:18 +0000 (15:58 +0200)]
git-svn: call 'fatal' correctly in set-tree

When doing a set-tree and there is no revision to commit to, the following unrelated error message is displayed: "Undefined subroutine &Git::SVN::fatal called at /opt/local/libexec/git-core/git-svn line 2575." The following patch fixes the problem and allows the real error message to be shown.

Signed-off-by: Luc Heinrich <luc@honk-honk.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoReplace svn.foo.org with svn.example.com in git-svn docs (RFC 2606)
Michael Prokop [Mon, 29 Sep 2008 23:01:34 +0000 (01:01 +0200)]
Replace svn.foo.org with svn.example.com in git-svn docs (RFC 2606)

foo.org is an existing domain, use RFC 2606 complying example.com instead
as used in other docs as well.

Signed-off-by: Michael Prokop <mika@grml.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agodiff.c: remove duplicate bibtex pattern introduced by merge 92bb9785
Brandon Casey [Mon, 29 Sep 2008 21:52:01 +0000 (16:52 -0500)]
diff.c: remove duplicate bibtex pattern introduced by merge 92bb9785

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoUse "git_config_string" to simplify "builtin-gc.c" code where "prune_expire" is set
David Bryson [Tue, 30 Sep 2008 20:28:58 +0000 (13:28 -0700)]
Use "git_config_string" to simplify "builtin-gc.c" code where "prune_expire" is set

Signed-off-by: David Bryson <david@statichacks.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agotests: grep portability fixes
Jeff King [Tue, 30 Sep 2008 08:03:55 +0000 (04:03 -0400)]
tests: grep portability fixes

We try to avoid using the "-q" or "-e" options, as they are
largely useless, as explained in aadbe44f.

There is one exception for "-e" here, which is in t7701 used
to produce an "or" of patterns. This can be rewritten as an
egrep pattern.

This patch also removes use of "grep -F" in favor of the
more widely available "fgrep".

[sp: Tested on AIX 5.3 by Mike Ralphson,
     Tested on MinGW by Johannes Sixt]

Signed-off-by: Jeff King <peff@peff.net>
Tested-by: Mike Ralphson <mike@abacus.co.uk>
Tested-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>