Commit Graph

17052 Commits

Author SHA1 Message Date
Junio C Hamano
fe6beab7e8 Test that git-am does not lose -C/-p/--whitespace options
These tests make sure that "git am" does not lose command line options
specified when it was started, after it is interrupted by a patch that
does not apply earlier in the series.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-04 18:45:02 -08:00
Junio C Hamano
22db240dd1 git-am: propagate --3way options as well
The reasoning is the same as the previous patch, where we made -C<n>
and -p<n> propagate across a failure.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-04 18:45:02 -08:00
Junio C Hamano
a20033796b git-am: propagate -C<n>, -p<n> options as well
These options are meant to deal with patches that do not apply cleanly
due to the differences between the version the patch was based on and
the version "git am" is working on.

Because a series of patches applied in the same "git am" run tends to
come from the same source, it is more useful to propagate these options
after the application stops.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-04 18:45:01 -08:00
Junio C Hamano
1556ef1e37 git-am --whitespace: do not lose the command line option
When you start "git am --whitespace=fix" and the patch application process
is interrupted by an unapplicable patch early in the series, after
fixing the offending patch, the remainder of the patch should be processed
still with --whitespace=fix when restarted with "git am --resolved" (or
dropping the offending patch with "git am --skip").

The breakage was introduced by the commit 67dad68 (add -C[NUM] to git-am,
2007-02-08); this should fix it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-04 18:45:01 -08:00
Tor Arvid Lund
7f705dc368 git-p4: Fix bug in p4Where method.
When running:

p4 where //depot/SomePath/...

The result can in some situations look like:

//depot/SomePath/... //client/SomePath/... /home/user/p4root/SomePath/...
-//depot/SomePath/UndesiredSubdir/... //client/SomePath/UndesiredSubdir/... /home/user/p4root/SomePath/UndesiredSubdir/...

This depends on the users Client view. The current p4Where method will now
return /home/user/p4root/SomePath/UndesiredSubdir/... which is not what we
want. This patch loops through the results from "p4 where", and picks the one
where the depotFile exactly matches the given depotPath (//depot/SomePath/...
in this example).

Signed-off-by: Tor Arvid Lund <torarvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-04 18:44:16 -08:00
Alex Riesen
304dcf262e Report symlink failures in merge-recursive
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-04 18:05:51 -08:00
Alex Riesen
7be77de266 Make chdir failures visible
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-04 18:05:51 -08:00
Alex Riesen
47d32af233 Make some of fwrite/fclose/write/close failures visible
So that full filesystem conditions or permissions problems won't go
unnoticed.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-04 18:05:41 -08:00
William Pursell
070434d02b Add 'g' command to go to a hunk
When a minor change is made while the working directory is in a bit of a
mess, it is somewhat difficult to wade through all of the hunks using git
add --patch.  This allows one to jump to the hunk that needs to be staged
without having to respond 'n' to each preceding hunk.

Signed-off-by: William Pursell <bill.pursell@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-04 17:59:45 -08:00
William Pursell
3f6aff6889 Add subroutine to display one-line summary of hunks
This commit implements a rather simple-minded mechanism to display a
one-line summary of the hunks in an array ref.  The display consists of
the line numbers and the first changed line, truncated to 80 characters.
20 lines are displayed at a time, and the index of the first undisplayed
line is returned, allowing the caller to display more if desired.  (The 20
and 80 should be made configurable.)

Signed-off-by: William Pursell <bill.pursell@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-04 17:59:41 -08:00
Junio C Hamano
123ed65908 Merge branch 'dm/svn-remote'
* dm/svn-remote:
  git-svn: Make branch use correct svn-remote
2008-12-03 22:44:26 -08:00
Junio C Hamano
ad685681c2 Merge branch 'jn/gitweb-utf8'
* jn/gitweb-utf8:
  gitweb: Fix handling of non-ASCII characters in inserted HTML files
2008-12-03 22:03:09 -08:00
Jeff King
c76b4c81e7 add stage to gitignore
This is a generated builtin since 24b1f65f (Install git-stage in
exec-path).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-03 21:29:03 -08:00
Miklos Vajna
30353a40f7 submodule: use git rev-parse -q
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-03 14:27:18 -08:00
Miklos Vajna
5a92d19021 rebase: use git rev-parse -q
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-03 14:27:17 -08:00
Miklos Vajna
2d17985782 pull: use git rev-parse -q
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-03 14:27:17 -08:00
Miklos Vajna
a86e8c1cfc lost-found: use git rev-parse -q
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-03 14:27:17 -08:00
Miklos Vajna
d69da76dd0 filter-branch: use git rev-parse -q
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-03 14:27:17 -08:00
Deskin Miller
a0fbc87cff git-svn: Make branch use correct svn-remote
The 'branch' subcommand incorrectly had the svn-remote to use hardcoded
as 'svn', the default remote name.  This meant that branches derived
from other svn-remotes would try to use the branch and tag configuration
for the 'svn' remote, potentially copying would-be branches to the wrong
place in SVN, into the branch namespace for another project.

Fix this by using the remote name extracted from the svn info for the
specified git ref.  Add a testcase for this behaviour.

[jc: squashed in a fix to test from Michael J Gruber for older svn (1.4)]

Signed-off-by: Deskin Miller <deskinm@umich.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-03 01:54:24 -08:00
Junio C Hamano
ae26e7c749 Merge branch 'jc/rm-i-t-a'
* jc/rm-i-t-a:
  git add --intent-to-add: do not let an empty blob be committed by accident
  git add --intent-to-add: fix removal of cached emptiness
  builtin-rm.c: explain and clarify the "local change" logic
  Extend index to save more flags
2008-12-03 00:38:12 -08:00
Junio C Hamano
6dbcb59e82 Merge branch 'maint'
* maint:
  xdiff: give up scanning similar lines early
2008-12-03 00:34:58 -08:00
Junio C Hamano
24b1f65fed Install git-stage in exec-path
Earlier the plan was to eventually eradicate git-foo executables from the
filesystem for all the built-in commands, but when we released 1.6.0 we
decided not to do so.  Instead, it has been promised that by prepending
the output from $(git --exec-path) to your $PATH, you can keep using the
dashed form of commands.

This also allows "git stage" to appear in the autogenerated command list,
which is used to offer man pages by "git help" command.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-03 00:30:34 -08:00
Junio C Hamano
2ab4de57ea Merge branch 'jk/maint-commit-v-strip' into maint
* jk/maint-commit-v-strip:
  commit: Fix stripping of patch in verbose mode.
2008-12-02 23:47:25 -08:00
Davide Libenzi
733070bea9 xdiff: give up scanning similar lines early
In a corner case of large files whose lines do not match uniquely, the
loop to eliminate a line that matches multiple locations adjacent to a run
of lines that do not uniquely match wasted too much cycles.  Fix this by
giving up early after scanning 100 lines in both direction.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-02 23:45:37 -08:00
Junio C Hamano
0fd9d7e66d Merge branch 'bc/maint-keep-pack' into maint
* bc/maint-keep-pack:
  repack: only unpack-unreachable if we are deleting redundant packs
  t7700: test that 'repack -a' packs alternate packed objects
  pack-objects: extend --local to mean ignore non-local loose objects too
  sha1_file.c: split has_loose_object() into local and non-local counterparts
  t7700: demonstrate mishandling of loose objects in an alternate ODB
  builtin-gc.c: use new pack_keep bitfield to detect .keep file existence
  repack: do not fall back to incremental repacking with [-a|-A]
  repack: don't repack local objects in packs with .keep file
  pack-objects: new option --honor-pack-keep
  packed_git: convert pack_local flag into a bitfield and add pack_keep
  t7700: demonstrate mishandling of objects in packs with a .keep file
2008-12-02 23:00:04 -08:00
Junio C Hamano
e23f6822df Merge branch 'js/mingw-rename-fix' into maint
* js/mingw-rename-fix:
  compat/mingw.c: Teach mingw_rename() to replace read-only files
2008-12-02 22:38:07 -08:00
Jakub Narebski
2dcb5e1ac8 gitweb: Fix handling of non-ASCII characters in inserted HTML files
Use new insert_file() subroutine to insert HTML chunks from external
files: $site_header, $home_text (by default indextext.html),
$site_footer, and $projectroot/$project/REAME.html.

All non-ASCII chars of those files will be broken by Perl IO layer
without decoding to utf8, so insert_file() does to_utf8() on each
printed line; alternate solution would be to open those files with
"binmode $fh, ':utf8'", or even all files with "use open qw(:std :utf8)".

Note that inserting README.html lost one of checks for simplicity.

Noticed-by: Tatsuki Sugiura <sugi@nemui.org>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-02 18:03:07 -08:00
Miklos Vajna
757c7f60a7 git-stash: use git rev-parse -q
Don't redirect stderr to /dev/null, use -q to suppress the output on
stderr.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-02 16:54:01 -08:00
Junio C Hamano
9b3b7fd807 Merge branch 'maint'
* maint:
  User's Manual: remove duplicated url at the end of Appendix B
2008-12-02 16:13:21 -08:00
Johannes Sixt
deb13872be t4030-diff-textconv: Make octal escape sequence more portable
There are printfs around that do not grok '\1', but need '\01'.
Discovered on AIX 4.3.x.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-02 16:13:16 -08:00
Scott Chacon
11920d28da Add a built-in alias for 'stage' to the 'add' command
This comes from conversation at the GitTogether where we thought it would
be helpful to be able to teach people to 'stage' files because it tends
to cause confusion when told that they have to keep 'add'ing them.

This continues the movement to start referring to the index as a
staging area (eg: the --staged alias to 'git diff'). Also adds a
doc file for 'git stage' that basically points to the docs for
'git add'.

Signed-off-by: Scott Chacon <schacon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-02 16:13:16 -08:00
Linus Torvalds
d404bf0288 Add backslash to list of 'crud' characters in real name
We remove crud characters at the beginning and end of real-names so that
when we see email addresses like

	From: "David S. Miller" <davem@davemloft.net>

we drop the quotes around the name when we parse that and split it up into
name and email.

However, the list of crud characters was basically just a random list of
common things that are found around names, and it didn't contain the
backslash character that some insane scripts seem to use when quoting
things. So now the kernel has a number of authors listed like

	Author: \"Rafael J. Wysocki\ <rjw@sisk.pl>

because the author name had started out as

	From: \"Rafael J. Wysocki\" <rjw@sisk.pl>

and the only "crud" character we noticed and removed was the final
double-quote at the end.

We should probably do better quote removal from names anyway, but this is
the minimal obvious patch.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-02 15:29:13 -08:00
Junio C Hamano
46059cc632 Makefile: introduce NO_PTHREADS
This introduces make variable NO_PTHREADS for platforms that lack the
support for pthreads library or people who do not want to use it for
whatever reason.  When defined, it makes the multi-threaded index
preloading into a no-op, and also disables threaded delta searching by
pack-objects.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Mike Ralphson <mike@abacus.co.uk>
Tested-by: Johannes Sixt <j6t@kdbg.org> (AIX 4.3.x)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-02 15:29:12 -08:00
Christian Couder
5413812f08 Documentation: describe how to "bisect skip" a range of commits
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
2008-12-02 15:29:12 -08:00
Christian Couder
1a66a489d0 bisect: fix "git bisect skip <commit>" and add tests cases
The patch that allows "git bisect skip" to be passed a range of
commits using the "<commit1>..<commit2>" notation is flawed because
it introduces a regression when it was passed a simple rev or commit.

"git bisect skip <commit>" doesn't work any more, because <commit>
is quoted but not properly unquoted.

This patch fixes that and add tests cases to better check when it is
passed commits and range of commits.

While at it, this patch also properly quotes the non range arguments
using the "sq" function.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
2008-12-02 15:29:12 -08:00
Giuseppe Bilotta
ff3c0ff20e Update comment on gitweb_check/get_feature
This is taken from a patch from Giuseppe but unfortunately it came
too late to replace the series that was already on "next".  The comment
he updated here is better than the version we had previously, so I am
cherry-picking this bit not to lose it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-02 15:28:36 -08:00
Junio C Hamano
dcbe0bd0d4 Merge branch 'gb/gitweb-feature'
* gb/gitweb-feature:
  gitweb: make gitweb_check_feature a boolean wrapper
  gitweb: rename gitweb_check_feature to gitweb_get_feature
  gitweb: fix 'ctags' feature check and others
2008-12-02 15:27:29 -08:00
Junio C Hamano
ed56049058 Merge git://repo.or.cz/git-gui
* git://repo.or.cz/git-gui:
  git-gui: Teach start_push_anywhere_action{} to notice when remote is a mirror.
2008-12-02 15:27:05 -08:00
Junio C Hamano
521ae135b7 Merge git://git.kernel.org/pub/scm/gitk/gitk
* git://git.kernel.org/pub/scm/gitk/gitk:
  gitk: Add a menu option to start git gui
  gitk: Make line origin search update the busy status
  gitk: Update German translation
  gitk: Fix bug in accessing undefined "notflag" variable
  gitk: Highlight only when search type is "containing:".
  gitk: Fix context menu items for generating diffs when in tree mode
2008-12-02 15:25:48 -08:00
Miklos Vajna
25e30fa08e User's Manual: remove duplicated url at the end of Appendix B
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-02 15:17:07 -08:00
Linus Torvalds
9e8eceab73 Add 'merge' mode to 'git reset'
We have always had a nice way to reset a working tree to another state
while carrying our changes around: "git read-tree -u -m". Yes, it fails if
the target tree is different in the paths that are dirty in the working
tree, but this is how we used to switch branches in "git checkout", and it
worked fine.

However, perhaps exactly _because_ we've supported this from very early
on, another low-level command, namely "git reset", never did.

But as time went on, 'git reset' remains as a very common command, while
'git read-tree' is now a very odd and low-level plumbing thing that nobody
sane should ever use, because it only makes sense together with other
operations like either switching branches or just rewriting HEAD.

Which means that we have effectively lost the ability to do something very
common: jump to another point in time without always dropping all our
dirty state.

So add this kind of mode to "git reset", and since it merges your changes
to what you are resetting to, just call it that: "git reset --merge".

I've wanted this for a long time, since I very commonly carry a dirty
tree while working on things. My main 'Makefile' file quite often has the
next version already modified, and sometimes I have local modifications
that I don't want to commit, but I still do pulls and patch applications,
and occasionally want to do "git reset" to undo them - while still keeping
my local modifications.

(Maybe we could eventually change it to something like "if we have a
working tree, default to --merge, otherwise default to --mixed").

NOTE! This new mode is certainly not perfect. There's a few things to look
out for:

 - if the index has unmerged entries, "--merge" will currently simply
   refuse to reset ("you need to resolve your current index first").
   You'll need to use "--hard" or similar in this case.

   This is sad, because normally a unmerged index means that the working
   tree file should have matched the source tree, so the correct action is
   likely to make --merge reset such a path to the target (like --hard),
   regardless of dirty state in-tree or in-index. But that's not how
   read-tree has ever worked, so..

 - "git checkout -m" actually knows how to do a three-way merge, rather
   than refuse to update the working tree. So we do know how to do that,
   and arguably that would be even nicer behavior.

   At the same time it's also arguably true that there is a chance of loss
   of state (ie you cannot get back to the original tree if the three-way
   merge ends up resolving cleanly to no diff at all), so the "refuse to
   do it" is in some respects the safer - but less user-friendly - option.

In other words, I think 'git reset --merge' could become a bit more
friendly, but this is already a big improvement. It allows you to undo a
recent commit without having to throw your current work away.

Yes, yes, with a dirty tree you could always do

	git stash
	git reset --hard
	git stash apply

instead, but isn't "git reset --merge" a nice way to handle one particular
simple case?

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
--

Hmm? Maybe I'm the only one that does a lot of work with a dirty tree, and
sure, I can do other things like the "git stash" thing, or using "git
checkout" to actually create a new branch, and then playing games with
branch renaming etc to make it work like this one.

But I suspect others dislike how "git reset" works too. But see the
suggested improvements above.

 builtin-reset.c |   26 ++++++++++++++++++--------
 1 files changed, 18 insertions(+), 8 deletions(-)
2008-12-02 15:15:58 -08:00
Mark Burton
861c68e3b6 git-gui: Teach start_push_anywhere_action{} to notice when remote is a mirror.
When the destination repository is a mirror, this function goofed by still
passing a refspec to git-push. Now it notices that the remote is a mirror
and holds the refspec.

Signed-off-by: Mark Burton <markb@ordern.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-12-02 07:20:19 -08:00
Alexander Gavrilov
7fb0abb195 gitk: Add a menu option to start git gui
Git gui already has menu commands to start gitk, and this makes the
relation symmetric.

[paulus@samba.org - changed "Git Gui" in the menu item to "git gui"]

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-12-02 09:43:12 +11:00
Alexander Gavrilov
f3413079d6 gitk: Make line origin search update the busy status
Currently the 'show origin of this line' feature does not update the
status field of the gitk window, so it is not evident that any
processing is going on.  It may seem at first that clicking the item
had no effect.

This commit adds calls to set and clear the busy status with an
appropriate title, similar to other search commands.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-12-02 09:43:12 +11:00
Christian Stimming
a8833ef540 gitk: Update German translation
This takes into account the most recent po file merge.

Signed-off-by: Christian Stimming <stimming@tuhh.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-12-02 09:40:28 +11:00
Paul Mackerras
6e7e87c762 gitk: Fix bug in accessing undefined "notflag" variable
As pointed out by Johannes Sixt and Alexander Gavrilov, commit
2958228430 ("gitk: Fix switch statement
in parseviewargs") exposed a latent bug in that $notflag was never
initialized.  Since it isn't used either, this removes it entirely.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-12-02 09:28:06 +11:00
Paul Mackerras
8b39e04f39 gitk: Highlight only when search type is "containing:".
When the search type is "touching paths" or "adding/removing string",
it's not very useful to highlight instances of the search string in
the commit message, headline or author name, so this disables the
highlighting in those cases.

This was suggested by Mark Burton <markb@ordern.com>, but the
implementation is different to his patch, which tested $gdttype at
each place where $markingmatches was tested.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-12-02 09:27:30 +11:00
Junio C Hamano
3273ebc759 GIT 1.6.1-rc1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-01 00:55:19 -08:00
Junio C Hamano
aaab7ea3cd Include git-gui--askpass in git-gui RPM package
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-01 00:54:16 -08:00
Junio C Hamano
39a76bdd7d Merge git://git.kernel.org/pub/scm/gitk/gitk
* git://git.kernel.org/pub/scm/gitk/gitk:
  gitk: Avoid handling the Return key twice in Add Branch
  gitk: Show local changes properly when we have a path limit
  gitk: Fix switch statement in parseviewargs
  gitk: Index line[hnd]tag arrays by id rather than row number
2008-11-30 22:59:41 -08:00