git.git
18 years agogit-revert with conflicts to behave as git-merge with conflicts
Luben Tuikov [Thu, 12 Oct 2006 21:52:42 +0000 (14:52 -0700)]
git-revert with conflicts to behave as git-merge with conflicts

In a busy project, reverting a commit almost always results
in a conflict between one or more files (depending on the
commit being reverted).  It is useful to record this
conflict in the commit-to-be message of the resulting commit
(after the resolve).  The process now becomes:

git-revert <SHA-1>
<git complains and prints failed automatic>
<user manually resolves>
git-update-index <resolved files>
git-commit -s

And the commit message is now a merge of the revert commit
message and the conflict commit message, giving the user a
chance to edit it or add more information:

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agocore.logallrefupdates thinko-fix
Junio C Hamano [Tue, 10 Oct 2006 04:15:59 +0000 (21:15 -0700)]
core.logallrefupdates thinko-fix

18 years agogit-pack-refs --all
Junio C Hamano [Sun, 8 Oct 2006 08:36:08 +0000 (01:36 -0700)]
git-pack-refs --all

This changes 'git-pack-refs' to pack only tags by default.
Branches are meant to be updated, either by committing onto it
yourself or tracking remote branches, and packed entries can
become stale easily, but tags are usually "create once and live
forever" and benefit more from packing.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agocore.logallrefupdates create new log file only for branch heads.
Junio C Hamano [Sun, 8 Oct 2006 08:35:18 +0000 (01:35 -0700)]
core.logallrefupdates create new log file only for branch heads.

It used to mean "create log file for any ref that is updated",
but now it creates new log files only for branch heads.

The old behaviour made this configuration less useful than
otherwise it would be; automatically creating log file for tags
is almost always not useful.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoRemove bashism from t3210-pack-refs.sh
Dennis Stosberg [Fri, 6 Oct 2006 09:10:54 +0000 (11:10 +0200)]
Remove bashism from t3210-pack-refs.sh

This bashism makes the test fail if /bin/sh is not bash.

Signed-off-by: Dennis Stosberg <dennis@stosberg.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agopack-refs: call fflush before fsync.
Junio C Hamano [Thu, 5 Oct 2006 04:37:15 +0000 (21:37 -0700)]
pack-refs: call fflush before fsync.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agopack-refs: use lockfile as everybody else does.
Junio C Hamano [Tue, 3 Oct 2006 09:15:18 +0000 (02:15 -0700)]
pack-refs: use lockfile as everybody else does.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-fetch: do not look into $GIT_DIR/refs to see if a tag exists.
Junio C Hamano [Tue, 3 Oct 2006 09:08:19 +0000 (02:08 -0700)]
git-fetch: do not look into $GIT_DIR/refs to see if a tag exists.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'master' into lj/refs
Junio C Hamano [Mon, 2 Oct 2006 18:49:59 +0000 (11:49 -0700)]
Merge branch 'master' into lj/refs

* master: (99 commits)
  lock_ref_sha1_basic does not remove empty directories on BSD
  git-push: .git/remotes/ file does not require SP after colon
  git-mv: invalidate the removed path properly in cache-tree
  Makefile: install and clean merge-recur, still.
  GIT 1.4.3-rc1
  gitweb: tree view: hash_base and hash are now context sensitive
  git-diff -B output fix.
  fetch: Reset remote refs list each time fetch_main is called
  Remove -fPIC which was only needed for Git.xs
  Fix approxidate() to understand 12:34 AM/PM are 00:34 and 12:34
  git-diff -B output fix.
  Make cvsexportcommit remove files.
  diff --stat: ensure at least one '-' for deletions, and one '+' for additions
  diff --stat=width[,name-width]: allow custom diffstat output width.
  gitweb: History: blob and tree are first, then commitdiff, etc
  gitweb: Remove redundant "commit" from history
  http/ftp: optionally ask curl to not use EPSV command
  gitweb: Don't use quotemeta on internally generated strings
  gitweb: Add snapshot to shortlog
  gitweb: Factor out gitweb_have_snapshot()
  ...

18 years agolock_ref_sha1_basic does not remove empty directories on BSD
Dennis Stosberg [Mon, 2 Oct 2006 17:23:53 +0000 (19:23 +0200)]
lock_ref_sha1_basic does not remove empty directories on BSD

lock_ref_sha1_basic relies on errno beeing set to EISDIR by the
call to read() in resolve_ref() to detect directories.  But calling
read() on a directory under NetBSD returns EPERM, and even succeeds
for local filesystems on FreeBSD.

Signed-off-by: Dennis Stosberg <dennis@stosberg.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'maint'
Junio C Hamano [Mon, 2 Oct 2006 07:47:32 +0000 (00:47 -0700)]
Merge branch 'maint'

* maint:
  git-push: .git/remotes/ file does not require SP after colon
  git-mv: invalidate the removed path properly in cache-tree

18 years agogit-push: .git/remotes/ file does not require SP after colon v1.4.2.3
Junio C Hamano [Mon, 2 Oct 2006 07:43:52 +0000 (00:43 -0700)]
git-push: .git/remotes/ file does not require SP after colon

Although most people would have one after colon if only for
readability, we never required it in git-parse-remote, so let's
not require one only in git-push.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-mv: invalidate the removed path properly in cache-tree
Junio C Hamano [Mon, 2 Oct 2006 05:22:07 +0000 (22:22 -0700)]
git-mv: invalidate the removed path properly in cache-tree

The command updated the cache without invalidating the cache
tree entries while removing an existing entry.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoDo not create tag leading directories since git update-ref does it.
Christian Couder [Mon, 2 Oct 2006 04:36:15 +0000 (06:36 +0200)]
Do not create tag leading directories since git update-ref does it.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMakefile: install and clean merge-recur, still.
Junio C Hamano [Mon, 2 Oct 2006 04:41:46 +0000 (21:41 -0700)]
Makefile: install and clean merge-recur, still.

We advertised git-merge-recur for some time, and we planned to
support it for one release after we made it the 'recursive'.

However we forgot to install it nor have "make clean" clean it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoCheck that a tag exists using show-ref instead of looking for the ref file.
Christian Couder [Sun, 1 Oct 2006 20:33:04 +0000 (22:33 +0200)]
Check that a tag exists using show-ref instead of looking for the ref file.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoUse git-update-ref to delete a tag instead of rm()ing the ref file.
Christian Couder [Sun, 1 Oct 2006 20:16:22 +0000 (22:16 +0200)]
Use git-update-ref to delete a tag instead of rm()ing the ref file.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoFix refs.c;:repack_without_ref() clean-up path
Junio C Hamano [Sun, 1 Oct 2006 18:41:00 +0000 (11:41 -0700)]
Fix refs.c;:repack_without_ref() clean-up path

The function repack_without_ref() passes a lock-file structure
on the stack to hold_lock_file_for_update(), which in turn
registers it to be cleaned up via atexit().  This is a big
no-no.

This is the same bug James Bottomley fixed with commit
31f584c242e7af28018ff920b6c8d1952beadbd4.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoClean up "git-branch.sh" and add remove recursive dir test cases.
Christian Couder [Sun, 1 Oct 2006 12:38:18 +0000 (14:38 +0200)]
Clean up "git-branch.sh" and add remove recursive dir test cases.

Now that directory recursive remove works in the core C code, we
don't need to do it in "git-branch.sh".

Also add test cases to check that directory recursive remove will
continue to work.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoFix a remove_empty_dir_recursive problem.
Christian Couder [Sun, 1 Oct 2006 12:36:49 +0000 (14:36 +0200)]
Fix a remove_empty_dir_recursive problem.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoGIT 1.4.3-rc1 v1.4.3-rc1
Junio C Hamano [Sun, 1 Oct 2006 10:08:55 +0000 (03:08 -0700)]
GIT 1.4.3-rc1

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'maint'
Junio C Hamano [Sun, 1 Oct 2006 08:10:03 +0000 (01:10 -0700)]
Merge branch 'maint'

* maint:
  git-diff -B output fix.
  Fix git-am safety checks
  Fix duplicate xmalloc in builtin-add

18 years agoshow-ref --hash=len, --abbrev=len, and --abbrev
Junio C Hamano [Sun, 1 Oct 2006 07:27:27 +0000 (00:27 -0700)]
show-ref --hash=len, --abbrev=len, and --abbrev

This teaches show-ref to abbreviate the object name.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'jc/gitpm'
Junio C Hamano [Sun, 1 Oct 2006 06:38:24 +0000 (23:38 -0700)]
Merge branch 'jc/gitpm'

* jc/gitpm: (52 commits)
  Remove -fPIC which was only needed for Git.xs
  Git.pm: Kill Git.xs for now
  Revert "Make it possible to set up libgit directly (instead of from the environment)"
  Revert "Git.pm: Introduce fast get_object() method"
  Revert "Convert git-annotate to use Git.pm"
  Fix compilation with Sun CC
  pass DESTDIR to the generated perl/Makefile
  Eliminate Scalar::Util usage from private-Error.pm
  Convert git-annotate to use Git.pm
  Git.pm: Introduce fast get_object() method
  Make it possible to set up libgit directly (instead of from the environment)
  Work around sed and make interactions on the backslash at the end of line.
  Git.pm: Introduce ident() and ident_person() methods
  Convert git-send-email to use Git.pm
  Git.pm: Add config() method
  Use $GITPERLLIB instead of $RUNNING_GIT_TESTS and centralize @INC munging
  INSTALL: a tip for running after building but without installing.
  Perly Git: make sure we do test the freshly built one.
  Git.pm: Don't #define around die
  Git.xs: older perl do not know const char *
  ...

18 years agoMerge branch 'jc/diff-stat'
Junio C Hamano [Sun, 1 Oct 2006 04:29:18 +0000 (21:29 -0700)]
Merge branch 'jc/diff-stat'

* jc/diff-stat:
  diff --stat: ensure at least one '-' for deletions, and one '+' for additions
  diff --stat=width[,name-width]: allow custom diffstat output width.
  diff --stat: color output.
  diff --stat: allow custom diffstat output width.

18 years agoMerge branch 'lt/web'
Junio C Hamano [Sun, 1 Oct 2006 04:27:51 +0000 (21:27 -0700)]
Merge branch 'lt/web'

* lt/web:
  gitweb: tree view: hash_base and hash are now context sensitive
  gitweb: History: blob and tree are first, then commitdiff, etc
  gitweb: Remove redundant "commit" from history
  gitweb: Don't use quotemeta on internally generated strings
  gitweb: Add snapshot to shortlog
  gitweb: Factor out gitweb_have_snapshot()
  gitweb: Remove redundant "commit" link from shortlog
  gitweb: "alternate" starts with shade (i.e. 1)
  gitweb: Add history and blame to git_difftree_body()
  gitweb: Remove excessively redundant entries from git_difftree_body
  Revert "gitweb: extend blame to show links to diff and previous"
  gitweb: Quote filename in HTTP Content-Disposition: header
  gitweb: Add git_url subroutine, and use it to quote full URLs
  gitweb: Split validate_input into validate_pathname and validate_refname
  gitweb: Use "return" instead of "return undef" for some subs
  gitweb: Strip trailing slashes from $path in git_get_hash_by_path
  gitweb: extend blame to show links to diff and previous
  gitweb: Remove redundant "tree" link
  gitweb: tree view: eliminate redundant "blob"

18 years agogit-branch: remove D/F check done by hand.
Junio C Hamano [Sat, 30 Sep 2006 22:21:28 +0000 (15:21 -0700)]
git-branch: remove D/F check done by hand.

Now ref creation codepath in lock_ref_sha1() and friends notices
the directory/file conflict situation, we do not do this by hand
in git-branch anymore.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agodelete_ref(): delete packed ref
Junio C Hamano [Sat, 30 Sep 2006 22:02:00 +0000 (15:02 -0700)]
delete_ref(): delete packed ref

This implements deletion of a packed ref.  Since it is a very
rare event to delete a ref compared to looking up, creating and
updating, this opts to remove the ref from the packed-ref file
instead of doing any of the filesystem based "negative ref" trick
to optimize the deletion path.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agolock_ref_sha1(): check D/F conflict with packed ref when creating.
Junio C Hamano [Sat, 30 Sep 2006 21:19:25 +0000 (14:19 -0700)]
lock_ref_sha1(): check D/F conflict with packed ref when creating.

This makes the ref locking codepath to notice if an existing ref
overlaps with the ref we are creating.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agolock_ref_sha1(): do not sometimes error() and sometimes die().
Junio C Hamano [Sat, 30 Sep 2006 21:14:31 +0000 (14:14 -0700)]
lock_ref_sha1(): do not sometimes error() and sometimes die().

This cleans up the error path in the function so it does not
die() itself sometimes while signalling an error with NULL some
other times which was inconsistent and confusing.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agorefs: minor restructuring of cached refs data.
Junio C Hamano [Sat, 30 Sep 2006 19:37:37 +0000 (12:37 -0700)]
refs: minor restructuring of cached refs data.

Once we read packed and loose refs, for_each_ref() and friends
kept using them even after write_ref_sha1() and delete_ref()
changed the refs.  This adds invalidate_cached_refs() as a way
to flush the cached information.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoref locking: allow 'foo' when 'foo/bar' used to exist but not anymore.
Junio C Hamano [Sat, 30 Sep 2006 09:25:30 +0000 (02:25 -0700)]
ref locking: allow 'foo' when 'foo/bar' used to exist but not anymore.

It is normal to have .git/refs/heads/foo directory which is
empty after the last branch whose name starts with foo/ is
removed.  Make sure we notice this case and allow creation of
branch foo by removing the empty directory.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: tree view: hash_base and hash are now context sensitive
Luben Tuikov [Fri, 29 Sep 2006 16:57:43 +0000 (09:57 -0700)]
gitweb: tree view: hash_base and hash are now context sensitive

In tree view, by default, hash_base is HEAD and hash is the
entry equivalent.  Else the user had selected a hash_base or
hash, say by clicking on a revision or commit, in which case
those values are used.

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-diff -B output fix. v1.4.2.2
Junio C Hamano [Fri, 29 Sep 2006 09:06:24 +0000 (02:06 -0700)]
git-diff -B output fix.

Geert noticed that complete rewrite diff missed the usual a/ and b/
leading paths.  Pickaxe says it never worked, ever.

Embarrassing.

Signed-off-by: Junio C Hamano <junkio@cox.net>
(cherry picked from bc1a5807575b2f34538d4158834da6524a4fc1f7 commit)

18 years agofetch: Reset remote refs list each time fetch_main is called
Santi Béjar [Fri, 29 Sep 2006 18:05:40 +0000 (20:05 +0200)]
fetch: Reset remote refs list each time fetch_main is called

This prevents the fetch of the heads again in the second call of fetch_main.

Signed-off-by: Santi Béjar <sbejar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoRemove -fPIC which was only needed for Git.xs
Junio C Hamano [Fri, 29 Sep 2006 07:34:51 +0000 (00:34 -0700)]
Remove -fPIC which was only needed for Git.xs

The distinction between BASIC_ vs ALL_ is still kept, since it
is not Git.xs specific -- we could face the same issue when we
do other language bindings (e.g. Python).

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoFix approxidate() to understand 12:34 AM/PM are 00:34 and 12:34
Linus Torvalds [Fri, 29 Sep 2006 19:36:13 +0000 (12:36 -0700)]
Fix approxidate() to understand 12:34 AM/PM are 00:34 and 12:34

It just simplifies the whole thing to say

"hour = (hour % 12) + X"

where X is 12 for PM and 0 for AM.

It also fixes the "exact date" parsing, which didn't parse AM at all, and
as such would do the same "12:30 AM" means "12:30 24-hour-format" bug. Of
course, I hope that no exact dates use AM/PM anyway, but since we support
the PM format, let's just get it right.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-diff -B output fix.
Junio C Hamano [Fri, 29 Sep 2006 09:06:24 +0000 (02:06 -0700)]
git-diff -B output fix.

Geert noticed that complete rewrite diff missed the usual a/ and b/
leading paths.  Pickaxe says it never worked, ever.

Embarrassing.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMake cvsexportcommit remove files.
Robin Rosenberg [Thu, 28 Sep 2006 23:28:55 +0000 (01:28 +0200)]
Make cvsexportcommit remove files.

Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agodiff --stat: ensure at least one '-' for deletions, and one '+' for additions
Johannes Schindelin [Thu, 28 Sep 2006 15:37:39 +0000 (17:37 +0200)]
diff --stat: ensure at least one '-' for deletions, and one '+' for additions

The number of '-' and '+' is still linear. The idea is that
scaled-length := floor(a * length + b) with the following constraints: if
length == 1, scaled-length == 1, and the combined length of plusses
and minusses should not be larger than the width by a small margin. Thus,

a + b == 1

and
a * max_plusses + b + a * max_minusses + b = width + 1

The solution is

a * x + b = ((width - 1) * (x - 1) + max_change - 1)
 / (max_change - 1)

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agodiff --stat=width[,name-width]: allow custom diffstat output width.
Linus Torvalds [Thu, 28 Sep 2006 22:07:16 +0000 (15:07 -0700)]
diff --stat=width[,name-width]: allow custom diffstat output width.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: History: blob and tree are first, then commitdiff, etc
Luben Tuikov [Fri, 29 Sep 2006 00:21:07 +0000 (17:21 -0700)]
gitweb: History: blob and tree are first, then commitdiff, etc

Reorder link display in history to be consistent with other
list displays: log, shortlog, etc.  We now display:

blob | commitdiff
blob | commitdiff | diff_to_current

and

tree | commitdiff

Instead of the old history format where "blob" and "tree"
are between "commitdiff" and "diff_to_current" if present/
applicable.

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Remove redundant "commit" from history
Luben Tuikov [Fri, 29 Sep 2006 00:20:23 +0000 (17:20 -0700)]
gitweb: Remove redundant "commit" from history

Remove redundant "commit" from history -- it can be had
by clicking on the title of the commit.  This commit
makes visualization consistent with shortlog, log, etc.

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agohttp/ftp: optionally ask curl to not use EPSV command
Sasha Khapyorsky [Fri, 29 Sep 2006 00:10:44 +0000 (03:10 +0300)]
http/ftp: optionally ask curl to not use EPSV command

If http.noEPSV config variable is defined and true, or if
GIT_CURL_FTP_NO_EPSV environment variable is defined, disable using
of EPSV ftp command (PASV will be used instead). This is helpful with
some "poor" ftp servers which does not support EPSV mode.

Signed-off-by: Sasha Khapyorsky <sashak@voltaire.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Don't use quotemeta on internally generated strings
Luben Tuikov [Thu, 28 Sep 2006 23:51:43 +0000 (16:51 -0700)]
gitweb: Don't use quotemeta on internally generated strings

Do not use quotemeta on internally generated strings
such as filenames of snapshot, blobs, etc.
quotemeta quotes any characters not matching /A-Za-z_0-9/.
Which means that we get strings like this:

before: linux\-2\.6\.git\-5c2d97cb31fb77981797fec46230ca005b865799\.tar\.gz
after:  linux-2.6.git-5c2d97cb31fb77981797fec46230ca005b865799.tar.gz

This patch fixes this.

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Add snapshot to shortlog
Luben Tuikov [Thu, 28 Sep 2006 23:50:09 +0000 (16:50 -0700)]
gitweb: Add snapshot to shortlog

Add snapshot to each commit-row of shortlog.

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Factor out gitweb_have_snapshot()
Luben Tuikov [Thu, 28 Sep 2006 23:49:21 +0000 (16:49 -0700)]
gitweb: Factor out gitweb_have_snapshot()

Create gitweb_have_snapshot() which returns true
of snapshot is available and enabled, else false.

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Remove redundant "commit" link from shortlog
Luben Tuikov [Thu, 28 Sep 2006 23:48:40 +0000 (16:48 -0700)]
gitweb: Remove redundant "commit" link from shortlog

Remove the redundant "commit" link from shortlog.
It can be had by simply clicking on the entry title
of the row.

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: "alternate" starts with shade (i.e. 1)
Luben Tuikov [Thu, 28 Sep 2006 23:47:50 +0000 (16:47 -0700)]
gitweb: "alternate" starts with shade (i.e. 1)

When displaying a list of rows (difftree, shortlog, etc),
the first entry is now printed shaded, i.e. alternate is
initialized to 1, as opposed to non-shaded (alternate
initialized to 0).

This solves the problem when there is only one row to
display -- it is displayed shaded to visually indicate that
it is "active", part of a "list", etc.

(Compare this to the trivial case of more than one entry,
where the rows have alternating shade, thus suggesting
being part of a "list" of "active" entries, etc.)

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-format-patch: fix bug using -o in subdirectories
Matthias Lederhofer [Thu, 28 Sep 2006 19:55:35 +0000 (21:55 +0200)]
git-format-patch: fix bug using -o in subdirectories

This was introduced by me in commit v1.4.2.1-gc08e524.

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agodo not discard constness in interp_set_entry value argument
Alex Riesen [Thu, 28 Sep 2006 19:12:55 +0000 (21:12 +0200)]
do not discard constness in interp_set_entry value argument

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoFix approxidate() to understand more extended numbers
Linus Torvalds [Thu, 28 Sep 2006 19:14:27 +0000 (12:14 -0700)]
Fix approxidate() to understand more extended numbers

You can now say "5:35 PM yesterday", and approxidate() gets the right answer.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoClean up approxidate() in preparation for fixes
Linus Torvalds [Thu, 28 Sep 2006 19:12:28 +0000 (12:12 -0700)]
Clean up approxidate() in preparation for fixes

Our approxidate cannot handle simple times like "5 PM yesterday", and to
fix that, we will need to add some logic for number handling.  This just
splits that out into a function of its own (the same way the _real_ date
parsing works).

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agofix daemon.c compilation for NO_IPV6=1
Alex Riesen [Thu, 28 Sep 2006 18:48:14 +0000 (20:48 +0200)]
fix daemon.c compilation for NO_IPV6=1

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agodaemon: default to 256 for HOST_NAME_MAX if it is not defined
Johannes Schindelin [Thu, 28 Sep 2006 10:00:35 +0000 (12:00 +0200)]
daemon: default to 256 for HOST_NAME_MAX if it is not defined

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoformat-patch: use cwd as default output directory
Matthias Lederhofer [Fri, 22 Sep 2006 11:12:01 +0000 (13:12 +0200)]
format-patch: use cwd as default output directory

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agosvnimport: add support for parsing From: lines for author
Andy Whitcroft [Mon, 25 Sep 2006 11:08:13 +0000 (12:08 +0100)]
svnimport: add support for parsing From: lines for author

When commiting a non-signed off contribution you cannot just add
a Signed-off-by: from the author as they did not sign it off.
But if you then commit it, and necessarily sign it off yourself,
the change appears to be yours.  In this case it is common to use
the following form:

Commentry

From: originator <email>
Signed-of-by: me <my email>
Now that we have support for parsing Signed-off-by: for author
information it makes sense to handle From: as well.  This patch
adds a new -F which will handle From: lines in the comments.  It
may be used in combination with -S.

Signed-off-by: Andy Whitcroft <apw@shadowen.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoContributed bash completion support for core Git tools.
Junio C Hamano [Thu, 28 Sep 2006 09:31:25 +0000 (02:31 -0700)]
Contributed bash completion support for core Git tools.

This is a set of bash completion routines for many of the
popular core Git tools.  I wrote these routines from scratch
after reading the git-compl and git-compl-lib routines available
from the gitcompletion package at http://gitweb.hawaga.org.uk/
and found those to be lacking in functionality for some commands.
Consequently there may be some similarities but many differences.

Since these are completion routines only for tools shipped with
core Git and since bash is a popular shell on many of the native
core Git platforms (Linux, Mac OS X, Solaris, BSD) including these
routines as part of the stock package would probably be convienent
for many users.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'jl/virtual'
Junio C Hamano [Thu, 28 Sep 2006 06:56:55 +0000 (23:56 -0700)]
Merge branch 'jl/virtual'

* jl/virtual:
  Removed memory leaks from interpolation table uses.
  Cleaned up git-daemon virtual hosting support.

18 years agoUncomment test case: git branch c/d should barf if branch c exists.
Christian Couder [Thu, 28 Sep 2006 05:02:00 +0000 (07:02 +0200)]
Uncomment test case: git branch c/d should barf if branch c exists.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoWhen creating branch c/d check that branch c does not already exists.
Christian Couder [Thu, 28 Sep 2006 05:00:38 +0000 (07:00 +0200)]
When creating branch c/d check that branch c does not already exists.

With packed refs, there may not be a ".git/refs/heads/c" file
when branch c exists. And currently in this case, there is no check
to prevent creation of branch c/d.

This should probably be rewritten in C and done after the ref lock
has been taken to make sure no race exists though.

This is mainly to make all test cases in "t3210-pack-refs.sh" work.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoAdd pack-refs and show-ref test cases.
Christian Couder [Thu, 28 Sep 2006 04:58:03 +0000 (06:58 +0200)]
Add pack-refs and show-ref test cases.

Some of these test cases are from Junio.
One test case is commented out because it doesn't work right now.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'master' into lj/refs
Junio C Hamano [Thu, 28 Sep 2006 05:23:12 +0000 (22:23 -0700)]
Merge branch 'master' into lj/refs

* master: (72 commits)
  runstatus: do not recurse into subdirectories if not needed
  grep: fix --fixed-strings combined with expression.
  grep: free expressions and patterns when done.
  Corrected copy-and-paste thinko in ignore executable bit test case.
  An illustration of rev-list --parents --pretty=raw
  Allow git-checkout when on a non-existant branch.
  gitweb: Decode long title for link tooltips
  git-svn: Fix fetch --no-ignore-externals with GIT_SVN_NO_LIB=1
  Ignore executable bit when adding files if filemode=0.
  Remove empty ref directories that prevent creating a ref.
  Use const for interpolate arguments
  git-archive: update documentation
  Deprecate merge-recursive.py
  gitweb: fix over-eager application of esc_html().
  Allow '(no author)' in git-svn's authors file.
  Allow 'svn fetch' on '(no date)' revisions in Subversion.
  git-repack: allow git-repack to run in subdirectory
  Remove upload-tar and make git-tar-tree a thin wrapper to git-archive
  git-tar-tree: Move code for git-archive --format=tar to archive-tar.c
  git-tar-tree: Remove duplicate git_config() call
  ...

18 years agoMerge branch 'cc/branch-test'
Junio C Hamano [Thu, 28 Sep 2006 05:17:01 +0000 (22:17 -0700)]
Merge branch 'cc/branch-test'

* cc/branch-test:
  Remove empty ref directories that prevent creating a ref.

18 years agoMerge branch 'jc/for-each-ref' into jc/ref-locking
Junio C Hamano [Thu, 28 Sep 2006 05:00:54 +0000 (22:00 -0700)]
Merge branch 'jc/for-each-ref' into jc/ref-locking

* jc/for-each-ref:
  git-for-each-ref: improve the documentation on scripting modes

18 years agogitweb: Add history and blame to git_difftree_body()
Luben Tuikov [Thu, 28 Sep 2006 00:24:49 +0000 (17:24 -0700)]
gitweb: Add history and blame to git_difftree_body()

Add blame and history to Deleted files.
Add blame and history to Modified or Type changed files.
Add blame and history to Renamed or Copied files.

This allows us to do
blame->commit->blame->commit->blame->...
instead of
blame->commit->file->blame->commit->file->blame->...
which is longer and easier to get wrong.

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'sp/void'
Junio C Hamano [Thu, 28 Sep 2006 04:51:29 +0000 (21:51 -0700)]
Merge branch 'sp/void'

* sp/void:
  Allow git-checkout when on a non-existant branch.

18 years agoMerge branch 'jc/whitespace'
Junio C Hamano [Thu, 28 Sep 2006 04:50:42 +0000 (21:50 -0700)]
Merge branch 'jc/whitespace'

* jc/whitespace:
  git-apply: second war on whitespace.
  diff.c: second war on whitespace.

18 years agoMerge branch 'jc/repack'
Junio C Hamano [Thu, 28 Sep 2006 04:46:07 +0000 (21:46 -0700)]
Merge branch 'jc/repack'

* jc/repack:
  git-repack: allow git-repack to run in subdirectory
  repack: use only pack-objects, not rev-list.

18 years agoMerge branch 'jc/deprecate-recursive'
Junio C Hamano [Thu, 28 Sep 2006 04:41:24 +0000 (21:41 -0700)]
Merge branch 'jc/deprecate-recursive'

* jc/deprecate-recursive:
  Deprecate merge-recursive.py

18 years agorunstatus: do not recurse into subdirectories if not needed
Johannes Schindelin [Thu, 28 Sep 2006 00:44:30 +0000 (02:44 +0200)]
runstatus: do not recurse into subdirectories if not needed

This speeds up the case when you run git-status, having an untracked
subdirectory containing huge amounts of files.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Remove excessively redundant entries from git_difftree_body
Luben Tuikov [Thu, 28 Sep 2006 00:23:25 +0000 (17:23 -0700)]
gitweb: Remove excessively redundant entries from git_difftree_body

1) All entries on the left are blobs and clicking on them
leads to blobs.  No more diff or blob depending on what
happened (modified or mode changed) to the file -- this goes
to the right, in the "link" column.

2) Remove redundant "blob" from the link column on the right.
This can now be had by clicking on the entry itself.

This reduces and simplifies the code.

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoRevert "gitweb: extend blame to show links to diff and previous"
Luben Tuikov [Thu, 28 Sep 2006 00:22:03 +0000 (17:22 -0700)]
Revert "gitweb: extend blame to show links to diff and previous"

This concept is very fine, but it makes blame slow
across renames and across branches, so revert it.
There is a better way to do this.

This reverts commit 03d06a8e26f4fbd37800d1e1125c6ecf4c104466.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoRemoved memory leaks from interpolation table uses.
Jon Loeliger [Wed, 27 Sep 2006 16:16:10 +0000 (11:16 -0500)]
Removed memory leaks from interpolation table uses.

Clarified that parse_extra_args()s results in interpolation
table entries.  Removed a few trailing whitespace occurrences.

Signed-off-by: Jon Loeliger <jdl@jdl.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoCleaned up git-daemon virtual hosting support.
Jon Loeliger [Tue, 26 Sep 2006 14:47:43 +0000 (09:47 -0500)]
Cleaned up git-daemon virtual hosting support.

Standardized on lowercase hostnames from client.

Added interpolation values for the IP address, port and
canonical hostname of the server as it is contacted and
named by the client and passed in via the extended args.

Added --listen=host_or_ipaddr option suport.  Renamed port
variable as "listen_port" correspondingly as well.

Documented mutual exclusivity of --inetd option with
    --user, --group, --listen and --port options.

Added compat/inet_pton.c from Paul Vixie as needed.

Small memory leaks need to be cleaned up still.

Signed-off-by: Jon Loeliger <jdl@jdl.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogrep: fix --fixed-strings combined with expression.
Junio C Hamano [Wed, 27 Sep 2006 23:42:53 +0000 (16:42 -0700)]
grep: fix --fixed-strings combined with expression.

"git grep --fixed-strings -e GIT --and -e VERSION .gitignore"
misbehaved because we did not notice this needs to grab lines
that have the given two fixed strings at the same time.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogrep: free expressions and patterns when done.
Junio C Hamano [Wed, 27 Sep 2006 23:27:10 +0000 (16:27 -0700)]
grep: free expressions and patterns when done.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoreceive-pack: call setup_ident before git_config
Junio C Hamano [Wed, 27 Sep 2006 20:47:21 +0000 (13:47 -0700)]
receive-pack: call setup_ident before git_config

Otherwise we would end up getting values from Gecos which is often not
what people would want.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoCorrected copy-and-paste thinko in ignore executable bit test case.
Shawn Pearce [Wed, 27 Sep 2006 15:18:49 +0000 (11:18 -0400)]
Corrected copy-and-paste thinko in ignore executable bit test case.

This test should be testing update-index --add, not git-add as the
latter is implemented in terms of the former.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoAn illustration of rev-list --parents --pretty=raw
Junio C Hamano [Wed, 27 Sep 2006 19:34:37 +0000 (12:34 -0700)]
An illustration of rev-list --parents --pretty=raw

This script creates two separate histories, A and B, each of
which does:

      (A0, B0): create fileA and subdir/fileB
      (A1, B1): modify fileA
      (A2, B2): modify subdir/fileB

and then grafts them together to make B0 a child of A2.  So
the final history looks like (time flows from top to bottom):

true parent touches subdir?

A0 none yes (creates it)
        A1      A0 no
        A2 A1 yes
        B0 none yes (different from what's in A2)
        B1 B0 no
        B2 B1 yes

"git rev-list --parents --pretty=raw B2" would give "fake"
parents on the "commit " header lines while "parent " header
lines show the parent as recorded in the commit object (i.e. B0
appears to have A2 as its parent on "commit " header but there
is no "parent A2" header line in it).

When you have path limiters, we simplify history to omit
commits that do not affect the specified paths.

So "git rev-list --parents --pretty=raw B2 subdir" would return
"B2 B0 A2 A0" (because B1 and A1 do not touch the path).  When
it does so, the "commit " header lines have "fake" parents
(i.e. B2 appears to have B0 as its parent on "commit " header),
but you can still get the true parents by looking at "parent "
header.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agodiff --stat: color output.
Junio C Hamano [Wed, 27 Sep 2006 01:59:41 +0000 (18:59 -0700)]
diff --stat: color output.

Under --color option, diffstat shows '+' and '-' in the graph
the same color as added and deleted lines.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agodiff --stat: allow custom diffstat output width.
Junio C Hamano [Wed, 27 Sep 2006 01:53:02 +0000 (18:53 -0700)]
diff --stat: allow custom diffstat output width.

This adds two parameters to "diff --stat".

 . --stat-width=72 tells that the page should fit on 72-column output.

 . --stat-name-width=30 tells that the filename part is limited
   to 30 columns.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoTeach receive-pack about ref-log
Junio C Hamano [Wed, 27 Sep 2006 09:40:06 +0000 (02:40 -0700)]
Teach receive-pack about ref-log

This converts receive-pack to use the standard ref locking code
instead of its own.  As a side effect, it automatically records
the "push" event to ref-log if enabled.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoupdate a few Porcelain-ish for ref lock safety.
Junio C Hamano [Wed, 27 Sep 2006 09:06:31 +0000 (02:06 -0700)]
update a few Porcelain-ish for ref lock safety.

This updates the use of git-update-ref in git-branch, git-tag
and git-commit to make them safer in a few corner cases as
demonstration.

 - git-tag makes sure that the named tag does not exist, allows
   you to edit tag message and then creates the tag.  If a tag
   with the same name was created by somebody else in the
   meantime, it used to happily overwrote it.  Now it notices
   the situation.

 - git-branch -d and git-commit (for the initial commit) had the
   same issue but with smaller race window, which is plugged
   with this.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoupdate-ref: -d flag and ref creation safety.
Junio C Hamano [Wed, 27 Sep 2006 08:58:57 +0000 (01:58 -0700)]
update-ref: -d flag and ref creation safety.

This adds -d flag to update-ref to allow safe deletion of ref.
Before deleting it, the command checks if the given <oldvalue>
still matches the value the caller thought the ref contained.

Similarly, it also accepts 0{40} or an empty string as <oldvalue>
to allow safe creation of a new ref.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoClean-up lock-ref implementation
Junio C Hamano [Wed, 27 Sep 2006 08:09:18 +0000 (01:09 -0700)]
Clean-up lock-ref implementation

This drops "mustexist" parameter lock_ref_sha1() and lock_any_ref_forupdate()
functions take.

Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoMerge branch 'jc/lt-ref2-with-lt-refs' into jc/ref-locking
Junio C Hamano [Wed, 27 Sep 2006 07:53:29 +0000 (00:53 -0700)]
Merge branch 'jc/lt-ref2-with-lt-refs' into jc/ref-locking

* jc/lt-ref2-with-lt-refs:
  Fix show-ref usage for --dereference.
  Document git-show-ref [-s|--hash] option.
  Add man page for git-show-ref
  gitignore: git-show-ref is a generated file.
  Use Linus' show ref in "git-branch.sh".
  Add [-s|--hash] option to Linus' show-ref.
  Teach "git checkout" to use git-show-ref
  Add "git show-ref" builtin command

18 years agoMerge branch 'jc/for-each-ref-with-lt-refs' into jc/ref-locking
Junio C Hamano [Wed, 27 Sep 2006 07:53:16 +0000 (00:53 -0700)]
Merge branch 'jc/for-each-ref-with-lt-refs' into jc/ref-locking

* jc/for-each-ref-with-lt-refs:
  Add git-for-each-ref: helper for language bindings

18 years agoAllow git-checkout when on a non-existant branch.
Shawn Pearce [Mon, 25 Sep 2006 05:24:38 +0000 (01:24 -0400)]
Allow git-checkout when on a non-existant branch.

I've seen some users get into situtations where their HEAD
symbolic-ref is pointing at a non-existant ref.  (Sometimes this
happens during clone when the remote repository lacks a 'master'
branch.)  If this happens the user is unable to use git-checkout
to switch branches as there is no prior commit to merge from.

So instead of giving the user low-level errors about how HEAD
can't be resolved and how not a single revision was given change
the type of checkout to be a force and go through with the user's
request anyway.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Quote filename in HTTP Content-Disposition: header
Jakub Narebski [Mon, 25 Sep 2006 23:59:43 +0000 (01:59 +0200)]
gitweb: Quote filename in HTTP Content-Disposition: header

Finish work started by commit a2f3db2 (although not documented
in commit message) of quoting using quotemeta the filename in
HTTP -content_disposition header.

Just in case filename contains end of line character.

Also use consistent coding style to compute -content_disposition
parameter.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Add git_url subroutine, and use it to quote full URLs
Jakub Narebski [Mon, 25 Sep 2006 23:58:41 +0000 (01:58 +0200)]
gitweb: Add git_url subroutine, and use it to quote full URLs

Add git_url subroutine, which does what git_param did before commit
a2f3db2f5de2a3667b0e038aa65e3e097e642e7d, and is used to quote full
URLs, currently only $home_link.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Split validate_input into validate_pathname and validate_refname
Jakub Narebski [Mon, 25 Sep 2006 23:57:02 +0000 (01:57 +0200)]
gitweb: Split validate_input into validate_pathname and validate_refname

Split validate_input subroutine into validate_pathname which is used
for $project, $file_name and $file_parent parameters, and
validate_refname which is used for $hash, $hash_base, $hash_parent and
$hash_parent_base parameters.  Reintroduce validation of $file_name
and $file_parent parameters, removed in a2f3db2f

validate_pathname in addition to what validate_input did checks also
for doubled slashes and NUL character. It does not check if input is
textual hash, and does not check if all characters are from the
following set: [a-zA-Z0-9_\x80-\xff\ \t\.\/\-\+\#\~\%].

validate_refname first check if the input is textual hash, then checks
if it is valid pathname, then checks for invalid characters (according
to git-check-ref-format manpage). It does not check if all charactes
are from the [a-zA-Z0-9_\x80-\xff\ \t\.\/\-\+\#\~\%] set.

We do not have to validate pathnames we got from git.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Use "return" instead of "return undef" for some subs
Jakub Narebski [Mon, 25 Sep 2006 23:56:17 +0000 (01:56 +0200)]
gitweb: Use "return" instead of "return undef" for some subs

Use "return" instead of "return undef" when subroutine can return, or
always return, non-scalar (list) value.

Other places are left as is.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Strip trailing slashes from $path in git_get_hash_by_path
Jakub Narebski [Mon, 25 Sep 2006 23:54:24 +0000 (01:54 +0200)]
gitweb: Strip trailing slashes from $path in git_get_hash_by_path

It also removes unused local variable $tree

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: extend blame to show links to diff and previous
Luben Tuikov [Tue, 26 Sep 2006 23:45:31 +0000 (16:45 -0700)]
gitweb: extend blame to show links to diff and previous

git_blame2() now has two more columns, "Prev" and "Diff",
before the "Commit" column, as follows:

Prev Diff Commit Line Data
SHA     Diff    SHA        N    ...
...

The "Prev" column shows the SHA of the parent commit,
between which this line changed.  Clicking on it shows the
blame of the file as of the parent commit, for that line.

So clicking repeatedly on "Prev" would show you the blame
of that file, from the point of view of the changes
of that particular line whose "Prev" you're clicking on.

The "Diff" column shows "Diff" which is a link to blobdiff
between "Prev" and "Commit" commits _for that line_.

So clicking on "Diff" would show you the blobdiff (HTML)
between the parent commit and this commit which changed
that particular line.

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Decode long title for link tooltips
Yasushi SHOJI [Wed, 27 Sep 2006 03:04:10 +0000 (12:04 +0900)]
gitweb: Decode long title for link tooltips

This is a simple one liner to decode long title string in perl's
internal form to utf-8 for link tooltips.

This is not crucial if the commit message is all in ASCII, however, if
you decide to use other encoding, such as UTF-8, tooltips ain't
readable any more.

Signed-off-by: Yasushi SHOJI <yashi@atmark-techno.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogitweb: Remove redundant "tree" link
Luben Tuikov [Tue, 26 Sep 2006 19:45:37 +0000 (12:45 -0700)]
gitweb: Remove redundant "tree" link

In "tree" view, remove redundant "tree" link in the tree
listing.  It is identical to simply clicking on the tree
entry itself.

Signed-off-by: Luben Tuikov <ltuikov@yahoo.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agogit-svn: Fix fetch --no-ignore-externals with GIT_SVN_NO_LIB=1
Sergey Vlasov [Tue, 26 Sep 2006 09:42:55 +0000 (13:42 +0400)]
git-svn: Fix fetch --no-ignore-externals with GIT_SVN_NO_LIB=1

When using Subversion 1.3.1 without Perl bindings (GIT_SVN_NO_LIB=1),
"git-svn fetch --no-ignore-externals" fails with errors like:

  Tree (.../.git/svn/git-svn/tree) is not clean:
  X      directory_with_external

In this case the 'X' lines in the "svn status" output are not a sign
of unclean tree, and therefore should be ignored.

Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoIgnore executable bit when adding files if filemode=0.
Shawn Pearce [Wed, 27 Sep 2006 05:21:19 +0000 (01:21 -0400)]
Ignore executable bit when adding files if filemode=0.

If the user has configured core.filemode=0 then we shouldn't set
the execute bit in the index when adding a new file as the user
has indicated that the local filesystem can't be trusted.

This means that when adding files that should be marked executable
in a repository with core.filemode=0 the user must perform a
'git update-index --chmod=+x' on the file before committing the
addition.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
18 years agoRemove empty ref directories that prevent creating a ref.
Christian Couder [Tue, 26 Sep 2006 05:23:37 +0000 (07:23 +0200)]
Remove empty ref directories that prevent creating a ref.

This patch also adds test cases from Linus and Junio.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>