Code

git.git
16 years agoGIT v1.5.2-rc3 v1.5.2-rc3
Junio C Hamano [Thu, 10 May 2007 21:49:36 +0000 (14:49 -0700)]
GIT v1.5.2-rc3

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoDocument 'git-log --decorate'
Michael Hendricks [Thu, 10 May 2007 22:09:38 +0000 (16:09 -0600)]
Document 'git-log --decorate'

Signed-off-by: Michael Hendricks <michael@ndrix.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoCorrect error message in revert/cherry-pick
Shawn O. Pearce [Thu, 10 May 2007 22:10:36 +0000 (18:10 -0400)]
Correct error message in revert/cherry-pick

We now write to MERGE_MSG, not .msg.  I missed this earlier
when I changed the target we write to.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoMerge branch 'master' of git://repo.or.cz/git-gui
Junio C Hamano [Thu, 10 May 2007 22:08:18 +0000 (15:08 -0700)]
Merge branch 'master' of git://repo.or.cz/git-gui

* 'master' of git://repo.or.cz/git-gui:
  git gui 0.7.0
  git-gui: Paperbag fix blame in subdirectory
  git-gui: Format author/committer times in ISO format
  git-gui: Cleanup minor nits in blame code
  git-gui: Generate blame on uncommitted working tree file
  git-gui: Smarter command line parsing for browser, blame
  git-gui: Use prefix if blame is run in a subdirectory
  git-gui: Convert blame to the "class" way of doing things
  git-gui: Don't attempt to inline array reads in methods
  git-gui: Convert browser, console to "class" format
  git-gui: Define a simple class/method system
  git-gui: Allow shift-{k,j} to select a range of branches to merge
  git-gui: Call changes "Staged" and "Unstaged" in file list titles.

16 years agogit gui 0.7.0 gitgui-0.7.0
Shawn O. Pearce [Thu, 10 May 2007 21:54:45 +0000 (17:54 -0400)]
git gui 0.7.0

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Paperbag fix blame in subdirectory
Shawn O. Pearce [Wed, 9 May 2007 22:35:04 +0000 (18:35 -0400)]
git-gui: Paperbag fix blame in subdirectory

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'maint'
Junio C Hamano [Thu, 10 May 2007 21:48:04 +0000 (14:48 -0700)]
Merge branch 'maint'

* maint:
  Fix documentation of tag in git-fast-import.txt
  Properly handle '0' filenames in import-tars

16 years agoMerge branch 'maint' of git://repo.or.cz/git/fastimport into maint
Junio C Hamano [Thu, 10 May 2007 21:47:14 +0000 (14:47 -0700)]
Merge branch 'maint' of git://repo.or.cz/git/fastimport into maint

* 'maint' of git://repo.or.cz/git/fastimport:
  Fix documentation of tag in git-fast-import.txt
  Properly handle '0' filenames in import-tars

16 years agoFix documentation of tag in git-fast-import.txt
Richard P. Curnow [Wed, 9 May 2007 22:13:44 +0000 (23:13 +0100)]
Fix documentation of tag in git-fast-import.txt

The tag command does not take a trailing LF.

Signed-off-by: Richard P. Curnow <rc@rc0.org.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'gfi-maint' into maint
Shawn O. Pearce [Thu, 10 May 2007 21:31:27 +0000 (17:31 -0400)]
Merge branch 'gfi-maint' into maint

* gfi-maint:
  Properly handle '0' filenames in import-tars

16 years agogitweb: Do not use absolute font sizes
Petr Baudis [Wed, 9 May 2007 01:41:50 +0000 (03:41 +0200)]
gitweb: Do not use absolute font sizes

Avoid specifying font sizes in pixels, since that is just pure evil.
Pointed out by Chris Riddoch.

Note that this is pretty much just a proposal; I didn't test if everything
fits perfectly right, but things seem to be pretty much okay. repo.or.cz
uses it now as a test drive - if you find any visual quirks, please point
them out, with a patch if possible since I'm total CSS noob and debugging
CSS is an extremely painful experience for me.

Note that this patch actually does change visual look of gitweb in Firefox
with my resolution and default settings - everything is bigger and I can't
explain the joy of actually seeing gitweb text that is in _readable_ size;
also, my horizontal screen real estate feels better used now. But judging
from the look of most modern webpages on the 'net, most people prefer
reading the web with strained eyes and/or a magnifying glass (I wonder what
species of scientists should look into this mystifying phenomenon) - so,
please tell us what you think.

Maybe we might want to get rid of absolute sizes other than font sizes in
the CSS file too in the long term.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoGit.pm: config_boolean() -> config_bool()
Petr Baudis [Wed, 9 May 2007 10:49:41 +0000 (12:49 +0200)]
Git.pm: config_boolean() -> config_bool()

This patch renames config_boolean() to config_bool() for consistency with
the commandline interface and because it is shorter but still obvious. ;-)
It also changes the return value from some obscure string to real Perl
boolean, allowing for clean user code.

Signed-off-by: Petr Baudis <pasky@suse.cz>
16 years agoMerge branch 'maint'
Junio C Hamano [Thu, 10 May 2007 20:52:54 +0000 (13:52 -0700)]
Merge branch 'maint'

* maint:
  .mailmap: add some aliases
  SPECIFYING RANGES typo fix: it it => it is
  git-clone: don't get fooled by $PWD
  Fix documentation of tag in git-fast-import.txt

16 years ago.mailmap: add some aliases
Junio C Hamano [Thu, 10 May 2007 20:24:21 +0000 (13:24 -0700)]
.mailmap: add some aliases

16 years agoSPECIFYING RANGES typo fix: it it => it is
Jari Aalto [Mon, 30 Apr 2007 18:37:57 +0000 (21:37 +0300)]
SPECIFYING RANGES typo fix: it it => it is

Signed-off-by: Jari Aalto <jari.aalto@cante.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agogit-clone: don't get fooled by $PWD
Junio C Hamano [Thu, 10 May 2007 00:11:15 +0000 (17:11 -0700)]
git-clone: don't get fooled by $PWD

If you have /home/me/git symlink pointing at /pub/git/mine,
trying to clone from /pub/git/his/ using relative path would not
work as expected:

$ cd /home/me
        $ cd git
        $ ls ../
        his    mine
        $ git clone -l -s -n ../his/stuff.git

This is because "cd ../his/stuff.git" done inside git-clone to
check if the repository is local is confused by $PWD, which is
set to /home/me, and tries to go to /home/his/stuff.git which is
different from /pub/git/his/stuff.git.

We could probably say "set -P" (or "cd -P") instead, if we know
the shell is POSIX, but the way the patch is coded is probably
more portable.

[jc: this is updated with Andy Whitcroft's improvements]

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agogitweb: choose appropriate view for file type if a= parameter missing
Gerrit Pape [Thu, 10 May 2007 07:32:07 +0000 (07:32 +0000)]
gitweb: choose appropriate view for file type if a= parameter missing

gitweb URLs use the a= parameter for the view to use on the given path, such
as "blob" or "tree".  Currently, if a gitweb URL omits the a= parameter,
gitweb just shows the top-level repository summary, regardless of the path
given.  gitweb could instead choose an appropriate view based on the file
type: blob for blobs (files), tree for trees (directories), and summary if
no path given (the URL included no f= parameter, or an empty f= parameter).

Apart from making gitweb more robust and supporting URL editing more easily,
this change would aid the creation of shortcuts to git repositories using
simple substitution, such as:
http://example.org/git/?p=path/to/repo.git;hb=HEAD;f=%s

With this patch, if given the hash through the h= parameter, or the hash
base (hb=) and a filename (f=), gitweb uses cat-file -t to automatically set
the a= parameter.

This feature was requested by Josh Triplett through
 http://bugs.debian.org/410465

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoAdded new git-gui library files to rpm spec
Quy Tonthat [Thu, 10 May 2007 07:03:15 +0000 (17:03 +1000)]
Added new git-gui library files to rpm spec

"make rpm" breaks without these files.

Signed-off-by: Quy Tonthat <qtonthat@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoFix documentation of tag in git-fast-import.txt
Richard P. Curnow [Wed, 9 May 2007 22:13:44 +0000 (23:13 +0100)]
Fix documentation of tag in git-fast-import.txt

The tag command does not take a trailing LF.

Signed-off-by: Richard P. Curnow <rc@rc0.org.uk>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agot9400: skip cvsserver test if Perl SQLite interface is unavailable
Junio C Hamano [Wed, 9 May 2007 16:19:42 +0000 (09:19 -0700)]
t9400: skip cvsserver test if Perl SQLite interface is unavailable

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoMerge branch 'fl/cvsserver'
Junio C Hamano [Wed, 9 May 2007 07:33:40 +0000 (00:33 -0700)]
Merge branch 'fl/cvsserver'

* fl/cvsserver:
  cvsserver: Add test cases for git-cvsserver

16 years agoMerge branch 'jc/diffopt'
Junio C Hamano [Wed, 9 May 2007 07:23:45 +0000 (00:23 -0700)]
Merge branch 'jc/diffopt'

* jc/diffopt:
  diff -S: release the image after looking for needle in it
  diff -M: release the preimage candidate blobs after rename detection.
  diff.c: do not use a separate "size cache".
  diff: release blobs after generating textual diff.

16 years agoMerge branch 'jn/gitweb'
Junio C Hamano [Wed, 9 May 2007 07:23:41 +0000 (00:23 -0700)]
Merge branch 'jn/gitweb'

* jn/gitweb:
  gitweb: Show combined diff for merge commits in 'commit' view
  gitweb: Show combined diff for merge commits in 'commitdiff' view
  gitweb: Make it possible to use pre-parsed info in git_difftree_body
  gitweb: Add combined diff support to git_patchset_body
  gitweb: Add combined diff support to git_difftree_body
  gitweb: Add parsing of raw combined diff format to parse_difftree_raw_line

16 years agocvsserver: Add test cases for git-cvsserver
Frank Lichtenheld [Wed, 2 May 2007 00:45:22 +0000 (02:45 +0200)]
cvsserver: Add test cases for git-cvsserver

Use the :fork: access method to force cvs to
call "$CVS_SERVER server" even when accessing a local
repository.

Add a basic test for checkout and some tests for update.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoUpdate documentation links to point at 1.5.1.4
Junio C Hamano [Wed, 9 May 2007 06:47:35 +0000 (23:47 -0700)]
Update documentation links to point at 1.5.1.4

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoIncrease pack.depth default to 50
Theodore Ts'o [Tue, 8 May 2007 13:28:26 +0000 (09:28 -0400)]
Increase pack.depth default to 50

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoAdd pack.depth option to git-pack-objects.
Theodore Ts'o [Tue, 8 May 2007 13:28:26 +0000 (09:28 -0400)]
Add pack.depth option to git-pack-objects.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoUse .git/MERGE_MSG in cherry-pick/revert
Shawn O. Pearce [Tue, 8 May 2007 02:57:15 +0000 (22:57 -0400)]
Use .git/MERGE_MSG in cherry-pick/revert

Rather than storing the temporary commit message data in .msg (in
the working tree) we now store the message data in .git/MERGE_MSG.

By storing the message in the .git/ directory we are sure we will
never have a collision with a user file, should a project actually
have a ".msg" file in their top level tree.  We also don't need to
worry about leaving this stale file behind during a `reset --hard`
and have it show up in the output of status.

We are using .git/MERGE_MSG here to store the temporary message as
it is an already established convention between git-merge, git-am
and git-rebase that git-commit will default the user's edit buffer
to the contents of .git/MERGE_MSG.  If the user is going to need
to resolve this commit or wants to edit the message on their own
prepping that file with the desired message "just works".

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoMerge branch 'maint'
Junio C Hamano [Wed, 9 May 2007 05:46:56 +0000 (22:46 -0700)]
Merge branch 'maint'

* maint:
  GIT v1.5.1.4
  Add howto files to rpm packages.
  wcwidth redeclaration
  user-manual: fix clone and fetch typos

16 years agoGIT v1.5.1.4 v1.5.1.4
Junio C Hamano [Wed, 9 May 2007 05:10:56 +0000 (22:10 -0700)]
GIT v1.5.1.4

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoAdd howto files to rpm packages.
Quy Tonthat [Tue, 8 May 2007 14:19:41 +0000 (00:19 +1000)]
Add howto files to rpm packages.

RPM packages did not include howto files which causes broken
links in howto-index.html

Signed-off-by: Quy Tonthat <qtonthat@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agogit-gui: Format author/committer times in ISO format
Shawn O. Pearce [Wed, 9 May 2007 04:48:27 +0000 (00:48 -0400)]
git-gui: Format author/committer times in ISO format

This is a simple change to match what gitk does when it shows
a commit; we format using ISO dates (yyyy-mm-dd HH:MM:SS).

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Cleanup minor nits in blame code
Shawn O. Pearce [Wed, 9 May 2007 04:36:25 +0000 (00:36 -0400)]
git-gui: Cleanup minor nits in blame code

We can use [list ...] rather than "", especially when we are talking
about values as then they are properly escaped if necessary.  Small
nit, but probably not a huge deal as the only data being inlined here
is Tk paths.

Some of the lines in the parser code were longer than 80 characters
wide, and they actually were all the same value on the end part of
the line.  Rather than keeping the mess copied-and-pasted around we
can set the last argument into a local variable and reuse it many
times.

The commit display code was also rather difficult to read on an 80
character wide terminal, so I'm moving it all into a double quoted
string that is easier to read.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Generate blame on uncommitted working tree file
Shawn O. Pearce [Wed, 9 May 2007 02:48:47 +0000 (22:48 -0400)]
git-gui: Generate blame on uncommitted working tree file

If the user doesn't give us a revision parameter to our blame
subcommand then we can generate blame against the working tree
file by passing the file path off to blame with the --contents
argument.  In this case we cannot obtain the contents of the
file from the ODB; instead we must obtain the contents by
reading the working directory file as-is.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Smarter command line parsing for browser, blame
Shawn O. Pearce [Wed, 9 May 2007 02:36:01 +0000 (22:36 -0400)]
git-gui: Smarter command line parsing for browser, blame

The browser subcommand now optionally accepts a single revision
argument; if no revision argument is supplied then we use the
current branch as the tree to browse.  This is very common, so
its a nice option.

Our blame subcommand now tries to perform the same assumptions
as the command line git-blame; both the revision and the file
are optional.  We assume the argument is a filename if the file
exists in the working directory, otherwise we assume the argument
is a revision name.  A -- can be supplied between the two to force
parsing, or before the filename to force it to be a filename.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Use prefix if blame is run in a subdirectory
Shawn O. Pearce [Wed, 9 May 2007 01:58:25 +0000 (21:58 -0400)]
git-gui: Use prefix if blame is run in a subdirectory

I think it was Andy Parkins who pointed out that git gui blame HEAD f
does not work if f is in a subdirectory and we are currently running
git-gui within that subdirectory.  This is happening because we did
not take the user's prefix into account when we computed the file
path in the repository.

We now assume the prefix as returned by rev-parse --show-prefix is
valid and we use that during the command line blame subcommand when
we apply the parameters.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Convert blame to the "class" way of doing things
Shawn O. Pearce [Wed, 9 May 2007 01:33:14 +0000 (21:33 -0400)]
git-gui: Convert blame to the "class" way of doing things

Our blame viewer code has historically been a mess simply
because the data for multiple viewers was all crammed into
a single pair of Tcl arrays.  This made the code hard to
read and even harder to maintain.

Now that we have a slightly better way of tracking the data
for our "meta-widgets" we can make use of it here in the
blame viewer to cleanup the code and make it easier to work
with long term.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Don't attempt to inline array reads in methods
Shawn O. Pearce [Wed, 9 May 2007 01:31:31 +0000 (21:31 -0400)]
git-gui: Don't attempt to inline array reads in methods

If a variable reference to a field is to an array, and it is
the only reference to that field in that method we cannot make
it an inlined [set foo] call as the regexp was converting the
Tcl code wrong.  We were producing "[set foo](x)" for "$foo(x)",
and that isn't valid Tcl when foo is an array.  So we just punt
if the only occurance has a ( after it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Convert browser, console to "class" format
Shawn O. Pearce [Wed, 9 May 2007 00:33:47 +0000 (20:33 -0400)]
git-gui: Convert browser, console to "class" format

Now that we have a slightly easier method of working with per-widget
data we should make use of that technique in our browser and console
meta-widgets, as both have a decent amount of information that they
store on a per-widget basis and our current approach of handling
it is difficult to follow.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Define a simple class/method system
Shawn O. Pearce [Tue, 8 May 2007 23:54:05 +0000 (19:54 -0400)]
git-gui: Define a simple class/method system

As most of the git-gui interface is based upon "meta-widgets"
that need to carry around a good deal of state (e.g. console
windows, browser windows, blame viewer) we have a good deal
of messy code that tries to store this meta-widget state in
global arrays, where keys into the array are formed from a
union of a unique "object instance id" and the field name.

This is a simple class system for Tcl that allows us to
hide much of that mess by making Tcl do what it does best;
process strings to manipulate its own code during startup.

Each object instance is placed into its own namespace.  The
namespace is created when the object instance is created and
the namespace is destroyed when the object instance is removed
from the system.  Within that namespace we place variables for
each field within the class; these variables can themselves be
scalar values or full-blown Tcl arrays.

A simple class might be defined as:

  class map {
    field data
    field size 0

    constructor {} {
      return $this
    }
    method set {name value} {
      set data($name) $value
      incr size
    }
    method size {} {
      return $size
    } ifdeleted { return 0 }
  }

All fields must be declared before any constructors or methods.  This
allows our class to generate a list of the fields so it can properly
alter the definition of the constructor and method bodies prior to
passing them off to Tcl for definition with proc. A field may optionally
be given a default/initial value.  This can only be done for non-array
type fields.

Constructors are given full access to all fields of the class, so they
can initialize the data values.  The default values of fields (if any)
are set before the constructor runs, and the implicit local variable
$this is initialized to the instance identifier.

Methods are given access to fields they actually use in their body.
Every method has an implicit "this" argument inserted as its first
parameter; callers of methods must be sure they supply this value.

Some basic optimization tricks are performed (but not much).  We
try to only upvar (locally bind) fields that are accessed within a
method, but we err on the side of caution and may upvar more than
we need to.  If a variable is accessed only once within a method
and that access is by $foo (read) we avoid the upvar and instead
use [set foo] to obtain the value.  This is slightly faster as Tcl
does not need to lookup the variable twice.

We also offer some small syntatic sugar for interacting with Tk and
the fileevent callback system in Tcl.  If a field (say "foo") is used
as "@foo" we insert instead the true global variable name of that
variable into the body of the constructor or method.  This allows easy
binding to Tk textvariable options, e.g.:

  label $w.title -textvariable @title

Proper namespace callbacks can also be setup with the special cb proc
that is defined in each namespace.  [cb _foo a] will invoke the method
_foo in the current namespace, passing it $this as the first (implied)
parameter and a as the second parameter.  This makes it very simple to
connect an object instance to a -command option for a Tk widget or to
a fileevent readable or writable for a file channel.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Allow shift-{k,j} to select a range of branches to merge
Shawn O. Pearce [Wed, 9 May 2007 01:38:46 +0000 (21:38 -0400)]
git-gui: Allow shift-{k,j} to select a range of branches to merge

I found it useful to be able to use j/k (vi-like keys) to move
up and down the list of branches to merge and shift-j/k to do
the selection, much as shift-up/down (arrow keys) would alter
the selection.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'maint'
Shawn O. Pearce [Tue, 8 May 2007 14:42:16 +0000 (10:42 -0400)]
Merge branch 'maint'

* maint:
  git-gui: Call changes "Staged" and "Unstaged" in file list titles.

16 years agogit-gui: Call changes "Staged" and "Unstaged" in file list titles.
Johannes Sixt [Tue, 8 May 2007 11:33:06 +0000 (13:33 +0200)]
git-gui: Call changes "Staged" and "Unstaged" in file list titles.

All menu entries talk about "staging" and "unstaging" changes, but the
titles of the file lists use different wording, which may confuse
newcomers.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agowcwidth redeclaration
Amos Waterland [Tue, 8 May 2007 04:46:08 +0000 (00:46 -0400)]
wcwidth redeclaration

Build fails for git 1.5.1.3 on AIX, with the message:

utf8.c:66: error: conflicting types for 'wcwidth'
/.../lib/gcc/powerpc-ibm-aix5.3.0.0/4.0.3/include/string.h:266: error: previous declaration of 'wcwidth' was here

Fix this by renaming our static variant to our own name.

Signed-off-by: Amos Waterland <apw@us.ibm.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agouser-manual: fix clone and fetch typos
J. Bruce Fields [Tue, 8 May 2007 03:34:26 +0000 (23:34 -0400)]
user-manual: fix clone and fetch typos

More typo fixes from Santi Béjar, plus a couple other mistakes I noticed
along the way.

Cc: Santi Béjar <sbejar@gmail.com>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoRemove duplicate exports from Makefile
Shawn O. Pearce [Tue, 8 May 2007 03:53:06 +0000 (23:53 -0400)]
Remove duplicate exports from Makefile

We already export these variables earlier in the Makefile, right
after they were 'declared'.  There is no point in doing so again.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'master' of git://repo.or.cz/git-gui
Shawn O. Pearce [Tue, 8 May 2007 03:36:31 +0000 (23:36 -0400)]
Merge branch 'master' of git://repo.or.cz/git-gui

* 'master' of git://repo.or.cz/git-gui:
  git-gui: Use vi-like keys in merge dialog
  git-gui: Include commit id/subject in merge choices
  git-gui: Show all possible branches for merge
  git-gui: Move merge support into a namespace
  git-gui: Allow vi keys to scroll the diff/blame regions
  git-gui: Move console procs into their own namespace
  git-gui: Refactor into multiple files to save my sanity
  git-gui: Track our own embedded values and rebuild when they change
  git-gui: Refactor to use our git proc more often
  git-gui: Use option database defaults to set the font
  git-gui: Cleanup common font handling for font_ui
  git-gui: Correct line wrapping for too many branch message
  git-gui: Warn users before making an octopus merge
  git-gui: Include the subject in the status bar after commit

Also perform an evil merge change to update Git's main Makefile to
pass the proper options down into git-gui now that it depends on
reasonable values for 'sharedir' and 'TCL_PATH'.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Use vi-like keys in merge dialog gitgui-0.7.0-rc1
Shawn O. Pearce [Sat, 5 May 2007 06:28:41 +0000 (02:28 -0400)]
git-gui: Use vi-like keys in merge dialog

Since we support vi-like keys for scrolling in other UI contexts
we can easily do so here too.  Tk's handy little `event generate'
makes this a lot easier than I thought it would be.  We may want
to go back and fix some of the other vi-like bindings to redirect
to the arrow and pageup/pagedown keys, rather than running the
view changes directly.

I've bound 'v' to visualize, as this is a somewhat common thing
to want to do in the merge dialog.  Control (or Command) Return
is also bound to start the merge, much as it is bound in the
main window to activate the commit.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Include commit id/subject in merge choices
Shawn O. Pearce [Thu, 3 May 2007 22:21:39 +0000 (18:21 -0400)]
git-gui: Include commit id/subject in merge choices

When merging branches using our local merge feature it can be
handy to know the first few digits of the commit the ref points
at as well as the short description of the branch name.

Unfortunately I'm unable to use three listboxes in a row, as Tcl
freaks out and refuses to let me have a selection in more than
one of them at any given point in time.  So instead we use a
fixed width font in the existing listbox and organize the data
into three columns.  Not nearly as nice looking, but users can
continue to use the listbox's features.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Show all possible branches for merge
Shawn O. Pearce [Wed, 2 May 2007 18:25:22 +0000 (14:25 -0400)]
git-gui: Show all possible branches for merge

Johannes Sixt pointed out that git-gui was randomly selecting
which branch (or tag!) it will show in the merge dialog when
more than one ref points at the same commit.  This can be a
problem for the user if they want to merge a branch, but the
ref that git-gui selected to display was actually a tag that
points at the commit at the tip of that branch.  Since the
user is looking for the branch, and not the tag, its confusing
to not find it, and worse, merging the tag causes git-merge to
generate a different message than if the branch was selected.

While I am in here and am messing around I have changed the
for-each-ref usage to take advantage of its --tcl formatting,
and to fetch the subject line of the commit (or tag) we are
looking at.  This way we could present the subject line in the
UI to the user, given them an even better chance to select
the correct branch.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Move merge support into a namespace
Shawn O. Pearce [Wed, 2 May 2007 17:56:27 +0000 (13:56 -0400)]
git-gui: Move merge support into a namespace

Like the console procs I have moved the code related to merge
support into their own namespace, so that they are isolated
from the rest of the world.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Allow vi keys to scroll the diff/blame regions
Shawn O. Pearce [Tue, 1 May 2007 19:51:09 +0000 (15:51 -0400)]
git-gui: Allow vi keys to scroll the diff/blame regions

Users who are used to vi and recent versions of gitk may want
to scroll the diff region using vi style keybindings.  Since
these aren't bound to anything else and that widget does not
accept focus for data input, we can easily support that too.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Move console procs into their own namespace
Shawn O. Pearce [Tue, 1 May 2007 06:59:53 +0000 (02:59 -0400)]
git-gui: Move console procs into their own namespace

To help modularize git-gui better I'm isolating the code and
variables required to handle our little console windows into
their own namespace.  This way we can say console::new rather
than new_console, and the hidden internal procs to create the
window and read data from our filehandle are off in their own
private little land, where most users don't see them.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Refactor into multiple files to save my sanity
Shawn O. Pearce [Tue, 8 May 2007 03:35:48 +0000 (23:35 -0400)]
git-gui: Refactor into multiple files to save my sanity

I'm finding it difficult to work with a 6,000+ line Tcl script
and not go insane while looking for a particular block of code.
Since most of the program is organized into different units of
functionality and not all users will need all units immediately
on startup we can improve things by splitting procs out into
multiple files and let auto_load handle things for us.

This should help not only to better organize the source, but
it may also improve startup times for some users as the Tcl
parser does not need to read as much script before it can show
the UI.  In many cases the user can avoid reading at least half
of git-gui now.

Unfortunately we now need a library directory in our runtime
location.  This is currently assumed to be $(sharedir)/git-gui/lib
and its expected that the Makefile invoker will setup some sort of
reasonable sharedir value for us, or let us assume its going to be
$(gitexecdir)/../share.

We now also require a tclsh (in TCL_PATH) to just run the Makefile,
as we use tclsh to generate the tclIndex for our lib directory.  I'm
hoping this is not an unncessary burden on end-users who are building
from source.

I haven't really made any functionality changes here, this is just a
huge migration of code from one file to many smaller files.  All of
the new changes are to setup the library path and install the library
files.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogitweb: Show combined diff for merge commits in 'commit' view
Jakub Narebski [Sun, 6 May 2007 23:10:08 +0000 (01:10 +0200)]
gitweb: Show combined diff for merge commits in 'commit' view

When commit shown is a merge commit (has more than one parent),
display combined difftree output (result of git-diff-tree -c).
Earlier (since commit 549ab4a30703012ff3a12b5455d319216805a8db)
difftree output (against first parent) was not printed for merges.

Examples of non-trivial merges:
  5bac4a671907604b5fb4e24ff682d5b0e8431931 (includes rename)
  addafaf92eeb86033da91323d0d3ad7a496dae83 (five parents)
  95f97567c1887d77f3a46b42d8622c76414d964d (evil merge)

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agogitweb: Show combined diff for merge commits in 'commitdiff' view
Jakub Narebski [Sun, 6 May 2007 23:10:07 +0000 (01:10 +0200)]
gitweb: Show combined diff for merge commits in 'commitdiff' view

When 'commitdiff' action is requested without 'hp' (hash parent)
parameter, and commit given by 'h' (hash) parameter is merge commit,
show merge as combined diff.

Earlier for merge commits without 'hp' parameter diff to first parent
was shown.

Note that in compact combined (--cc) format 'uninteresting' hunks
omission mechanism can make that there is no patch corresponding to
line in raw format (difftree) output. That is why (at least for now)
we use --combined and not --cc format for showing commitdiff for merge
commits.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agogitweb: Make it possible to use pre-parsed info in git_difftree_body
Jakub Narebski [Sun, 6 May 2007 23:10:06 +0000 (01:10 +0200)]
gitweb: Make it possible to use pre-parsed info in git_difftree_body

Make it possible to use pre-parsed, or generated by hand, difftree
info in git_difftree_body, similarly to how was and is it done in
git_patchset_body.

Use just introduced feature in git_commitdiff to parse difftree info
(raw diff output) only once: difftree info is now parsed in
git_commitdiff directly, and parsed information is passed to both
git_difftree_body and git_patchset_body. (Till now only git_blobdiff
made use of git_patchset_body ability to use pre-parsed or hand
generated info.) Additionally this makes rename info for combined diff
with renames (or copies) calculated only once in git_difftree_body;
the $difftree is modified and git_patchset_body makes use of added
info.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agogitweb: Add combined diff support to git_patchset_body
Jakub Narebski [Sun, 6 May 2007 23:10:05 +0000 (01:10 +0200)]
gitweb: Add combined diff support to git_patchset_body

Calling convention for combined diff similar to the one for
git_difftree_body subroutine: difftree info (first parameter) must be
result of calling git-diff-tree with -c/--cc option, and all parents
of a commit must be passed as last parameters. See also description in
  "gitweb: Add combined diff support to git_difftree_body"

This ability is not used yet.

Generating "src" file name for renames in combined diff was separated
into fill_from_file_info subroutine; git_difftree_body was modified to
use it. Currently git_difftree_body and git_patchset_body fills this
info separately.

The from-file line in two-line from-file/to-file header is not
hyperlinked: there can be more than one "from"/"src" file. This
differs from HTML output of ordinary (not combined) diff.

format_diff_line subroutine needs extra $from/$to parameters to format
combined diff patch line correctly.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agogitweb: Add combined diff support to git_difftree_body
Jakub Narebski [Sun, 6 May 2007 23:10:04 +0000 (01:10 +0200)]
gitweb: Add combined diff support to git_difftree_body

You have to pass all parents as final parameters of git_difftree_body
subroutine; the number of parents of a diff must be equal to the
number derived from parsing git-diff-tree output, raw combined diff
for git_difftree_body to display combined diff correctly (but it is
not checked).

Currently the possibility of displaying diffree of combined diff is
not used in gitweb code; git_difftree_body is always caled for
ordinary diff, and with only one parent.

Description of output for combined diff:
----------------------------------------

The difftree table for combined diff starts with a cell with pathname
of changed blob (changed file), which if possible is hidden link
(class="list") to the 'blob' view of final version (if it exists),
like for difftree for ordinary diff. If file was deleted in the final
commit then filename is not hyperlinked.

There is no cell with single file status (new, deleted, mode change,
rename), as for combined diff as there is no single status: different
parents might have different status.

If git_difftree_body was called from git_commitdiff (for 'commitdiff'
action) there is inner link to anchor to appropriate fragment (patch)
in patchset body; the "patch" link does not replace "diff" link like
for ordinary diff.

Each of "diff" links is in separate cell, contrary to output for
ordinary diff in which all links are (at least for now) in a single
cell.

For each parent, if file was not present we leave cell empty. If file
was deleted in the result, we provide link to 'blob' view. Otherwise
we provide link to 'commitdiff' view, even if patch (diff) consist
only of extended diff header, and contents is not changed (pure
rename, pure mode change). The only difference is that link to
"blobdiff" view with no contents change is with 'nochange' class.

At last, there is provided link to current version of file as "blob"
link, if the file was not deleted in the result, and lik to history of
a file, if there exists one. (The link to file history might be
confused, at least for now, by renames.)

Note that git-diff-tree raw output dor combined diff does not provide
filename before change for renames and copies; we use
git_get_path_by_hash to get "src" filename for renames (this means
additional call to git-ls-tree for a _whole_ tree).

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agogitweb: Add parsing of raw combined diff format to parse_difftree_raw_line
Jakub Narebski [Sun, 6 May 2007 23:10:03 +0000 (01:10 +0200)]
gitweb: Add parsing of raw combined diff format to parse_difftree_raw_line

Add parsing line of raw combined diff ("git diff-tree -c/-cc" output)
as described in section "diff format for merges" in diff-format.txt
to parse_difftree_raw_line subroutine.

Returned hash (or hashref) has for combined diff 'nparents' key which
holds number of parents in a merge. At keys 'from_mode' and 'from_id'
there are arrayrefs holding modes and ids, respectively. There is no
'similarity' value, and there is only 'to_file' value and no
'from_file' value.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoProperly handle '0' filenames in import-tars
Shawn O. Pearce [Tue, 8 May 2007 01:13:40 +0000 (21:13 -0400)]
Properly handle '0' filenames in import-tars

Randal L. Schwartz pointed out multiple times that we should be
testing the length of the name string here, not if it is "true".
The problem is the string '0' is actually false in Perl when we
try to evaluate it in this context, as '0' is 0 numerically and
the number 0 is treated as a false value.  This would cause us
to break out of the import loop early if anyone had a file or
directory named "0".

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agodiff -S: release the image after looking for needle in it
Junio C Hamano [Mon, 7 May 2007 08:24:27 +0000 (01:24 -0700)]
diff -S: release the image after looking for needle in it

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agodiff -M: release the preimage candidate blobs after rename detection.
Junio C Hamano [Thu, 3 May 2007 20:04:53 +0000 (13:04 -0700)]
diff -M: release the preimage candidate blobs after rename detection.

We released the postimage candidate blobs after we are done to reduce
memory pressure.  Do the same for preimage candidate blobs.

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agodiff.c: do not use a separate "size cache".
Junio C Hamano [Mon, 7 May 2007 08:14:21 +0000 (01:14 -0700)]
diff.c: do not use a separate "size cache".

diff_filespec has a slot to record the size of the data already,
so make use of it instead of a separate size cache.

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agodiff: release blobs after generating textual diff.
Junio C Hamano [Thu, 3 May 2007 20:05:48 +0000 (13:05 -0700)]
diff: release blobs after generating textual diff.

This reduces the memory pressure when dealing with many paths.

An unscientific test of running "diff-tree --stat --summary -M"
between v2.6.19 and v2.6.20-rc1 in the linux kernel repository
indicates that the number of minor faults are reduced by 2/3.

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoUse GIT_OBJECT_DIR for temporary files of pack-objects
Alex Riesen [Mon, 7 May 2007 17:33:24 +0000 (19:33 +0200)]
Use GIT_OBJECT_DIR for temporary files of pack-objects

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoFix minor documentation errors
Michael Spang [Sun, 6 May 2007 18:09:34 +0000 (14:09 -0400)]
Fix minor documentation errors

- git-ls-files.txt: typo in description of --ignored
- git-clean.txt: s/forceRequire/requireForce/

Signed-off-by: Michael Spang <mspang@uwaterloo.ca>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agot7300: Basic tests for git-clean
Michael Spang [Sun, 6 May 2007 19:50:54 +0000 (15:50 -0400)]
t7300: Basic tests for git-clean

This tests the -d, -n, -f, -x, and -X options to git-clean.

Signed-off-by: Michael Spang <mspang@uwaterloo.ca>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agodir.c: Omit non-excluded directories with dir->show_ignored
Michael Spang [Mon, 7 May 2007 02:35:04 +0000 (22:35 -0400)]
dir.c: Omit non-excluded directories with dir->show_ignored

This makes "git-ls-files --others --directory --ignored" behave
as documented and consequently also fixes "git-clean -d -X".
Previously, git-clean would remove non-excluded directories
even when using the -X option.

Signed-off-by: Michael Spang <mspang@uwaterloo.ca>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoMerge branch 'master' of git://repo.or.cz/git-gui
Junio C Hamano [Mon, 7 May 2007 21:47:14 +0000 (14:47 -0700)]
Merge branch 'master' of git://repo.or.cz/git-gui

* 'master' of git://repo.or.cz/git-gui:
  git-gui: Correctly handle UTF-8 encoded commit messages

16 years agoMerge branch 'maint'
Junio C Hamano [Mon, 7 May 2007 21:46:48 +0000 (14:46 -0700)]
Merge branch 'maint'

* maint:
  Documentation: don't reference non-existent 'git-cvsapplycommit'
  user-manual: stop deprecating the manual
  user-manual: miscellaneous editing
  user-manual: fix .gitconfig editing examples
  user-manual: clean up fast-forward and dangling-objects sections
  user-manual: add section ID's
  user-manual: more discussion of detached heads, fix typos
  git-gui: Allow spaces in path to 'wish'
  gitk: Allow user to choose whether to see the diff, old file, or new file

16 years agoMerge branch 'maint' of git://repo.or.cz/git-gui into maint
Junio C Hamano [Mon, 7 May 2007 21:46:15 +0000 (14:46 -0700)]
Merge branch 'maint' of git://repo.or.cz/git-gui into maint

* 'maint' of git://repo.or.cz/git-gui:
  git-gui: Allow spaces in path to 'wish'

16 years agoMerge git://git2.kernel.org/pub/scm/gitk/gitk into maint
Junio C Hamano [Mon, 7 May 2007 21:40:41 +0000 (14:40 -0700)]
Merge git://git2./pub/scm/gitk/gitk into maint

* git://git2.kernel.org/pub/scm/gitk/gitk:
  gitk: Allow user to choose whether to see the diff, old file, or new file

16 years agoAdded a reference to git-add in the documentation for git-update-index
Matthieu Moy [Sun, 6 May 2007 21:11:56 +0000 (23:11 +0200)]
Added a reference to git-add in the documentation for git-update-index

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoDocument git add -u introduced earlier.
Matthieu Moy [Sun, 6 May 2007 21:11:55 +0000 (23:11 +0200)]
Document git add -u introduced earlier.

This command was implemented, but not documented in
dfdac5d9b877641d3aad8ec49f64c2730a3487e3.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoDocumentation: don't reference non-existent 'git-cvsapplycommit'
Jeff King [Mon, 7 May 2007 05:28:34 +0000 (01:28 -0400)]
Documentation: don't reference non-existent 'git-cvsapplycommit'

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agouser-manual: stop deprecating the manual
J. Bruce Fields [Mon, 7 May 2007 05:01:42 +0000 (01:01 -0400)]
user-manual: stop deprecating the manual

It's just as much a work-in-progress, but at least now it's gotten
enough technical review to shake out most of the really bad lies, so
hopefully it doesn't do any actual damage.  And if we encourage people
to read it, they'll be more likely to whine about it, which will help
get it fixed faster.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
16 years agouser-manual: miscellaneous editing
J. Bruce Fields [Mon, 7 May 2007 04:56:45 +0000 (00:56 -0400)]
user-manual: miscellaneous editing

I cherry-picked some additional miscellaneous fixes from those suggested
by Santi Béjar, including fixes to:

- correct discussion of repository/HEAD->repository shortcut
- add mention of git-mergetool
- add mention of --track
- mention "-f" as well as "+" for fetch

Cc: Santi Béjar <sbejar@gmail.com>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
16 years agouser-manual: fix .gitconfig editing examples
J. Bruce Fields [Mon, 7 May 2007 04:16:33 +0000 (00:16 -0400)]
user-manual: fix .gitconfig editing examples

Santi Béjar points out that when telling people how to "introduce
themselves" to git we're advising them to replace their entire
.gitconfig file.  Fix that.

Cc: "Santi Béjar <sbejar@gmail.com>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
16 years agouser-manual: clean up fast-forward and dangling-objects sections
J. Bruce Fields [Mon, 30 Apr 2007 15:11:02 +0000 (11:11 -0400)]
user-manual: clean up fast-forward and dangling-objects sections

The previous commit calls attention to the fact that we have two
sections each devoted to fast-forwards and to dangling objects.  Revise
and attempt to differentiate them a bit.  Some more reorganization may
be required later....

Signed-off-by: J. Bruce Fields
16 years agouser-manual: add section ID's
J. Bruce Fields [Wed, 18 Apr 2007 04:46:19 +0000 (00:46 -0400)]
user-manual: add section ID's

Any section lacking an id gets an annoying warning when you build
the manual.  More seriously, the table of contents then generates
volatile id's which change with every build, with the effect that
we get URL's that change all the time.

The ID's are manually generated and sometimes inconsistent, but
that's OK.

XXX: what to do about the preface?

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
16 years agouser-manual: more discussion of detached heads, fix typos
J. Bruce Fields [Wed, 18 Apr 2007 04:20:46 +0000 (00:20 -0400)]
user-manual: more discussion of detached heads, fix typos

Nicolas Pitre pointed out a couple typos and some room for improvement
in the discussion of detached heads.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Cc: Nicolas Pitre <nico@cam.org>
16 years agoGIT v1.5.2-rc2 v1.5.2-rc2
Junio C Hamano [Sun, 6 May 2007 08:07:04 +0000 (01:07 -0700)]
GIT v1.5.2-rc2

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoMerge branch 'maint'
Junio C Hamano [Sun, 6 May 2007 07:21:03 +0000 (00:21 -0700)]
Merge branch 'maint'

* maint:
  Small correction in reading of commit headers
  Documentation: fix typo in git-remote.txt
  Add test for blame corner cases.
  blame: -C -C -C
  blame: Notice a wholesale incorporation of an existing file.
  Fix --boundary output
  diff format documentation: describe raw combined diff format
  Mention version 1.5.1 in tutorial and user-manual
  Add --no-rebase option to git-svn dcommit
  Fix markup in git-svn man page

16 years agoHandle return code of parse_commit in revision machinery
Alex Riesen [Fri, 4 May 2007 21:54:57 +0000 (23:54 +0200)]
Handle return code of parse_commit in revision machinery

This fixes a crash in broken repositories where random commits
suddenly disappear.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoSmall correction in reading of commit headers
Alex Riesen [Fri, 4 May 2007 21:51:32 +0000 (23:51 +0200)]
Small correction in reading of commit headers

Check if a line of the header has enough characters to possibly
contain the requested prefix.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoDocumentation: fix typo in git-remote.txt
James Bowes [Sat, 5 May 2007 18:23:12 +0000 (14:23 -0400)]
Documentation: fix typo in git-remote.txt

Signed-off-by: James Bowes <jbowes@dangerouslyinc.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoAdd test for blame corner cases.
Junio C Hamano [Sun, 6 May 2007 05:36:19 +0000 (22:36 -0700)]
Add test for blame corner cases.

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoblame: -C -C -C
Junio C Hamano [Sun, 6 May 2007 04:18:57 +0000 (21:18 -0700)]
blame: -C -C -C

When you do this, existing "blame -C -C" would not find that the
latter half of the file2 came from the existing file1:

... both file1 and file2 are tracked ...
$ cat file1 >>file2
$ git add file1 file2
$ git commit

This is because we avoid the expensive find-copies-harder code
that makes unchanged file (in this case, file1) as a candidate
for copy & paste source when annotating an existing file
(file2).  The third -C now allows it.  However, this obviously
makes the process very expensive.  We've actually seen this
patch before, but I dismissed it because it covers such a narrow
(and arguably stupid) corner case.

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoblame: Notice a wholesale incorporation of an existing file.
Junio C Hamano [Sat, 5 May 2007 16:13:26 +0000 (09:13 -0700)]
blame: Notice a wholesale incorporation of an existing file.

The -C option to blame tries to find a section of a preimage
file by running diff against the lines whose origin is still
unknown, and excluding the different parts.  The code however
did not cover the case where the tail part of the section
matched, which we handle for the normal non-move/copy codepath.

This breakage was most visible when preimage file matches in its
entirety and failed to pass blame in such a case.

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoFix --boundary output
Linus Torvalds [Sat, 5 May 2007 22:18:03 +0000 (15:18 -0700)]
Fix --boundary output

"git log --boundary" incorrectly honoured the option only when
"left-right" was enabled.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agodiff format documentation: describe raw combined diff format
Jakub Narebski [Fri, 4 May 2007 22:48:35 +0000 (00:48 +0200)]
diff format documentation: describe raw combined diff format

Add description of raw combined diff format to diff-formats.txt,
as "diff format for merges" section, before "Generating patches..."
section.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoMention version 1.5.1 in tutorial and user-manual
Carl Worth [Fri, 4 May 2007 18:27:10 +0000 (11:27 -0700)]
Mention version 1.5.1 in tutorial and user-manual

Most other documentation will frequently be read from an installation
of git so will naturally be associated with the installed version.
But these two documents in particular are often read from web pages
while users are still exploring git. It's important to mention
version 1.5.1 since these documents provide example commands that
won't work with previous versions of git.

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoAdd --no-rebase option to git-svn dcommit
Karl Hasselström [Thu, 3 May 2007 05:51:35 +0000 (07:51 +0200)]
Add --no-rebase option to git-svn dcommit

git-svn dcommit exports commits to Subversion, then imports them back
to git again, and last but not least rebases or resets HEAD to the
last of the new commits. I guess this rebasing is convenient when
using just git, but when the commits to be exported are managed by
StGIT, it's really annoying. So add an option to disable this
behavior. And document it, too!

Signed-off-by: Karl Hasselström <kha@treskal.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoFix markup in git-svn man page
Karl Hasselström [Fri, 4 May 2007 07:03:22 +0000 (09:03 +0200)]
Fix markup in git-svn man page

Some of the existing markup was just plain broken, and some subcommand
options weren't indented properly.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agogit-tag(1): -v option is a subcommand; fix code block
Jonas Fonseca [Tue, 1 May 2007 07:24:59 +0000 (09:24 +0200)]
git-tag(1): -v option is a subcommand; fix code block

When the -v is passed, git-tag will exit after it is processed like it
does with the -d and -l options. Additionally, missing code block caused
wrong rendering of an option example.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoImprove request-pull to handle non-rebased branches
Shawn O. Pearce [Tue, 1 May 2007 06:08:23 +0000 (02:08 -0400)]
Improve request-pull to handle non-rebased branches

This is actually a few different changes to request-pull,
making it slightly smarter:

 1) Minor cleanup of revision->base variable names, making it
    follow the head/headrev naming convention that is already
    in use.

 2) Compute the merge-base between the two revisions upfront
    and reuse that selected merge-base to create the diffstat.

 3) Refuse to generate a pull request for branches that have no
    existing relationship.  These aren't very common and would mess
    up our diffstat generation.

 4) Disable the PAGER when running shortlog and diff, as these
    would otherwise activate the pager for each command when
    git-request-pull is run on a tty.  Instead users can get the
    entire output paged (if desired) using `git -p request-pull`.

 5) Use shortlog rather than `git log | git shortlog` now that
    recent shortlog versions are able to run the revision listing
    internally.

 6) Attempt to resolve the input URL using the user's configured
    remotes.  This is useful if the URL you want the recipient to
    see is also the one you used to push your changes.  If not a
    config-file remote could easily be setup for the public URL
    and request-pull could be passed that name instead.

 7) Automatically guess and include the remote branch name in the
    body of the message.  We list the branch name immediately after
    the URL, making it easy for the recipient to copy and paste
    the entire line onto a `git pull` command line.  Rumor has it
    Linus likes this format, for exactly that reason.

    If multiple branches at the remote match $headrev we take the
    first one returned by peek-remote and assume it is suitable.

    If no branches are available we warn the user about the problem,
    but insert a static string that is not a valid branch name
    and would be obvious to anyone reading the message as being
    totally incorrect.  This allows users to still generate a
    template message without network access (for example) and
    hand-correct the bits that cannot be verified.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoMerge branch 'maint'
Junio C Hamano [Fri, 4 May 2007 06:26:54 +0000 (23:26 -0700)]
Merge branch 'maint'

* maint:
  gitweb: use decode_utf8 directly
  posix compatibility for t4200
  Document 'opendiff' value in config.txt and git-mergetool.txt
  Allow PERL_PATH="/usr/bin/env perl"
  Make xstrndup common
  diff.c: fix "size cache" handling.
  http-fetch: Disable use of curl multi support for libcurl < 7.16.

16 years agogitweb: use decode_utf8 directly
Ismail Dönmez [Tue, 1 May 2007 21:12:13 +0000 (00:12 +0300)]
gitweb: use decode_utf8 directly

Using decode() tries to decode data that is already UTF-8 and
borks, but decode_utf8 from Encode.pm has a built-in safety
against that.

Signed-off-by: Junio C Hamano <junkio@cox.net>
16 years agoposix compatibility for t4200
Bryan Larsen [Wed, 2 May 2007 21:53:23 +0000 (17:53 -0400)]
posix compatibility for t4200

Fix t4200 so that it also works on OS X by not relying on gnu
extensions to sed.

Signed-off-by: Bryan Larsen <bryan@larsen.st>
Signed-off-by: Junio C Hamano <junkio@cox.net>