Code

git.git
17 years agoMerge branch 'js/bundle'
Junio C Hamano [Wed, 28 Feb 2007 22:38:36 +0000 (14:38 -0800)]
Merge branch 'js/bundle'

* js/bundle:
  bundle: reword missing prerequisite error message
  git-bundle: record commit summary in the prerequisite data
  git-bundle: fix 'create --all'
  git-bundle: avoid fork() in verify_bundle()
  git-bundle: assorted fixes
  Add git-bundle: move objects and references by archive

17 years agoMerge branch 'maint'
Junio C Hamano [Wed, 28 Feb 2007 22:18:57 +0000 (14:18 -0800)]
Merge branch 'maint'

* maint:
  Start preparing Release Notes for 1.5.0.3
  Documentation: git-remote add [-t <branch>] [-m <branch>] [-f] name url
  Include config.mak in doc/Makefile
  git.el: Set the default commit coding system from the repository config.
  git-archimport: support empty summaries, put summary on a single line.
  http-push.c::lock_remote(): validate all remote refs.
  git-cvsexportcommit: don't cleanup .msg if not yet committed to cvs.

17 years agoStart preparing Release Notes for 1.5.0.3
Junio C Hamano [Wed, 28 Feb 2007 22:17:45 +0000 (14:17 -0800)]
Start preparing Release Notes for 1.5.0.3

17 years agoDocumentation: git-remote add [-t <branch>] [-m <branch>] [-f] name url
Junio C Hamano [Wed, 28 Feb 2007 22:05:42 +0000 (14:05 -0800)]
Documentation: git-remote add [-t <branch>] [-m <branch>] [-f] name url

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoInclude config.mak in doc/Makefile
Uwe Kleine-König [Wed, 28 Feb 2007 20:57:42 +0000 (21:57 +0100)]
Include config.mak in doc/Makefile

config.mak.autogen is already there.  Without this change it is not
possible to override mandir in config.mak.

Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit.el: Set the default commit coding system from the repository config.
Alexandre Julliard [Wed, 28 Feb 2007 19:59:48 +0000 (20:59 +0100)]
git.el: Set the default commit coding system from the repository config.

If not otherwise specified, take the default coding system for commits
from the 'i18n.commitencoding' repository configuration value.

Also set the buffer-file-coding-system variable in the log buffer to
make the selected coding system visible on the modeline.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-archimport: support empty summaries, put summary on a single line.
Paolo Bonzini [Wed, 28 Feb 2007 20:02:02 +0000 (21:02 +0100)]
git-archimport: support empty summaries, put summary on a single line.

Don't fail if the summary line in an arch commit is empty.  In this case,
try to use the first line in the commit message followed by an ellipsis.
In addition, if the summary is multi-line, it is joined on a single line.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agohttp-push.c::lock_remote(): validate all remote refs.
Eygene Ryabinkin [Wed, 28 Feb 2007 20:12:02 +0000 (12:12 -0800)]
http-push.c::lock_remote(): validate all remote refs.

Starting from offset 11 might have been good back when it was
only used for updating "refs/heads/*", but it is used to update
"info/refs" and "refs/tags/*" as well.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoindex_fd(): convert blob only if it is a regular file.
Junio C Hamano [Wed, 28 Feb 2007 19:57:39 +0000 (11:57 -0800)]
index_fd(): convert blob only if it is a regular file.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoindex_fd(): pass optional path parameter as hint for blob conversion
Junio C Hamano [Wed, 28 Feb 2007 19:52:04 +0000 (11:52 -0800)]
index_fd(): pass optional path parameter as hint for blob conversion

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoindex_fd(): use enum object_type instead of type name string.
Junio C Hamano [Wed, 28 Feb 2007 19:45:56 +0000 (11:45 -0800)]
index_fd(): use enum object_type instead of type name string.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'np/types'
Junio C Hamano [Wed, 28 Feb 2007 19:58:27 +0000 (11:58 -0800)]
Merge branch 'np/types'

* np/types:
  Cleanup check_valid in commit-tree.
  make sure enum object_type is signed
  get rid of lookup_object_type()
  convert object type handling from a string to a number
  formalize typename(), and add its reverse type_from_string()
  sha1_file.c: don't ignore an error condition in sha1_loose_object_info()
  sha1_file.c: cleanup "offset" usage
  sha1_file.c: cleanup hdr usage

17 years agogit-cvsexportcommit: don't cleanup .msg if not yet committed to cvs.
Gerrit Pape [Wed, 28 Feb 2007 12:35:39 +0000 (12:35 +0000)]
git-cvsexportcommit: don't cleanup .msg if not yet committed to cvs.

Unless the -c option is given, and the commit to cvs was successful,
.msg shouldn't be deleted to be able to run the command suggested by
git-cvsexportcommit.

See http://bugs.debian.org/412732

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'mc/sendmail'
Junio C Hamano [Wed, 28 Feb 2007 06:23:40 +0000 (22:23 -0800)]
Merge branch 'mc/sendmail'

* mc/sendmail:
  git-send-email: abort/usage on bad option

17 years agoMerge branch 'js/diff-ni' (early part)
Junio C Hamano [Wed, 28 Feb 2007 06:18:22 +0000 (22:18 -0800)]
Merge branch 'js/diff-ni' (early part)

* 'js/diff-ni' (early part):
  diff --no-index: also imitate the exit status of diff(1)
  Fix typo: do not show name1 when name2 fails
  Teach git-diff-files the new option `--no-index`
  run_diff_{files,index}(): update calling convention.
  update-index: do not die too early in a read-only repository.
  git-status: do not be totally useless in a read-only repository.

17 years agoMerge branch 'maint'
Junio C Hamano [Wed, 28 Feb 2007 06:15:42 +0000 (22:15 -0800)]
Merge branch 'maint'

* maint:
  builtin-fmt-merge-msg: fix bugs in --file option
  index-pack: Loop over pread until data loading is complete.
  blameview: Fix the browse behavior in blameview
  Fix minor typos/grammar in user-manual.txt
  Correct ordering in git-cvsimport's option documentation
  git-show: Reject native ref
  Fix git-show man page formatting in the EXAMPLES section

17 years agobuiltin-fmt-merge-msg: fix bugs in --file option
Michael Coleman [Wed, 28 Feb 2007 05:44:42 +0000 (23:44 -0600)]
builtin-fmt-merge-msg: fix bugs in --file option

If --file's argument is missing, don't crash.  If it cannot be opened,
die with an error message.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoindex-pack: Loop over pread until data loading is complete.
Shawn O. Pearce [Wed, 28 Feb 2007 04:47:19 +0000 (23:47 -0500)]
index-pack: Loop over pread until data loading is complete.

A filesystem might not be able to completely supply our pread
request in one system call, such as if we are reading data from a
network file system and the requested length is just simply huge.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoblameview: Fix the browse behavior in blameview
Aneesh Kumar [Mon, 26 Feb 2007 08:31:57 +0000 (14:01 +0530)]
blameview: Fix the browse behavior in blameview

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoCleanup check_valid in commit-tree.
Shawn O. Pearce [Tue, 27 Feb 2007 15:00:33 +0000 (10:00 -0500)]
Cleanup check_valid in commit-tree.

This routine should be using the object_type enum rather than a
string comparsion, as the expected type is always supplied and is
known at compile time.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agomake sure enum object_type is signed
Nicolas Pitre [Wed, 28 Feb 2007 01:38:31 +0000 (20:38 -0500)]
make sure enum object_type is signed

This allows for keeping the common idiom which consists of using
negative values to signal error conditions by ensuring that the enum
will be a signed type.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-send-email: abort/usage on bad option
Michael Coleman [Wed, 28 Feb 2007 04:47:54 +0000 (22:47 -0600)]
git-send-email: abort/usage on bad option

Instead of proceeding, abort and give usage message when a bad option
is seen.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix minor typos/grammar in user-manual.txt
Michael Coleman [Wed, 28 Feb 2007 04:13:09 +0000 (22:13 -0600)]
Fix minor typos/grammar in user-manual.txt

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoCorrect ordering in git-cvsimport's option documentation
Michael Poole [Wed, 28 Feb 2007 03:27:44 +0000 (22:27 -0500)]
Correct ordering in git-cvsimport's option documentation

A pair of commits on January 8th added option documentation (for -a,
-S and -L) in the middle of the documentation for the -A option.  This
makes -A's documentation contiguous again.

Signed-off-by: Michael Poole <mdpoole@troilus.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-show: Reject native ref
Linus Torvalds [Wed, 28 Feb 2007 00:22:52 +0000 (16:22 -0800)]
git-show: Reject native ref

So when we do

git show v1.4.4..v1.5.0

that's an illogical thing to do, since "git show" is defined to be a
non-revision-walking action, which means the range operator be pointless
and wrong. The fact that we happily accept it (and then _only_ show
v1.5.0, which is the positive end of the range) is quite arguably not very
logical.

We should complain, and say that you can only do "no_walk" with positive
refs. Negative object refs really don't make any sense unless you walk
the obejct list (or you're "git diff" and know about ranges explicitly).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocvsserver: Make always-binary mode a config file option
Andy Parkins [Tue, 27 Feb 2007 13:46:55 +0000 (13:46 +0000)]
cvsserver: Make always-binary mode a config file option

The config option gitcvs.allbinary may be set to force all entries to
get the -kb flag.

In the future the gitattributes system will probably be a more
appropriate way of doing this, but that will easily slot in as the
entries lines sent to the CVS client now have their kopts set via the
function kopts_from_path().

In the interim it might be better to not just have a all-or-nothing
approach, but rather detect based on file extension (or file contents?).
That would slot in easily here as well.  However, I personally prefer
everything to be binary-safe, so I just switch the switch.

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocvsserver: Remove trailing "\n" from commithash in checkin function
Andy Parkins [Tue, 27 Feb 2007 12:49:09 +0000 (12:49 +0000)]
cvsserver: Remove trailing "\n" from commithash in checkin function

The commithash for updating the ref is obtained from a call to
git-commit-tree.  However, it was returned (and stored) with the
trailing newline.  This meant that the later call to git-update-ref that
was trying to update to $commithash was including the newline in the
parameter - obviously that hash would never exist, and so git-update-ref
would always fail.

The solution is to chomp() the commithash as soon as it is returned by
git-commit-tree.

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMake 'cvs ci' lockless in git-cvsserver by using git-update-ref
Junio C Hamano [Wed, 21 Feb 2007 05:54:39 +0000 (21:54 -0800)]
Make 'cvs ci' lockless in git-cvsserver by using git-update-ref

This makes "ci" codepath lockless by following the usual
"remember the tip, do your thing, then compare and swap at the
end" update pattern using update-ref.  Incidentally, by updating
the code that reads where the tip of the head is to use
show-ref, it makes it safe to use in a repository whose refs are
pack-pruned.

I noticed that other parts of the program are not yet pack-refs
safe, but tried to keep the changes to the minimum.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix git-show man page formatting in the EXAMPLES section
Theodore Tso [Tue, 27 Feb 2007 15:43:28 +0000 (10:43 -0500)]
Fix git-show man page formatting in the EXAMPLES section

Fix asciidoc markup so that the man page is properly formatted in the
EXAMPLES section.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoget rid of lookup_object_type()
Nicolas Pitre [Mon, 26 Feb 2007 19:56:00 +0000 (14:56 -0500)]
get rid of lookup_object_type()

This function is called only once in the whole source tree.  Let's move
its code inline instead, which is also in the spirit of removing as much
object type char arrays as possible (not that this patch does anything for
that but at least it is now a local matter).

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoconvert object type handling from a string to a number
Nicolas Pitre [Mon, 26 Feb 2007 19:55:59 +0000 (14:55 -0500)]
convert object type handling from a string to a number

We currently have two parallel notation for dealing with object types
in the code: a string and a numerical value.  One of them is obviously
redundent, and the most used one requires more stack space and a bunch
of strcmp() all over the place.

This is an initial step for the removal of the version using a char array
found in object reading code paths.  The patch is unfortunately large but
there is no sane way to split it in smaller parts without breaking the
system.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoformalize typename(), and add its reverse type_from_string()
Nicolas Pitre [Mon, 26 Feb 2007 19:55:58 +0000 (14:55 -0500)]
formalize typename(), and add its reverse type_from_string()

Sometime typename() is used, sometimes type_names[] is accessed directly.
Let's enforce typename() all the time which allows for validating the
type.

Also let's add a function to go from a name to a type and use it instead
of manual memcpy() when appropriate.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agosha1_file.c: don't ignore an error condition in sha1_loose_object_info()
Nicolas Pitre [Mon, 26 Feb 2007 19:55:57 +0000 (14:55 -0500)]
sha1_file.c: don't ignore an error condition in sha1_loose_object_info()

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agosha1_file.c: cleanup "offset" usage
Nicolas Pitre [Mon, 26 Feb 2007 19:55:56 +0000 (14:55 -0500)]
sha1_file.c: cleanup "offset" usage

First there are too many offsets there and it is getting confusing.
So 'offset' is now 'curpos' to distinguish from other offsets like
'obj_offset'.

Then structures like x = foo(x, &y) are now done as y = foo(&x).
It looks more natural that the result y be returned directly and
x be passed as reference to be updated in place.  This has the effect
of reducing some line length and removing a few, needing a bit less
stack space, and it even reduces the compiled code size.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agosha1_file.c: cleanup hdr usage
Nicolas Pitre [Mon, 26 Feb 2007 19:55:55 +0000 (14:55 -0500)]
sha1_file.c: cleanup hdr usage

Let's have hdr be a simple char pointer/array when possible, and let's
reduce its storage to 32 bytes.  Especially for sha1_loose_object_info()
where 128 bytes is way excessive and wastes extra CPU cycles inflating.

The object type is already restricted to 10 bytes in parse_sha1_header()
and the size, even if it is 64 bits, will fit in 20 decimal numbers.  So
32 bytes is plenty.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Tue, 27 Feb 2007 09:33:52 +0000 (01:33 -0800)]
Merge branch 'maint'

* maint:
  git-apply: do not fix whitespaces on context lines.
  diff --cc: integer overflow given a 2GB-or-larger file
  mailinfo: do not get confused with logical lines that are too long.

17 years agogit-apply: do not fix whitespaces on context lines.
Junio C Hamano [Tue, 27 Feb 2007 09:31:42 +0000 (01:31 -0800)]
git-apply: do not fix whitespaces on context lines.

Internal function apply_line() is called to copy both context lines
and added lines to the output buffer, while possibly fixing the
whitespace breakages depending on --whitespace=strip settings.
However, it did its fix-up on both context lines and added lines.

This resulted in two symptoms:

 (1) The number of lines reported to have been fixed up included
     these context lines.

 (2) However, the lines actually shown were limited to the added
     lines that had whitespace breakages.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agodiff --cc: integer overflow given a 2GB-or-larger file
Jim Meyering [Mon, 26 Feb 2007 23:11:35 +0000 (00:11 +0100)]
diff --cc: integer overflow given a 2GB-or-larger file

Few of us use git to compare or even version-control 2GB files,
but when we do, we'll want it to work.

Reading a recent patch, I noticed two lines like this:

   int len = st.st_size;

Instead of "int", that should be "size_t".  Otherwise, in the
non-symlink case, with 64-bit size_t, if the file's size is 2GB,
the following xmalloc will fail:

   result = xmalloc(len + 1);

trying to allocate 2^64 - 2^31 + 1 bytes (assuming sign-extension
in the int-to-size_t promotion).  And even if it didn't fail, the
subsequent "result[len] = 0;" would be equivalent to an unpleasant
"result[-2147483648] = 0;"

The other nearby "int"-declared size variable, sz, should also be of
type size_t, for the same reason.  If sz ever wraps around and becomes
negative, xread will corrupt memory _before_ the "result" buffer.

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agomailinfo: do not get confused with logical lines that are too long.
Linus Torvalds [Mon, 26 Feb 2007 19:10:59 +0000 (11:10 -0800)]
mailinfo: do not get confused with logical lines that are too long.

It basically considers all the continuation lines to be lines of their
own, and if the total line is bigger than what we can fit in it, we just
truncate the result rather than stop in the middle and then get confused
when we try to parse the "next" line (which is just the remainder of the
first line).

[jc: added test, and tightened boundary a bit per list discussion.]

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agodiff --no-index: also imitate the exit status of diff(1)
Johannes Schindelin [Sun, 25 Feb 2007 22:34:54 +0000 (23:34 +0100)]
diff --no-index: also imitate the exit status of diff(1)

diff sets the exit status to 0 when no changes were found, to 1
when changes were found, and 2 means error.

We imitate this to be able to use "git diff" in the test scripts.
(Actually, keeping in line with the rest of git, -1 is returned
on error, which corresponds to an exit status 255).

To find out if the diff is not empty, a member called
"found_changes" was introduced in struct diff_options, which is
set in builtin_diff() and fn_out_consume().

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'master' into js/diff-ni
Junio C Hamano [Mon, 26 Feb 2007 09:20:42 +0000 (01:20 -0800)]
Merge branch 'master' into js/diff-ni

* master: (201 commits)
  Documentation: link in 1.5.0.2 material to the top documentation page.
  Documentation: document remote.<name>.tagopt
  GIT 1.5.0.2
  git-remote: support remotes with a dot in the name
  Documentation: describe "-f/-t/-m" options to "git-remote add"
  diff --cc: fix display of symlink conflicts during a merge.
  merge-recursive: fix longstanding bug in merging symlinks
  merge-index: fix longstanding bug in merging symlinks
  diff --cached: give more sensible error message when HEAD is yet to be created.
  Update tests to use test-chmtime
  Add test-chmtime: a utility to change mtime on files
  Add Release Notes to prepare for 1.5.0.2
  Allow arbitrary number of arguments to git-pack-objects
  rerere: do not deal with symlinks.
  rerere: do not skip two conflicted paths next to each other.
  Don't modify CREDITS-FILE if it hasn't changed.
  diff-patch: Avoid emitting double-slashes in textual patch.
  Reword git-am 3-way fallback failure message.
  Limit filename for format-patch
  core.legacyheaders: Use the description used in RelNotes-1.5.0
  ...

17 years agoDocumentation: link in 1.5.0.2 material to the top documentation page.
Junio C Hamano [Mon, 26 Feb 2007 09:16:01 +0000 (01:16 -0800)]
Documentation: link in 1.5.0.2 material to the top documentation page.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocumentation: document remote.<name>.tagopt
Aneesh Kumar K.V [Sat, 24 Feb 2007 15:32:56 +0000 (21:02 +0530)]
Documentation: document remote.<name>.tagopt

Update config.txt with info regarding tagopt option

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Mon, 26 Feb 2007 08:32:19 +0000 (00:32 -0800)]
Merge branch 'maint'

* maint:
  GIT 1.5.0.2
  git-remote: support remotes with a dot in the name
  Documentation: describe "-f/-t/-m" options to "git-remote add"
  diff --cc: fix display of symlink conflicts during a merge.

17 years agoGIT 1.5.0.2 v1.5.0.2
Junio C Hamano [Mon, 26 Feb 2007 07:58:50 +0000 (23:58 -0800)]
GIT 1.5.0.2

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-remote: support remotes with a dot in the name
Pavel Roskin [Wed, 21 Feb 2007 05:03:36 +0000 (00:03 -0500)]
git-remote: support remotes with a dot in the name

[jc: the original from Pavel was limiting the variable names to only
 fetch and url, but I loosened it to take valid variable names.]
[jc: cherry-picked from 'master', since people seem to be reinventing
 this many times.]

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoDocumentation: describe "-f/-t/-m" options to "git-remote add"
Junio C Hamano [Mon, 26 Feb 2007 07:26:11 +0000 (23:26 -0800)]
Documentation: describe "-f/-t/-m" options to "git-remote add"

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agodiff --cc: fix display of symlink conflicts during a merge.
Junio C Hamano [Mon, 26 Feb 2007 06:24:47 +0000 (22:24 -0800)]
diff --cc: fix display of symlink conflicts during a merge.

"git-diff-files --cc" to show conflicts during merge did not pass
the correct mode information for the working tree down, and showed
bogus combined diff.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Mon, 26 Feb 2007 03:10:13 +0000 (19:10 -0800)]
Merge branch 'maint'

* maint:
  merge-recursive: fix longstanding bug in merging symlinks
  merge-index: fix longstanding bug in merging symlinks

17 years agoMerge branch 'jc/merge-symlink' into maint
Junio C Hamano [Mon, 26 Feb 2007 03:09:59 +0000 (19:09 -0800)]
Merge branch 'jc/merge-symlink' into maint

* jc/merge-symlink:
  merge-recursive: fix longstanding bug in merging symlinks
  merge-index: fix longstanding bug in merging symlinks

17 years agomerge-recursive: fix longstanding bug in merging symlinks
Junio C Hamano [Mon, 26 Feb 2007 02:42:07 +0000 (18:42 -0800)]
merge-recursive: fix longstanding bug in merging symlinks

Commit 3af244ca added unlink(2) before running symlink(2) to
update the working tree with the merge result, but it was
unlinking a wrong path.  This resulted in loss of the path
pointed by a symlink.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agomerge-index: fix longstanding bug in merging symlinks
Junio C Hamano [Mon, 26 Feb 2007 02:17:15 +0000 (18:17 -0800)]
merge-index: fix longstanding bug in merging symlinks

Ancient commit e2b6a9d0 added code to pass "file modes" from
merge-index to merge-one-file, and then later commit 54dd99a1
wanted to make sure we do not end up creating a nonsense symlink
that points at a path whose name contains conflict markers.

However, nobody noticed that the code in merge-index added by
e2b6a9d0 were stripping the S_IFMT bits and the code in 54dd99a1
was meaningless.  This fixes it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoFix typo: do not show name1 when name2 fails
Johannes Schindelin [Sun, 25 Feb 2007 22:34:31 +0000 (23:34 +0100)]
Fix typo: do not show name1 when name2 fails

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agodiff --cached: give more sensible error message when HEAD is yet to be created.
Junio C Hamano [Sun, 25 Feb 2007 06:26:33 +0000 (22:26 -0800)]
diff --cached: give more sensible error message when HEAD is yet to be created.

It is not like the user said 'diff --cached HEAD', so complaining about
HEAD not being a valid commit, while technically might be correct, is
not very helpful.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoUpdate tests to use test-chmtime
Eric Wong [Sun, 25 Feb 2007 00:59:52 +0000 (16:59 -0800)]
Update tests to use test-chmtime

test-lib:
  Make sure test-chmtime has been built before starting.

t4200-rerere:
  Removed non-portable date dependency and avoid touch
  Avoid "test -a" which isn't portable, either

lib-git-svn:
  Use test-chmtime instead of Perl one-liner to poke

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAdd test-chmtime: a utility to change mtime on files
Eric Wong [Sun, 25 Feb 2007 02:18:22 +0000 (18:18 -0800)]
Add test-chmtime: a utility to change mtime on files

This is intended to be a portable replacement for our usage
of date(1), touch(1), and Perl one-liners in tests.

Usage: test-chtime (+|=|-|=+|=-)<seconds> <file>..."

  '+' increments the mtime on the files by <seconds>
  '-' decrements the mtime on the files by <seconds>
  '=' sets the mtime on the file to exactly <seconds>
  '=+' and '=-' sets the mtime on the file to <seconds> after or
      before the current time.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge branch 'maint'
Junio C Hamano [Sun, 25 Feb 2007 19:08:47 +0000 (11:08 -0800)]
Merge branch 'maint'

* maint:
  Add Release Notes to prepare for 1.5.0.2
  Allow arbitrary number of arguments to git-pack-objects
  rerere: do not deal with symlinks.
  rerere: do not skip two conflicted paths next to each other.
  Don't modify CREDITS-FILE if it hasn't changed.

17 years agoAdd Release Notes to prepare for 1.5.0.2
Junio C Hamano [Sun, 25 Feb 2007 18:53:42 +0000 (10:53 -0800)]
Add Release Notes to prepare for 1.5.0.2

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoAllow arbitrary number of arguments to git-pack-objects
Roland Dreier [Sun, 25 Feb 2007 17:34:27 +0000 (09:34 -0800)]
Allow arbitrary number of arguments to git-pack-objects

If a repository ever gets in a situation where there are too many
packs (more than 60 or so), perhaps because of frequent use of
git-fetch -k or incremental git-repack, then it becomes impossible to
fully repack the repository with git-repack -a.  That command just
dies with the cryptic message

    fatal: too many internal rev-list options

This message comes from git-pack-objects, which is passed one command
line option like --unpacked=pack-<SHA1>.pack for each pack file to be
repacked.  However, the current code has a static limit of 64 command
line arguments and just aborts if more arguments are passed to it.

Fix this by dynamically allocating the array of command line
arguments, and doubling the size each time it overflows.

Signed-off-by: Roland Dreier <roland@digitalvampire.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agorerere: do not deal with symlinks.
Junio C Hamano [Sun, 25 Feb 2007 09:29:43 +0000 (01:29 -0800)]
rerere: do not deal with symlinks.

Who would use multi-line symlinks that would benefit from rerere?
Just ignore them.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agorerere: do not skip two conflicted paths next to each other.
Junio C Hamano [Sun, 25 Feb 2007 09:24:34 +0000 (01:24 -0800)]
rerere: do not skip two conflicted paths next to each other.

The code forgot to take the for (;;) loop control into account,
incrementing the index once too many.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoMerge git://repo.or.cz/git-gui into maint
Junio C Hamano [Sun, 25 Feb 2007 07:33:12 +0000 (23:33 -0800)]
Merge git://repo.or.cz/git-gui into maint

* git://repo.or.cz/git-gui:
  Don't modify CREDITS-FILE if it hasn't changed.

17 years agoDon't modify CREDITS-FILE if it hasn't changed.
Junio C Hamano [Sun, 25 Feb 2007 07:18:11 +0000 (02:18 -0500)]
Don't modify CREDITS-FILE if it hasn't changed.

We should always avoid rewriting a built file during `make install`
if nothing has changed since `make all`.  This is to help support
the typical installation process of compiling a package as yourself,
then installing it as root.

Forcing CREDITS-FILE to be always be rebuilt in the Makefile means
that CREDITS-GEN needs to check for a change and only update
CREDITS-FILE if the file content actually differs.  After all,
content is king in Git.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoEvil Merge branch 'jc/status' (early part) into js/diff-ni
Junio C Hamano [Sat, 24 Feb 2007 10:20:13 +0000 (02:20 -0800)]
Evil Merge branch 'jc/status' (early part) into js/diff-ni

* 'jc/status' (early part):
  run_diff_{files,index}(): update calling convention.
  update-index: do not die too early in a read-only repository.
  git-status: do not be totally useless in a read-only repository.

This is to resolve semantic conflict (which is not textual) that
changes the calling convention of run_diff_files() early.

17 years agoMerge branch 'js/apply'
Junio C Hamano [Sat, 24 Feb 2007 10:00:32 +0000 (02:00 -0800)]
Merge branch 'js/apply'

* js/apply:
  apply: make --verbose a little more useful

17 years agoMerge branch 'js/no-limit-boundary'
Junio C Hamano [Sat, 24 Feb 2007 09:47:56 +0000 (01:47 -0800)]
Merge branch 'js/no-limit-boundary'

* js/no-limit-boundary:
  rev-list --max-age, --max-count: support --boundary

17 years agoMerge branch 'js/etc-config'
Junio C Hamano [Sat, 24 Feb 2007 09:43:28 +0000 (01:43 -0800)]
Merge branch 'js/etc-config'

* js/etc-config:
  Make tests independent of global config files
  config: read system-wide defaults from /etc/gitconfig

17 years agoMerge branch 'maint'
Junio C Hamano [Sat, 24 Feb 2007 09:42:06 +0000 (01:42 -0800)]
Merge branch 'maint'

* maint:
  diff-patch: Avoid emitting double-slashes in textual patch.
  Reword git-am 3-way fallback failure message.
  Limit filename for format-patch
  core.legacyheaders: Use the description used in RelNotes-1.5.0
  git-show-ref --verify: Fail if called without a reference

Conflicts:

builtin-show-ref.c
diff.c

17 years agodiff-patch: Avoid emitting double-slashes in textual patch.
Junio C Hamano [Fri, 23 Feb 2007 11:44:30 +0000 (03:44 -0800)]
diff-patch: Avoid emitting double-slashes in textual patch.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agobundle: reword missing prerequisite error message
Junio C Hamano [Sat, 24 Feb 2007 09:16:58 +0000 (01:16 -0800)]
bundle: reword missing prerequisite error message

As suggested by Mark Levedahl.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoReword git-am 3-way fallback failure message.
Junio C Hamano [Sat, 24 Feb 2007 09:05:27 +0000 (01:05 -0800)]
Reword git-am 3-way fallback failure message.

When the blobs recorded on the index lines in the patch as pre-image
blobs are not found in the repository, "git-am" punted saying
that the index line does not record anything useful.  This was not
clear enough -- the index line does have something useful but the
problem was that it was not useful in _that_ repository.

Reword the message as Francis Moreau suggests.

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agoLimit filename for format-patch
Robin Rosenberg [Fri, 23 Feb 2007 22:27:58 +0000 (23:27 +0100)]
Limit filename for format-patch

Badly formatted commits may have very long comments. This causes
git-format-patch to fail. To avoid that, truncate the filename
to a value we believe will always work.

Err out if the patch file cannot be created.

Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agocore.legacyheaders: Use the description used in RelNotes-1.5.0
Santi Béjar [Fri, 23 Feb 2007 16:03:43 +0000 (17:03 +0100)]
core.legacyheaders: Use the description used in RelNotes-1.5.0

It explains what it does and why, and says how to use the new format.

Signed-off-by: Santi Béjar <sbejar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-show-ref --verify: Fail if called without a reference
Dmitry V. Levin [Fri, 23 Feb 2007 17:12:33 +0000 (20:12 +0300)]
git-show-ref --verify: Fail if called without a reference

builtin-show-ref.c (cmd_show_ref): Fail if called with --verify option but
without a reference.

Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years ago.mailmap maintenance after pulling from git-svn
Junio C Hamano [Fri, 23 Feb 2007 11:11:52 +0000 (03:11 -0800)]
.mailmap maintenance after pulling from git-svn

Signed-off-by: Junio C Hamano <junkio@cox.net>
17 years agogit-svn: fix some potential bugs with --follow-parent
Eric Wong [Fri, 23 Feb 2007 10:21:59 +0000 (02:21 -0800)]
git-svn: fix some potential bugs with --follow-parent

When using do_switch:

  We only need to ensure the index is clean and set to that of the
  parent tree) we rely on being able to reconstruct full files
  with deltas transferred over the network.

When using do_update:

  We may safely unlink the index if we are fetching an entire
  new tree with do_update.  Having an old index (from a
  previously deleted/abandoned directory) around can cause
  irrelevant files to be mistakenly kept.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: fix reconnections to different paths of svn:// repositories
Eric Wong [Fri, 23 Feb 2007 09:57:40 +0000 (01:57 -0800)]
git-svn: fix reconnections to different paths of svn:// repositories

Clearing the pool of the previous SVN::Ra connection we have
seems to to fix mysterious connection dropping errors when
reconnecting to different paths of svn:// repositories hosted by
rubyforge.org.

Note: I'm not sure *why* this fixes things things,
but it does for me.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: fix clone when a target directory has been specified
Eric Wong [Fri, 23 Feb 2007 09:26:26 +0000 (01:26 -0800)]
git-svn: fix clone when a target directory has been specified

Several bugs caused this to fail:

* GIT_DIR was set incorrectly after entering the target directory

* Avoid double chdir-ing when clone is called with an explicit path

* create target subdirectory *before* running git-init when using
  the multi-init path

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: document --username
Sam Vilain [Thu, 22 Feb 2007 23:32:30 +0000 (12:32 +1300)]
git-svn: document --username

Also, it turns out that SVN::Ra doesn't attempt to deal with
authentication or pass the username to ssh when doing svn+ssh://
URLs

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: don't consider SVN URL usernames significant when comparing
Sam Vilain [Thu, 22 Feb 2007 23:32:29 +0000 (12:32 +1300)]
git-svn: don't consider SVN URL usernames significant when comparing

http://foo@blah.com/path is the same as http://blah.com/path, so
remove usernames from URLs before storing them in commits, and when
reading them from commits.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: ensure we're at the top-level and can access $GIT_DIR
Eric Wong [Tue, 20 Feb 2007 09:36:30 +0000 (01:36 -0800)]
git-svn: ensure we're at the top-level and can access $GIT_DIR

If we are run inside a subdirectory of a working tree, we'll
chdir to the top first before touching anything.  This also
prevents the accidental creation of .git directories inside
subdirectories since they need metadata.

Noticed by maio on #git

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: give show-ignore HEAD smarts, like dcommit and log
Eric Wong [Tue, 20 Feb 2007 08:43:19 +0000 (00:43 -0800)]
git-svn: give show-ignore HEAD smarts, like dcommit and log

This allows the user to run git-svn show-ignore on there
current HEAD without needing to remember which branch/ref they
branched from with -i.  Also, find_by_url should correctly
handle cases where the URL passed to it is not valid.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: allow metadata options to be specified with 'init' and 'clone'
Eric Wong [Sun, 18 Feb 2007 10:34:09 +0000 (02:34 -0800)]
git-svn: allow metadata options to be specified with 'init' and 'clone'

Since the options that affect the way metadata is handled in
git-svn, should be consistently set/unset throughout history
imported by git-svn; it makes sense to allow the user to set
certain options from the command-line that will write to the
config file when initially creating the repository.

Also, fix some formatting issues while we're updating
documentation.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: documentation updates
Eric Wong [Sun, 18 Feb 2007 10:10:51 +0000 (02:10 -0800)]
git-svn: documentation updates

This documents the 'clone' and 'rebase' commands
of git-svn.   Additionaly, examples are updated
to use them instead of the lower-level 'init' and
'fetch' commands.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: add test for useSvnsyncProps
Eric Wong [Sun, 18 Feb 2007 09:30:35 +0000 (01:30 -0800)]
git-svn: add test for useSvnsyncProps

These tests are very similar as the ones I used for useSvmProps
and expect the same results because both dumps were generated
from the same original repo.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: fix useSvmProps, hopefully for the last time
Eric Wong [Sat, 17 Feb 2007 10:53:07 +0000 (02:53 -0800)]
git-svn: fix useSvmProps, hopefully for the last time

svm:mirror is not useful at all for us.  Parts of the old unit
test were broken and based on my misunderstanding of the
svm:mirror property.

When we read svm:source; make sure we correctly handle the '!'
in it: it is used to separate the path of the repository root
from the virtual path within the repository.  We don't need
to make that distinction, honestly!

We also ensure that subdirectories are also mirrored with the
correct URL if we're using useSvmProps.

We have a new test that uses dumped repo that was really
created using SVN::Mirror to avoid ambiguities and
mis-understandings about the svm: properties.

Note: trailing whitespace in the svm.dump file is unfortunately
a reality and required by SVN; so please ignore it when applying
this patch.

Also, ensure that the -R/--remote/--svn-remote flag is always
in effect if explicitly passed via the command-line.  This
allows us to track logically different mirrors sharing the
same URL (probably common with SVN::Mirror/SVK users).

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: add support for using svnsync properties
Eric Wong [Sat, 17 Feb 2007 03:57:29 +0000 (19:57 -0800)]
git-svn: add support for using svnsync properties

This is similar to useSvmProps, but far simpler in
implementation because svnsync retains a 1:1
between revision numbers and relative paths within
the repository

Config keys: svn.useSvnsyncProps
             svn-remote.<repo>.useSvnsyncProps

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: allow overriding of the SVN repo root in metadata
Eric Wong [Sat, 17 Feb 2007 03:15:21 +0000 (19:15 -0800)]
git-svn: allow overriding of the SVN repo root in metadata

This feature allows users to create repositories from alternate
URLs.  For example, an administrator could run git-svn on the
server locally (accessing via file://) but wish to distribute
the repository with a public http:// or svn:// URL in the
metadata so users of it will see the public URL.

Config key: svn-remote.<remote>.rewriteRoot

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: add 'clone' command, an alias for init + fetch
Eric Wong [Sat, 17 Feb 2007 02:45:01 +0000 (18:45 -0800)]
git-svn: add 'clone' command, an alias for init + fetch

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: hide the private git-svn 'config' file as '.metadata'
Eric Wong [Fri, 16 Feb 2007 12:09:28 +0000 (04:09 -0800)]
git-svn: hide the private git-svn 'config' file as '.metadata'

Having it named as 'config' prevents us from tracking a
ref named 'config', which is a huge mistake.

On the non-technical side, the word 'config' implies that
a user can freely modify it; but that's not the case
here.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: fix some issues for people migrating from older versions
Eric Wong [Fri, 16 Feb 2007 12:05:33 +0000 (04:05 -0800)]
git-svn: fix some issues for people migrating from older versions

 * Fixed logic for renaming old .rev_db -> .rev_db.$uuid

 * correctly handle manual migrations for those who decide to
   start use globbing to handle branches/tags over individual
   'fetch' keys

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: add a 'rebase' command
Eric Wong [Fri, 16 Feb 2007 11:22:40 +0000 (03:22 -0800)]
git-svn: add a 'rebase' command

This works similarly to 'svn update' or 'git pull' except that
it preserves linear history with 'git rebase' instead of 'git
merge' for ease of dcommit-ing with git-svn.

While we're at it, put the working_head_info() logic
into its own function and allow --fetch-all/--all for
dcommit and rebase (which will fetch all refs in the
current [svn-remote] instead of just the working one).

Note that the '-a' switch (short for --fetch-all/--all) has been
removed as it conflicts with the non-svn 'git fetch'

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: checkout files on new fetches
Eric Wong [Fri, 16 Feb 2007 09:45:13 +0000 (01:45 -0800)]
git-svn: checkout files on new fetches

On newly-created repositories, 'refs/heads/master' does not
point to anything.  This can be confusing to new users; so we
update 'master' to point to the last imported ref after fetching
is done.

Once 'master' is valid; we assume HEAD points to it; and if
the repository is not bare, then checkout the files if the
working tree is clean and unused.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: add support for --stat in the log command
Eric Wong [Thu, 15 Feb 2007 08:40:42 +0000 (00:40 -0800)]
git-svn: add support for --stat in the log command

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: documentation updates for new functionality
Eric Wong [Thu, 15 Feb 2007 03:34:56 +0000 (19:34 -0800)]
git-svn: documentation updates for new functionality

Force the showing of the --minimize flag as an option in the
'migrate' help.

Also, fix the usage function to correctly filter out
the deprecated aliases.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: allow dcommit for those who only fetch from SVM with useSvmProps
Eric Wong [Thu, 15 Feb 2007 02:47:16 +0000 (18:47 -0800)]
git-svn: allow dcommit for those who only fetch from SVM with useSvmProps

This allows users to use SVM (SVN::Mirror) to mirror a remote
repository to use dcommit to commit to the repository that SVM
was mirroring.  When dcommit is used in this manner, the automatic
fetch + rebase/reset does not happen; in which case the user will
have to manually invoke svm/svk, run 'git svn fetch', and finally
'git rebase'.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: error checking for invalid [svn-remote "..."] sections
Eric Wong [Thu, 15 Feb 2007 02:38:46 +0000 (18:38 -0800)]
git-svn: error checking for invalid [svn-remote "..."] sections

We don't end up trying to pass an undef URL over to SVN::Ra->new
because it'll segfault.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: remember to check for clean indices on globbed refs, too
Eric Wong [Thu, 15 Feb 2007 00:29:52 +0000 (16:29 -0800)]
git-svn: remember to check for clean indices on globbed refs, too

Also, warn about dirty indices and avoid an unncessary
write-tree call if the index is clean.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: allow --log-window-size to be specified, default to 100
Eric Wong [Thu, 15 Feb 2007 00:04:10 +0000 (16:04 -0800)]
git-svn: allow --log-window-size to be specified, default to 100

The newer default value should should lower memory usage for
large fetches and also help with fetching from less reliable
servers.  Previously the value was 1000 and memory usage
got a bit high on some repositories and fetching became
less reliable in some cases.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: simplify the (multi-)init methods of fetching
Eric Wong [Wed, 14 Feb 2007 23:10:44 +0000 (15:10 -0800)]
git-svn: simplify the (multi-)init methods of fetching

Also, some changes to avoid creating dead dirs under
.git/svn/.  We now create all directories as late as
possible.

Signed-off-by: Eric Wong <normalperson@yhbt.net>