Junio C Hamano [Tue, 25 Aug 2009 07:08:40 +0000 (00:08 -0700)]
Merge branch 'jk/maint-1.6.3-checkout-unborn' into next
* jk/maint-1.6.3-checkout-unborn:
checkout: do not imply "-f" on unborn branches
Junio C Hamano [Tue, 25 Aug 2009 07:08:40 +0000 (00:08 -0700)]
Merge branch 'as/maint-graph-interesting-fix' into next
* as/maint-graph-interesting-fix:
Add tests for rev-list --graph with options that simplify history
graph API: fix bug in graph_is_interesting()
Junio C Hamano [Tue, 25 Aug 2009 07:08:40 +0000 (00:08 -0700)]
Merge branch 'np/maint-1.6.3-deepen' into next
* np/maint-1.6.3-deepen:
fix simple deepening of a repo
Conflicts:
t/t5500-fetch-pack.sh
Jeff King [Tue, 25 Aug 2009 03:03:16 +0000 (23:03 -0400)]
checkout: do not imply "-f" on unborn branches
When checkout sees that HEAD points to a non-existent ref,
it currently acts as if "-f" was given; this behavior dates
back to
5a03e7f, which enabled checkout from unborn branches
in the shell version of "git-checkout". The reasoning given
is to avoid the code path which tries to merge the tree
contents. When checkout was converted to C, this code
remained intact.
The unfortunate side effect of this strategy is that the
"force" code path will overwrite working tree and index
state that may be precious to the user. Instead of enabling
"force", this patch uses the normal "merge" codepath for an
unborn branch, but substitutes the empty tree for the "old"
commit.
This means that in the absence of an index, any files in the
working tree will be treated as untracked files, and a
checkout which would overwrite them is aborted. Similarly,
any paths in the index will be merged with an empty entry
as the base, meaning that unless the new branch's content is
identical to what's in the index, there will be a conflict
and the checkout will be aborted.
The user is then free to correct the situation or proceed
with "-f" as appropriate.
This patch also removes the "warning: you are on a branch
yet to be born" message. Its function was to warn the user
that we were enabling the "-f" option. Since we are no
longer doing that, there is no reason for the user to care
whether we are switching away from an unborn branch.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nicolas Pitre [Mon, 24 Aug 2009 04:04:09 +0000 (00:04 -0400)]
fix simple deepening of a repo
If all refs sent by the remote repo during a fetch are reachable
locally, then no further conversation is performed with the remote. This
check is skipped when the --depth argument is provided to allow the
deepening of a shallow clone which corresponding remote repo has no
changed.
However, some additional filtering was added in commit
c29727d5 to
remove those refs which are equal on both sides. If the remote repo has
not changed, then the list of refs to give the remote process becomes
empty and simply attempting to deepen a shallow repo always fails.
Let's stop being smart in that case and simply send the whole list over
when that condition is met. The remote will do the right thing anyways.
Test cases for this issue are also provided.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Adam Simpkins [Fri, 21 Aug 2009 18:20:34 +0000 (11:20 -0700)]
Add tests for rev-list --graph with options that simplify history
These tests help make sure graph_is_interesting() is doing the right
thing.
Signed-off-by: Adam Simpkins <simpkins@facebook.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 24 Aug 2009 00:21:55 +0000 (17:21 -0700)]
Merge branch 'jc/maint-unpack-objects-strict' into next
* jc/maint-unpack-objects-strict:
Fix "unpack-objects --strict"
Conflicts:
builtin-unpack-objects.c
Junio C Hamano [Mon, 24 Aug 2009 00:21:51 +0000 (17:21 -0700)]
Merge branch 'master' into next
* master:
gitweb: pull ref markes pull out of subject <a> element
Junio C Hamano [Mon, 24 Aug 2009 00:19:19 +0000 (17:19 -0700)]
Merge branch 'jc/verify-pack-stat'
* jc/verify-pack-stat:
verify-pack --stat-only: show histogram without verifying
Junio C Hamano [Mon, 24 Aug 2009 00:19:06 +0000 (17:19 -0700)]
Merge branch 'mr/gitweb-xz'
* mr/gitweb-xz:
gitweb: add support for XZ compressed snapshots
gitweb: update INSTALL regarding specific snapshot settings
gitweb: support to globally disable a snapshot format
Junio C Hamano [Mon, 24 Aug 2009 00:18:52 +0000 (17:18 -0700)]
Merge branch 'ld/p4'
* ld/p4:
git-p4: stream from perforce to speed up clones
Giuseppe Bilotta [Sun, 23 Aug 2009 08:28:09 +0000 (10:28 +0200)]
gitweb: pull ref markes pull out of subject <a> element
Since
4afbaef (gitweb: ref markers link to named shortlogs, 2008-09-02),
ref markers that accompany the subject in views such as shortlog and
history point to something different from the subject itself. Therefore,
they should not be included in the same <a> element.
Benefits of the change are:
* better compliance to the XHTML standards, that forbid links within
links even though the restriction cannot be imposed via DTD; this also
benefits visualization in some older browsers;
* when hovering the subject, only the subject itself is underlined; when
hovering the ref markers, only the text in the hovered ref marker is
underlined; previously, hovering any written part of the subject column
led to complete underlying of everything at the same time, with
unpleasing effects.
Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sun, 23 Aug 2009 01:24:13 +0000 (18:24 -0700)]
Merge branch 'jc/1.7.0-send-email-no-thread-default' into next
* jc/1.7.0-send-email-no-thread-default:
send-email: make --no-chain-reply-to the default
Junio C Hamano [Sat, 22 Aug 2009 19:48:48 +0000 (12:48 -0700)]
send-email: make --no-chain-reply-to the default
In http://article.gmane.org/gmane.comp.version-control.git/109790 I
threatened to announce a change to the default threading style used by
send-email to no-chain-reply-to (i.e. the second and subsequent messages
will all be replies to the first one), unless nobody objected, in 1.6.3.
Nobody objected, as far as I can dig the list archive. But when nothing
happened in 1.6.3 nor 1.6.4, nobody from the camp who complained loudly
that led to the message did not complain either.
So I am guessing that after all nobody cares about this. But 1.7.0 is a
good time to change this, and as I said in the message, I personally think
it is a good change, so here it is.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 22 Aug 2009 19:57:36 +0000 (12:57 -0700)]
Merge branch 'jc/1.7.0-status' into next
* jc/1.7.0-status:
git status: not "commit --dry-run" anymore
git stat -s: short status output
git stat: the beginning of "status that is not a dry-run of commit"
Junio C Hamano [Sat, 15 Aug 2009 09:27:39 +0000 (02:27 -0700)]
git status: not "commit --dry-run" anymore
This removes tentative "git stat" and make it take over "git status".
There are some tests that expect "git status" to exit with non-zero status
when there is something staged. Some tests expect "git status path..." to
show the status for a partial commit.
For these, replace "git status" with "git commit --dry-run". For the
ones that do not attempt a dry-run of a partial commit that check the
output from the command, check the output from "git status" as well, as
they should be identical.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 5 Aug 2009 06:55:22 +0000 (23:55 -0700)]
git stat -s: short status output
Give -s(hort) option to "git stat" that shows the status of paths in a
more concise way.
XY PATH1 -> PATH2
format to be more machine readable than output from "git status", which is
about previewing of "git commit" with the same arguments.
PATH1 is the path in the HEAD, and " -> PATH2" part is shown only when
PATH1 corresponds to a different path in the index/worktree.
For unmerged entries, X shows the status of stage #2 (i.e. ours) and Y
shows the status of stage #3 (i.e. theirs). For entries that do not have
conflicts, X shows the status of the index, and Y shows the status of the
work tree. For untracked paths, XY are "??".
X Y Meaning
-------------------------------------------------
[MD] not updated
M [ MD] updated in index
A [ MD] added to index
D [ MD] deleted from index
R [ MD] renamed in index
C [ MD] copied in index
[MARC] index and work tree matches
[ MARC] M work tree changed since index
[ MARC] D deleted in work tree
D D unmerged, both deleted
A U unmerged, added by us
U D unmerged, deleted by them
U A unmerged, added by them
D U unmerged, deleted by us
A A unmerged, both added
U U unmerged, both modified
? ? untracked
When given -z option, the records are terminated by NUL characters for
better machine readability. Because the traditional long format is
designed for human consumption, NUL termination does not make sense.
For this reason, -z option implies -s (short output).
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 8 Aug 2009 06:31:57 +0000 (23:31 -0700)]
git stat: the beginning of "status that is not a dry-run of commit"
Tentatively add "git stat" as a new command.
This is not "preview of commit with the same arguments"; the path parameters
are not paths to be added to the pristine index (aka "--only" option), but
are taken as pathspecs to limit the output. Later in 1.7.0 release, it will
take over "git status".
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 22 Aug 2009 03:23:38 +0000 (20:23 -0700)]
Merge branch 'master' into next
* master:
GIT 1.6.4.1
compat/snprintf.c: clarify SNPRINTF_SIZE_CORR
Make test number t7406- unique
Junio C Hamano [Sat, 22 Aug 2009 03:23:10 +0000 (20:23 -0700)]
Sync with 1.6.4.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 21 Aug 2009 19:02:25 +0000 (12:02 -0700)]
GIT 1.6.4.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 22 Aug 2009 01:51:30 +0000 (18:51 -0700)]
Merge branch 'bc/maint-am-email' into maint
* bc/maint-am-email:
git-am: print fair error message when format detection fails
am: allow individual e-mail files as input
Junio C Hamano [Fri, 21 Aug 2009 22:13:21 +0000 (15:13 -0700)]
compat/snprintf.c: clarify SNPRINTF_SIZE_CORR
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 22 Aug 2009 01:47:53 +0000 (18:47 -0700)]
Merge branch 'cc/replace'
* cc/replace:
t6050: check pushing something based on a replaced commit
Documentation: add documentation for "git replace"
Add git-replace to .gitignore
builtin-replace: use "usage_msg_opt" to give better error messages
parse-options: add new function "usage_msg_opt"
builtin-replace: teach "git replace" to actually replace
Add new "git replace" command
environment: add global variable to disable replacement
mktag: call "check_sha1_signature" with the replacement sha1
replace_object: add a test case
object: call "check_sha1_signature" with the replacement sha1
sha1_file: add a "read_sha1_file_repl" function
replace_object: add mechanism to replace objects found in "refs/replace/"
refs: add a "for_each_replace_ref" function
Junio C Hamano [Sat, 22 Aug 2009 01:47:48 +0000 (18:47 -0700)]
Merge branch 'gb/apply-ignore-whitespace'
* gb/apply-ignore-whitespace:
git apply: option to ignore whitespace differences
Junio C Hamano [Sat, 22 Aug 2009 01:47:44 +0000 (18:47 -0700)]
Merge branch 'bc/mailsplit-cr-at-eol'
* bc/mailsplit-cr-at-eol:
Allow mailsplit (and hence git-am) to handle mails with CRLF line-endings
builtin-mailsplit.c: remove read_line_with_nul() since it is no longer used
builtin-mailinfo,builtin-mailsplit: use strbufs
strbuf: add new function strbuf_getwholeline()
Adam Simpkins [Wed, 19 Aug 2009 02:34:33 +0000 (19:34 -0700)]
graph API: fix bug in graph_is_interesting()
Previously, graph_is_interesting() did not behave quite the same way as
the code in get_revision(). As a result, it would sometimes think
commits were uninteresting, even though get_revision() would return
them. This resulted in incorrect lines in the graph output.
This change creates a get_commit_action() function, which
graph_is_interesting() and simplify_commit() both now use to determine
if a commit will be shown. It is identical to the old simplify_commit()
behavior, except that it never calls rewrite_parents().
This problem was reported by Santi Béjar. The following command
would exhibit the problem before, but now works correctly:
git log --graph --simplify-by-decoration --oneline v1.6.3.3
Previously git graph did not display the output for this command
correctly between
f29ac4f and
66996ec, among other places.
Signed-off-by: Adam Simpkins <simpkins@facebook.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 21 Aug 2009 18:34:24 +0000 (11:34 -0700)]
Merge branch 'jc/maint-merge-recursive-fix' into maint
* jc/maint-merge-recursive-fix:
merge-recursive: don't segfault while handling rename clashes
Junio C Hamano [Fri, 21 Aug 2009 18:34:17 +0000 (11:34 -0700)]
Merge branch 'zf/maint-gitweb-acname' into maint
* zf/maint-gitweb-acname:
gitweb: parse_commit_text encoding fix
Junio C Hamano [Fri, 21 Aug 2009 18:34:02 +0000 (11:34 -0700)]
Merge branch 'np/maint-limit-delta-cache' into maint
* np/maint-limit-delta-cache:
don't let the delta cache grow unbounded in 'git repack'
Junio C Hamano [Fri, 21 Aug 2009 18:33:54 +0000 (11:33 -0700)]
Merge branch 'jk/maint-show-tag' into maint
* jk/maint-show-tag:
show: add space between multiple items
show: suppress extra newline when showing annotated tag
Junio C Hamano [Fri, 21 Aug 2009 18:33:08 +0000 (11:33 -0700)]
Merge branch 'sb/maint-pull-rebase' into maint
* sb/maint-pull-rebase:
pull: support rebased upstream + fetch + pull --rebase
t5520-pull: Test for rebased upstream + fetch + pull --rebase
Johannes Sixt [Fri, 21 Aug 2009 08:32:25 +0000 (10:32 +0200)]
Make test number t7406- unique
We skip t7407 because a patch series is cooking that uses is.
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 21 Aug 2009 00:45:44 +0000 (17:45 -0700)]
Merge branch 'nd/sparse' (early part) into next
* 'nd/sparse' (early part):
Prevent diff machinery from examining assume-unchanged entries on worktree
Junio C Hamano [Fri, 21 Aug 2009 00:45:44 +0000 (17:45 -0700)]
Merge branch 'jc/maint-checkout-index-to-prefix' into next
* jc/maint-checkout-index-to-prefix:
check_path(): allow symlinked directories to checkout-index --prefix
Junio C Hamano [Fri, 21 Aug 2009 00:45:44 +0000 (17:45 -0700)]
Merge branch 'aj/fix-read-tree-from-scratch' into next
* aj/fix-read-tree-from-scratch:
read-tree: Fix regression with creation of a new index file.
Junio C Hamano [Fri, 21 Aug 2009 00:31:40 +0000 (17:31 -0700)]
Merge branch 'master' into next
* master:
git-compat-util.h: remove superfluous test for __sun__
Junio C Hamano [Fri, 21 Aug 2009 00:31:32 +0000 (17:31 -0700)]
Merge branch 'jh/submodule-foreach' into next
* jh/submodule-foreach:
git clone: Add --recursive to automatically checkout (nested) submodules
t7407: Use 'rev-parse --short' rather than bash's substring expansion notation
Johan Herland [Wed, 19 Aug 2009 23:07:43 +0000 (01:07 +0200)]
git clone: Add --recursive to automatically checkout (nested) submodules
Many projects using submodules expect all submodules to be checked out
in order to build/work correctly. A common command sequence for
developers on such projects is:
git clone url/to/project
cd project
git submodule update --init (--recursive)
This patch introduces the --recursive option to git-clone. The new
option causes git-clone to recursively clone and checkout all
submodules of the cloned project. Hence, the above command sequence
can be reduced to:
git clone --recursive url/to/project
--recursive is ignored if no checkout is done by the git-clone.
The patch also includes documentation and a selftest.
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Thu, 20 Aug 2009 09:24:54 +0000 (11:24 +0200)]
t7407: Use 'rev-parse --short' rather than bash's substring expansion notation
The substring expansion notation is a bashism that we have not so far
adopted. Use 'git rev-parse --short' instead, as this also handles
the case where the unique abbreviation is longer than 7 characters.
Also fix the typo; the object name for submodule #2 was copied from
submodule #1's by mistake.
Suggested-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brandon Casey [Thu, 20 Aug 2009 01:27:08 +0000 (20:27 -0500)]
git-compat-util.h: remove superfluous test for __sun__
This 'ifndef' macro is entered only when __sun__ is not defined. This test
will never fail since it is located inside of the 'else' branch of an 'if'
macro which tests whether __sun__ is defined. It has had no effect since
the merge at
436f66b7.
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 19 Aug 2009 06:38:06 +0000 (23:38 -0700)]
Merge branch 'jh/submodule-foreach' into next
* jh/submodule-foreach:
git submodule status: Add --recursive to recurse into nested submodules
git submodule update: Introduce --recursive to update nested submodules
git submodule foreach: Add --recursive to recurse into nested submodules
git submodule foreach: test access to submodule name as '$name'
Add selftest for 'git submodule foreach'
git submodule: Cleanup usage string and add option parsing to cmd_foreach()
Conflicts:
Documentation/git-submodule.txt
git-submodule.sh
Junio C Hamano [Wed, 19 Aug 2009 06:38:01 +0000 (23:38 -0700)]
Merge branch 'master' into next
* master:
graph API: use a new color when starting a brand new column
git-svn: Use GIT_SSH setting if SVN_SSH is not set
svn: assume URLs from the command-line are URI-encoded
git-svn.txt: Fix location of parent argument
Junio C Hamano [Wed, 19 Aug 2009 06:33:16 +0000 (23:33 -0700)]
Merge branch 'rc/maint-http-fix'
* rc/maint-http-fix:
http.c: don't assume that urls don't end with slash
Junio C Hamano [Wed, 19 Aug 2009 06:32:58 +0000 (23:32 -0700)]
Merge branch 'tr/maint-1.6.3-add-p-modeonly-fix'
* tr/maint-1.6.3-add-p-modeonly-fix:
add -p: do not attempt to coalesce mode changes
git add -p: demonstrate failure when staging both mode and hunk
Adam Simpkins [Tue, 18 Aug 2009 21:41:12 +0000 (14:41 -0700)]
graph API: use a new color when starting a brand new column
Use a new color for commits that don't have any previously printed
children. The following command demonstrates the changes:
git log --graph --pretty=tformat:'%h %s%n' -7
481c7a6 18b0793
Now the two independent lines of development are displayed with
different colors, instead of both using the same color.
Signed-off-by: Adam Simpkins <simpkins@facebook.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Wed, 19 Aug 2009 01:45:24 +0000 (03:45 +0200)]
git submodule status: Add --recursive to recurse into nested submodules
In very large and hierarchically structured projects, one may encounter
nested submodules. In these situations, it is valuable to not only show
status for all the submodules in the current repo (which is what is
currently done by 'git submodule status'), but also to show status for
all submodules at all levels (i.e. recursing into nested submodules as
well).
This patch teaches the new --recursive option to the 'git submodule status'
command. The patch also includes documentation and selftests.
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Wed, 19 Aug 2009 01:45:23 +0000 (03:45 +0200)]
git submodule update: Introduce --recursive to update nested submodules
In very large and hierarchically structured projects, one may encounter
nested submodules. In these situations, it is valuable to not only update
the submodules in the current repo (which is what is currently done by
'git submodule update'), but also to operate on all submodules at all
levels (i.e. recursing into nested submodules as well).
This patch teaches the new --recursive option to the 'git submodule update'
command. The patch also includes documentation and selftests.
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Wed, 19 Aug 2009 01:45:22 +0000 (03:45 +0200)]
git submodule foreach: Add --recursive to recurse into nested submodules
In very large and hierarchically structured projects, one may encounter
nested submodules. In these situations, it is valuable to not only operate
on all the submodules in the current repo (which is what is currently done
by 'git submodule foreach'), but also to operate on all submodules at all
levels (i.e. recursing into nested submodules as well).
This patch teaches the new --recursive option to the 'git submodule foreach'
command. The patch also includes documentation and selftests.
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Wed, 19 Aug 2009 01:45:21 +0000 (03:45 +0200)]
git submodule foreach: test access to submodule name as '$name'
Add verification of the behaviour of '$name' to the git submodule
foreach selftest.
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Wed, 19 Aug 2009 01:45:20 +0000 (03:45 +0200)]
Add selftest for 'git submodule foreach'
The selftest verifies that:
- only checked out submodules are visited by 'git submodule foreach'
- the $path, and $sha1 variables are set correctly for each submodule
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Wed, 19 Aug 2009 01:45:19 +0000 (03:45 +0200)]
git submodule: Cleanup usage string and add option parsing to cmd_foreach()
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Karthik R [Tue, 18 Aug 2009 23:54:40 +0000 (18:54 -0500)]
git-svn: Use GIT_SSH setting if SVN_SSH is not set
If SVN_SSH is defined, it will be used. Else value in
GIT_SSH is copied to SVN_SSH & then, only on Windows,
the \s are escaped.
On Windows, the shell-variables must be set as follows
GIT_SSH="C:\Program Files\PuTTY\plink.exe"
SVN_SSH="C:\\Program Files\\PuTTY\\plink.exe"
See http://code.google.com/p/msysgit/issues/detail?id=305
[ew: fixed indentation to use tabs]
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Karthik Rajagopalan <karthikr@fastmail.fm>
Eric Wong [Sun, 16 Aug 2009 21:22:12 +0000 (14:22 -0700)]
svn: assume URLs from the command-line are URI-encoded
And then unescape them when writing to $GIT_CONFIG.
SVN has different rules for repository URLs (usually the root)
and for paths within that repository (below the HTTP layer).
Thus, for the request URI path at the HTTP level, the URI needs
to be encoded. However, in the body of the HTTP request (the
with underlying SVN XML protocol), those paths should not be
URI-encoded[1]. For non-HTTP(S) requests, SVN appears to be
more flexible and will except weird characters in the URL as
well as URI-encoded ones.
Since users are used to using URLs being entirely URI-encoded,
git svn will now attempt to unescape the path portion of URLs
while leaving the actual repository URL untouched.
This change will be reflected in newly-created $GIT_CONFIG files
only. This allows users to switch between svn(+ssh)://, file://
and http(s):// urls without changing the fetch/branches/tags
config keys. This won't affect existing imports at all (since
things didn't work before this commit anyways), and will allow
users to force escaping into repository paths that look like
they're escaped (but are not).
Thanks to Mike Smullin for the original bug report and Björn
Steinbrink for summarizing it into testable cases for me.
[1] Except when committing copies/renames, see
commit
29633bb91c7bcff31ff3bb59378709e3e3ef627d
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Tuomas Suutari [Fri, 14 Aug 2009 08:11:58 +0000 (11:11 +0300)]
git-svn.txt: Fix location of parent argument
The note about interoperating in different timezones and such is about
localtime argument, not parent.
Signed-off-by: Tuomas Suutari <tuomas.suutari@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Junio C Hamano [Tue, 18 Aug 2009 21:40:35 +0000 (14:40 -0700)]
Merge branch 'jh/submodule-foreach' into next
* jh/submodule-foreach:
git submodule foreach: Provide access to submodule name, as '$name'
Junio C Hamano [Tue, 18 Aug 2009 21:40:35 +0000 (14:40 -0700)]
Merge branch 'lh/short-decorate' into next
* lh/short-decorate:
git-log: allow --decorate[=short|full]
Junio C Hamano [Tue, 18 Aug 2009 21:40:35 +0000 (14:40 -0700)]
Merge branch 'rc/maint-http-fix' into next
* rc/maint-http-fix:
http.c: don't assume that urls don't end with slash
Junio C Hamano [Tue, 18 Aug 2009 21:40:35 +0000 (14:40 -0700)]
Merge branch 'lt/block-sha1' into next
* lt/block-sha1:
remove ARM and Mozilla SHA1 implementations
block-sha1: guard gcc extensions with __GNUC__
make sure byte swapping is optimal for git
block-sha1: make the size member first in the context struct
Junio C Hamano [Tue, 18 Aug 2009 21:40:35 +0000 (14:40 -0700)]
Merge branch 'tr/reset-checkout-patch' into next
* tr/reset-checkout-patch:
tests: disable interactive hunk selection tests if perl is not available
Junio C Hamano [Tue, 18 Aug 2009 21:40:29 +0000 (14:40 -0700)]
Merge branch 'master' into next
* master:
filter-branch: make the usage string fit on 80 chars terminals.
filter-branch: add an example how to add ACKs to a range of commits
docs: describe impact of repack on "clone -s"
Junio C Hamano [Tue, 18 Aug 2009 21:40:10 +0000 (14:40 -0700)]
Merge branch 'maint'
* maint:
filter-branch: make the usage string fit on 80 chars terminals.
filter-branch: add an example how to add ACKs to a range of commits
docs: describe impact of repack on "clone -s"
Nicolas Pitre [Tue, 18 Aug 2009 00:09:56 +0000 (20:09 -0400)]
remove ARM and Mozilla SHA1 implementations
They are both slower than the new BLK_SHA1 implementation, so it is
pointless to keep them around.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nicolas Pitre [Tue, 18 Aug 2009 19:37:22 +0000 (15:37 -0400)]
block-sha1: guard gcc extensions with __GNUC__
With this, the code should now be portable to any C compiler.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nicolas Pitre [Tue, 18 Aug 2009 19:26:55 +0000 (15:26 -0400)]
make sure byte swapping is optimal for git
We rely on ntohl() and htonl() to perform byte swapping in many places.
However, some platforms have libraries providing really poor
implementations of those which might cause significant performance
issues, especially with the block-sha1 code.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Tay Ray Chuan [Mon, 17 Aug 2009 09:09:43 +0000 (17:09 +0800)]
http.c: don't assume that urls don't end with slash
Make append_remote_object_url() (and by implication,
get_remote_object_url) use end_url_with_slash() to ensure that the url
ends with a slash.
Previously, they assumed that the url did not end with a slash and
as a result appended a slash, sometimes errorneously.
This fixes an issue introduced in
5424bc5 ("http*: add helper methods
for fetching objects (loose)"), where the append_remote_object_url()
implementation in http-push.c, which assumed that urls end with a
slash, was replaced by another one in http.c, which assumed urls did
not end with a slash.
The above issue was raised by Thomas Schlichter:
http://marc.info/?l=git&m=
125043105231327
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Tested-by: Thomas Schlichter <thomas.schlichter@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Matthieu Moy [Tue, 18 Aug 2009 09:51:00 +0000 (11:51 +0200)]
filter-branch: make the usage string fit on 80 chars terminals.
It used to be a single, huge line, badly wrapped by xterm.
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Lars Hjemli [Sat, 15 Aug 2009 14:23:12 +0000 (16:23 +0200)]
git-log: allow --decorate[=short|full]
Commit
de435ac0 changed the behavior of --decorate from printing the
full ref (e.g., "refs/heads/master") to a shorter, more human-readable
version (e.g., just "master"). While this is nice for human readers,
external tools using the output from "git log" may prefer the full
version.
This patch introduces an extension to --decorate to allow the caller to
specify either the short or the full versions.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Tue, 18 Aug 2009 06:12:44 +0000 (02:12 -0400)]
tests: disable interactive hunk selection tests if perl is not available
These are all backed by git-add--interactive.perl under the hood.
Signed-off-by: Jeff King <peff@peff.net>
Acked-By: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johan Herland [Sun, 16 Aug 2009 01:10:08 +0000 (03:10 +0200)]
git submodule foreach: Provide access to submodule name, as '$name'
The argument to 'git submodule foreach' already has access to the variables
'$path' (the path to the submodule, relative to the superproject) and '$sha1'
(the submodule commit recorded by the superproject).
This patch adds another variable -- '$name' -- which contains the name of the
submodule, as recorded in the superproject's .gitmodules file.
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nicolas Pitre [Tue, 18 Aug 2009 00:18:23 +0000 (20:18 -0400)]
block-sha1: make the size member first in the context struct
This is a 64-bit value, hence having it first provides a better
alignment.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Schindelin [Mon, 17 Aug 2009 20:38:46 +0000 (22:38 +0200)]
filter-branch: add an example how to add ACKs to a range of commits
When you have to add certain lines like ACKs (or for that matter,
Signed-off-by:s) to a range of commits starting with HEAD, you might
be tempted to use 'git rebase -i -10', but that is a waste of your
time.
It is better to use 'git filter-branch' with an appropriate message
filter, and this commit adds an example how to do so to
filter-branch's man page.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 17 Aug 2009 06:53:12 +0000 (23:53 -0700)]
check_path(): allow symlinked directories to checkout-index --prefix
Merlyn noticed that Documentation/install-doc-quick.sh no longer correctly
removes old installed documents when the target directory has a leading
path that is a symlink. It turns out that "checkout-index --prefix" was
broken by recent
b6986d8 (git-checkout: be careful about untracked
symlinks, 2009-07-29).
I suspect has_symlink_leading_path() could learn the third parameter
(prefix that is allowed to be symlinked directories) to allow us to retire
a similar function has_dirs_only_path().
Another avenue of fixing this I considered was to get rid of base_dir and
base_dir_len from "struct checkout", and instead make "git checkout-index"
when run with --prefix mkdir the leading path and chdir in there. It
might be the best longer term solution to this issue, as the base_dir
feature is used only by that rather obscure codepath as far as I know.
But at least this patch should fix this breakage.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Alexandre Julliard [Mon, 17 Aug 2009 15:35:44 +0000 (17:35 +0200)]
read-tree: Fix regression with creation of a new index file.
Reading the index into an empty file has been broken by
5a56da58060e50980fab0f4c38203a25440d1530, since it causes the existing
index to always be loaded first, and dies if it's an empty file:
$ GIT_INDEX_FILE=`mktemp` git read-tree master
fatal: index file smaller than expected
It breaks for instance committing from git.el. This patch reverts to the
previous behavior of only loading the index when merging it.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Mon, 17 Aug 2009 06:19:17 +0000 (02:19 -0400)]
docs: describe impact of repack on "clone -s"
The effects of repacking on a repository with alternates are a bit
subtle. The two main things users will want are:
1. Not to waste disk space by accidentally copying objects which could
be shared.
2. Copying all objects explicitly to break the dependency on the source
repo.
This patch describes both under the "clone -s" documentation. It makes
sense to put it there rather than in git-repack.txt for both cases.
For (1), we are warning the user who is using "clone -s" about what _not_
to do, so we need to get their attention when reading about "clone -s".
For (2), we are telling them how git-repack can be used to accomplish a
task, but until they know that git-repack is the right tool, they have no
reason to look at the repack documentation.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 17 Aug 2009 05:30:28 +0000 (22:30 -0700)]
Merge branch 'tr/reset-checkout-patch' into next
* tr/reset-checkout-patch:
DWIM 'git stash save -p' for 'git stash -p'
Implement 'git stash save --patch'
Implement 'git checkout --patch'
Implement 'git reset --patch'
builtin-add: refactor the meat of interactive_add()
Add a small patch-mode testing library
git-apply--interactive: Refactor patch mode code
Make 'git stash -k' a short form for 'git stash save --keep-index'
Junio C Hamano [Sun, 16 Aug 2009 11:59:32 +0000 (04:59 -0700)]
Merge branch 'tr/maint-1.6.3-add-p-modeonly-fix' into next
* tr/maint-1.6.3-add-p-modeonly-fix:
add -p: do not attempt to coalesce mode changes
git add -p: demonstrate failure when staging both mode and hunk
Junio C Hamano [Sun, 16 Aug 2009 11:59:23 +0000 (04:59 -0700)]
Merge branch 'master' into next
* master:
gitk: Parse arbitrary commit-ish in SHA1 field
gitk: Fix direction of symmetric difference in optimized mode
gitk: New option to hide remote refs
gitk: Do not hard-code "encoding" in attribute lookup functions
Junio C Hamano [Sun, 16 Aug 2009 11:14:32 +0000 (04:14 -0700)]
Merge branch 'lt/block-sha1'
* lt/block-sha1:
block-sha1/sha1.c: silence compiler complaints by casting void * to char *
block-sha1: more good unaligned memory access candidates
block-sha1: support for architectures with memory alignment restrictions
block-sha1: split the different "hacks" to be individually selected
block-sha1: move code around
block-sha1: improve code on large-register-set machines
block-sha1: improved SHA1 hashing
block-sha1: perform register rotation using cpp
block-sha1: get rid of redundant 'lenW' context
block-sha1: Use '(B&C)+(D&(B^C))' instead of '(B&C)|(D&(B|C))' in round 3
block-sha1: macroize the rounds a bit further
block-sha1: re-use the temporary array as we calculate the SHA1
block-sha1: make the 'ntohl()' part of the first SHA1 loop
block-sha1: minor fixups
block-sha1: try to use rol/ror appropriately
block-sha1: undo ctx->size change
Add new optimized C 'block-sha1' routines
Junio C Hamano [Sun, 16 Aug 2009 11:13:22 +0000 (04:13 -0700)]
Merge branch 'bc/maint-am-email'
* bc/maint-am-email:
git-am: print fair error message when format detection fails
am: allow individual e-mail files as input
Junio C Hamano [Sun, 16 Aug 2009 11:13:18 +0000 (04:13 -0700)]
Merge branch 'js/maint-cover-letter-non-ascii'
* js/maint-cover-letter-non-ascii:
Correctly mark cover letters' encodings if they are not pure ASCII
Expose the has_non_ascii() function
Junio C Hamano [Sun, 16 Aug 2009 11:13:13 +0000 (04:13 -0700)]
Merge branch 'jc/maint-clean-nested-dir-safety'
* jc/maint-clean-nested-dir-safety:
clean: require double -f options to nuke nested git repository and work tree
Junio C Hamano [Sun, 16 Aug 2009 11:13:04 +0000 (04:13 -0700)]
Merge branch 'jk/maint-merge-msg-fix'
* jk/maint-merge-msg-fix:
merge: indicate remote tracking branches in merge message
merge: fix incorrect merge message for ambiguous tag/branch
add tests for merge message headings
Junio C Hamano [Sun, 16 Aug 2009 10:46:51 +0000 (03:46 -0700)]
Merge git://git.kernel.org/pub/scm/gitk/gitk
* git://git.kernel.org/pub/scm/gitk/gitk:
gitk: Parse arbitrary commit-ish in SHA1 field
gitk: Fix direction of symmetric difference in optimized mode
gitk: New option to hide remote refs
gitk: Do not hard-code "encoding" in attribute lookup functions
Thomas Rast [Thu, 13 Aug 2009 12:29:45 +0000 (14:29 +0200)]
DWIM 'git stash save -p' for 'git stash -p'
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 15 Aug 2009 22:20:28 +0000 (15:20 -0700)]
Merge branch 'js/stash-dwim' into tr/reset-checkout-patch
* commit 'tr/reset-checkout-patch^^2':
Make 'git stash -k' a short form for 'git stash save --keep-index'
Thomas Rast [Thu, 13 Aug 2009 12:29:44 +0000 (14:29 +0200)]
Implement 'git stash save --patch'
This adds a hunk-based mode to git-stash. You can select hunks from
the difference between HEAD and worktree, and git-stash will build a
stash that reflects these changes. The index state of the stash is
the same as your current index, and we also let --patch imply
--keep-index.
Note that because the selected hunks are rolled back from the worktree
but not the index, the resulting state may appear somewhat confusing
if you had also staged these changes. This is not entirely
satisfactory, but due to the way stashes are applied, other solutions
would require a change to the stash format.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Thomas Rast [Sat, 15 Aug 2009 11:48:30 +0000 (13:48 +0200)]
Implement 'git checkout --patch'
This introduces a --patch mode for git-checkout. In the index usage
git checkout --patch -- [files...]
it lets the user discard edits from the <files> at the granularity of
hunks (by selecting hunks from 'git diff' and then reverse applying
them to the worktree).
We also accept a revision argument. In the case
git checkout --patch HEAD -- [files...]
we offer hunks from the difference between HEAD and the worktree, and
reverse applies them to both index and worktree, allowing you to
discard staged changes completely. In the non-HEAD usage
git checkout --patch <revision> -- [files...]
it offers hunks from the difference between the worktree and
<revision>. The chosen hunks are then applied to both index and
worktree.
The application to worktree and index is done "atomically" in the
sense that we first check if the patch applies to the index (it should
always apply to the worktree). If it does not, we give the user a
choice to either abort or apply to the worktree anyway.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Thomas Rast [Sat, 15 Aug 2009 11:48:31 +0000 (13:48 +0200)]
Implement 'git reset --patch'
This introduces a --patch mode for git-reset. The basic case is
git reset --patch -- [files...]
which acts as the opposite of 'git add --patch -- [files...]': it
offers hunks for *un*staging. Advanced usage is
git reset --patch <revision> -- [files...]
which offers hunks from the diff between the index and <revision> for
forward application to the index. (That is, the basic case is just
<revision> = HEAD.)
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 15 Aug 2009 22:14:27 +0000 (15:14 -0700)]
Merge branch 'jl/submodule-summary-diff-files' into next
* jl/submodule-summary-diff-files:
Documentaqtion/git-submodule.txt: Typofix
Junio C Hamano [Sat, 15 Aug 2009 22:14:26 +0000 (15:14 -0700)]
Merge branch 'jc/shortstatus' into next
* jc/shortstatus:
git commit --dry-run -v: show diff in color when asked
Documentation/git-commit.txt: describe --dry-run
Thomas Rast [Sat, 15 Aug 2009 13:56:39 +0000 (15:56 +0200)]
add -p: do not attempt to coalesce mode changes
In
0392513 (add-interactive: refactor mode hunk handling, 2009-04-16),
we merged the interaction loops for mode changes and hunk staging.
This was fine at the time, because
0beee4c (git-add--interactive:
remove hunk coalescing, 2008-07-02) removed hunk coalescing.
However, in
7a26e65 (Revert "git-add--interactive: remove hunk
coalescing", 2009-05-16), we resurrected it. Since then, the code
would attempt in vain to merge mode changes with diff hunks,
corrupting both in the process.
We add a check to the coalescing loop to ensure it only looks at diff
hunks, thus skipping mode changes.
Noticed-by: Kirill Smelkov <kirr@mns.spb.ru>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Kirill Smelkov [Sat, 15 Aug 2009 12:26:49 +0000 (16:26 +0400)]
git add -p: demonstrate failure when staging both mode and hunk
When trying to stage changes to file which has also pending `chmod +x`,
`git add -p` produces lots of 'Use of uninitialized value ...' warnings
and fails to do the job:
$ echo content >> file
$ chmod +x file
$ git add -p
diff --git a/file b/file
index
e69de29..
d95f3ad
--- a/file
+++ b/file
old mode 100644
new mode 100755
Stage mode change [y,n,q,a,d,/,j,J,g,?]? y
@@ -0,0 +1 @@
+content
Stage this hunk [y,n,q,a,d,/,K,g,e,?]? y
Use of uninitialized value $o_ofs in addition (+) at .../git-add--interactive line 776.
Use of uninitialized value $ofs in numeric le (<=) at .../git-add--interactive line 806.
Use of uninitialized value $o0_ofs in concatenation (.) or string at .../git-add--interactive line 830.
Use of uninitialized value $n0_ofs in concatenation (.) or string at .../git-add--interactive line 830.
Use of uninitialized value $o_ofs in addition (+) at .../git-add--interactive line 776.
fatal: corrupt patch at line 5
diff --git a/file b/file
index
e69de29..
d95f3ad
--- a/file
+++ b/file
@@ -,0 + @@
+content
Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 15 Aug 2009 09:14:14 +0000 (02:14 -0700)]
git commit --dry-run -v: show diff in color when asked
The earlier implementation of --dry-run didn't duplicate the use of color
"git status -v" set up for diff output.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 15 Aug 2009 08:58:37 +0000 (01:58 -0700)]
Documentation/git-commit.txt: describe --dry-run
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Lars Hjemli [Sat, 15 Aug 2009 08:40:42 +0000 (10:40 +0200)]
Documentaqtion/git-submodule.txt: Typofix
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 15 Aug 2009 02:55:06 +0000 (19:55 -0700)]
Merge branch 'ld/p4' into next
* ld/p4:
git-p4: stream from perforce to speed up clones
Junio C Hamano [Sat, 15 Aug 2009 02:54:03 +0000 (19:54 -0700)]
Merge branch 'jl/submodule-summary-diff-files' into next
* jl/submodule-summary-diff-files:
git submodule summary: add --files option
Junio C Hamano [Sat, 15 Aug 2009 02:54:03 +0000 (19:54 -0700)]
Merge branch 'oa/stash-na' into next
* oa/stash-na:
git stash: Give friendlier errors when there is nothing to apply
Junio C Hamano [Sat, 15 Aug 2009 02:54:03 +0000 (19:54 -0700)]
Merge branch 'mr/gitweb-xz' into next
* mr/gitweb-xz:
gitweb: add support for XZ compressed snapshots
gitweb: update INSTALL regarding specific snapshot settings
gitweb: support to globally disable a snapshot format