Code

git.git
16 years agoAdd OS X support to the pre-auto-gc example hook
Jonathan del Strother [Mon, 29 Sep 2008 23:36:28 +0000 (00:36 +0100)]
Add OS X support to the pre-auto-gc example hook

Signed-off-by: Jonathan del Strother <jon.delStrother@bestbefore.tv>
Acked-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoCorrect typos in RelNotes-1.6.1
Ralf Wildenhues [Mon, 29 Sep 2008 20:30:00 +0000 (22:30 +0200)]
Correct typos in RelNotes-1.6.1

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoremove vim syntax highlighting in favor of upstream
SZEDER Gábor [Mon, 29 Sep 2008 20:08:14 +0000 (22:08 +0200)]
remove vim syntax highlighting in favor of upstream

As of version 7.2, vim ships with its own syntax
highlighting for git commit messages, which is:

  1. more comprehensive in splitting up the various
     components of the file

  2. in accordance with the usual vim behavior for syntax
     highlighting (e.g., respecting b:current_syntax)

  3. presumably better maintained (I have not been using
     what's in git's contrib/ directory for some time in
     favor of the upstream version)

Furthermore, vim upsream also provides syntax highlighting
for other git filetypes (gitconfig, rebase, send-email).

This patch gets rid of our local version and just points
interested parties to the upstream version.

The code for auto-detecting filetypes is taken from vim's
runtime/filetype.vim.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'bc/master-diff-hunk-header-fix'
Shawn O. Pearce [Mon, 29 Sep 2008 18:04:20 +0000 (11:04 -0700)]
Merge branch 'bc/master-diff-hunk-header-fix'

* bc/master-diff-hunk-header-fix:
  Clarify commit error message for unmerged files
  Use strchrnul() instead of strchr() plus manual workaround
  Use remove_path from dir.c instead of own implementation
  Add remove_path: a function to remove as much as possible of a path
  git-submodule: Fix "Unable to checkout" for the initial 'update'
  Clarify how the user can satisfy stash's 'dirty state' check.
  t4018-diff-funcname: test syntax of builtin xfuncname patterns
  t4018-diff-funcname: test syntax of builtin xfuncname patterns
  make "git remote" report multiple URLs
  diff hunk pattern: fix misconverted "\{" tex macro introducers
  diff: fix "multiple regexp" semantics to find hunk header comment
  diff: use extended regexp to find hunk headers
  diff: use extended regexp to find hunk headers
  diff.*.xfuncname which uses "extended" regex's for hunk header selection
  diff.c: associate a flag with each pattern and use it for compiling regex
  diff.c: return pattern entry pointer rather than just the hunk header pattern

Conflicts:
builtin-merge-recursive.c
t/t7201-co.sh
xdiff-interface.h

16 years agoMerge branch 'maint' into bc/master-diff-hunk-header-fix
Shawn O. Pearce [Mon, 29 Sep 2008 17:52:34 +0000 (10:52 -0700)]
Merge branch 'maint' into bc/master-diff-hunk-header-fix

* maint: (41 commits)
  Clarify commit error message for unmerged files
  Use strchrnul() instead of strchr() plus manual workaround
  Use remove_path from dir.c instead of own implementation
  Add remove_path: a function to remove as much as possible of a path
  git-submodule: Fix "Unable to checkout" for the initial 'update'
  Clarify how the user can satisfy stash's 'dirty state' check.
  Remove empty directories in recursive merge
  Documentation: clarify the details of overriding LESS via core.pager
  Update release notes for 1.6.0.3
  checkout: Do not show local changes when in quiet mode
  for-each-ref: Fix --format=%(subject) for log message without newlines
  git-stash.sh: don't default to refs/stash if invalid ref supplied
  maint: check return of split_cmdline to avoid bad config strings
  builtin-prune.c: prune temporary packs in <object_dir>/pack directory
  Do not perform cross-directory renames when creating packs
  Use dashless git commands in setgitperms.perl
  git-remote: do not use user input in a printf format string
  make "git remote" report multiple URLs
  Start draft release notes for 1.6.0.3
  git-repack uses --no-repack-object, not --no-repack-delta.
  ...

Conflicts:
RelNotes

16 years agoMerge branch 'bc/maint-diff-hunk-header-fix' into maint
Shawn O. Pearce [Mon, 29 Sep 2008 17:23:19 +0000 (10:23 -0700)]
Merge branch 'bc/maint-diff-hunk-header-fix' into maint

* bc/maint-diff-hunk-header-fix:
  t4018-diff-funcname: test syntax of builtin xfuncname patterns
  diff hunk pattern: fix misconverted "\{" tex macro introducers
  diff: use extended regexp to find hunk headers
  diff.*.xfuncname which uses "extended" regex's for hunk header selection
  diff.c: associate a flag with each pattern and use it for compiling regex
  diff.c: return pattern entry pointer rather than just the hunk header pattern

Conflicts:
Documentation/gitattributes.txt

16 years agoMerge branch 'jc/better-conflict-resolution'
Shawn O. Pearce [Mon, 29 Sep 2008 17:04:21 +0000 (10:04 -0700)]
Merge branch 'jc/better-conflict-resolution'

* jc/better-conflict-resolution:
  Fix AsciiDoc errors in merge documentation
  git-merge documentation: describe how conflict is presented
  checkout --conflict=<style>: recreate merge in a non-default style
  checkout -m: recreate merge when checking out of unmerged index
  git-merge-recursive: learn to honor merge.conflictstyle
  merge.conflictstyle: choose between "merge" and "diff3 -m" styles
  rerere: understand "diff3 -m" style conflicts with the original
  rerere.c: use symbolic constants to keep track of parsing states
  xmerge.c: "diff3 -m" style clips merge reduction level to EAGER or less
  xmerge.c: minimum readability fixups
  xdiff-merge: optionally show conflicts in "diff3 -m" style
  xdl_fill_merge_buffer(): separate out a too deeply nested function
  checkout --ours/--theirs: allow checking out one side of a conflicting merge
  checkout -f: allow ignoring unmerged paths when checking out of the index

Conflicts:
Documentation/git-checkout.txt
builtin-checkout.c
builtin-merge-recursive.c
t/t7201-co.sh

16 years agoMerge branch 'mg/maint-remote-fix' into maint
Shawn O. Pearce [Mon, 29 Sep 2008 16:39:53 +0000 (09:39 -0700)]
Merge branch 'mg/maint-remote-fix' into maint

* mg/maint-remote-fix:
  make "git remote" report multiple URLs

16 years agoAdd contrib/rerere-train script
Nanako Shiraishi [Sat, 27 Sep 2008 11:44:15 +0000 (20:44 +0900)]
Add contrib/rerere-train script

This script takes a range of commits (e.g. maint..next) as its arguments,
recreates merge commits in the range to prime rr-cache database.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoClarify commit error message for unmerged files
Rafael Garcia-Suarez [Mon, 29 Sep 2008 16:04:41 +0000 (18:04 +0200)]
Clarify commit error message for unmerged files

Currently, trying to use git-commit with unmerged files in the index
will show the message "Error building trees", which can be a bit
obscure to the end user. This patch makes the error message clearer, and
consistent with what git-write-tree reports in a similar situation.

Signed-off-by: Rafael Garcia-Suarez <rgarciasuarez@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoUse strchrnul() instead of strchr() plus manual workaround
Johan Herland [Sat, 27 Sep 2008 22:24:36 +0000 (00:24 +0200)]
Use strchrnul() instead of strchr() plus manual workaround

Also gets rid of a C++ comment.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agomingw: remove use of _getdrive() from lstat/fstat
Dmitry Potapov [Sat, 27 Sep 2008 08:39:45 +0000 (12:39 +0400)]
mingw: remove use of _getdrive() from lstat/fstat

The field device is not used by Git, and putting the number of the
current device is meaningless anyway.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Acked-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoUse remove_path from dir.c instead of own implementation
Alex Riesen [Fri, 26 Sep 2008 22:59:14 +0000 (00:59 +0200)]
Use remove_path from dir.c instead of own implementation

Besides, it fixes a memleak (builtin-rm.c) and accidental change of
the input const argument (builtin-merge-recursive.c).

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoAdd remove_path: a function to remove as much as possible of a path
Alex Riesen [Fri, 26 Sep 2008 22:56:46 +0000 (00:56 +0200)]
Add remove_path: a function to remove as much as possible of a path

The function has two potential users which both managed to get wrong
their implementations (the one in builtin-rm.c one has a memleak, and
builtin-merge-recursive.c scribles over its const argument).

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-submodule: Fix "Unable to checkout" for the initial 'update'
Ping Yin [Fri, 26 Sep 2008 15:33:23 +0000 (23:33 +0800)]
git-submodule: Fix "Unable to checkout" for the initial 'update'

Since commit 55218("checkout: do not lose staged removal"), in
cmd_add/cmd_update, "git checkout <commit>" following
"git clone -n" may fail if <commit> is different from HEAD.

So Use "git checkout -f <commit>" to fix this.

Signed-off-by: Ping Yin <pkufranky@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agocompat/mingw: Support a timeout in the poll emulation if no fds are given
Johannes Sixt [Tue, 23 Sep 2008 06:52:16 +0000 (08:52 +0200)]
compat/mingw: Support a timeout in the poll emulation if no fds are given

Our poll() emulation did not support the timeout argument. With this patch
we support it for the simple case where poll() does not need to wait on
file descriptors as well because this case amounts to a mere Sleep().

This is needed if the user sets help.autocorrect is set to a positive
value.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoClarify how the user can satisfy stash's 'dirty state' check.
Stephen Haberman [Mon, 29 Sep 2008 09:12:04 +0000 (04:12 -0500)]
Clarify how the user can satisfy stash's 'dirty state' check.

Signed-off-by: Stephen Haberman <stephen@exigencecorp.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agousage.c: remove unused functions
Nanako Shiraishi [Thu, 25 Sep 2008 09:41:04 +0000 (18:41 +0900)]
usage.c: remove unused functions

This removes three functions that are not used anywhere.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Acked-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'maint'
Shawn O. Pearce [Fri, 26 Sep 2008 15:31:56 +0000 (08:31 -0700)]
Merge branch 'maint'

* maint:
  Remove empty directories in recursive merge
  Documentation: clarify the details of overriding LESS via core.pager

Conflicts:
builtin-merge-recursive.c

16 years agoCleanup remove_path
Alex Riesen [Fri, 26 Sep 2008 15:21:39 +0000 (08:21 -0700)]
Cleanup remove_path

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoRemove empty directories in recursive merge
Alex Riesen [Thu, 25 Sep 2008 20:12:45 +0000 (22:12 +0200)]
Remove empty directories in recursive merge

The code was actually supposed to do that, but was accidentally broken.
Noticed by Anders Melchiorsen.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoDocumentation: clarify the details of overriding LESS via core.pager
Chris Frey [Wed, 24 Sep 2008 23:21:28 +0000 (19:21 -0400)]
Documentation: clarify the details of overriding LESS via core.pager

The process of overriding the default LESS options using only
git-specific methods is rather obscure.  Show the end user how
to do it in a step-by-step manner.

Signed-off-by: Chris Frey <cdfrey@foursquare.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'mv/merge-recursive'
Shawn O. Pearce [Thu, 25 Sep 2008 16:49:19 +0000 (09:49 -0700)]
Merge branch 'mv/merge-recursive'

* mv/merge-recursive:
  builtin-merge: release the lockfile in try_merge_strategy()
  merge-recursive: get rid of virtual_id
  merge-recursive: move current_{file,directory}_set to struct merge_options
  merge-recursive: move the global obuf to struct merge_options
  merge-recursive: get rid of the index_only global variable
  merge-recursive: move call_depth to struct merge_options
  cherry-pick/revert: make direct internal call to merge_tree()
  builtin-merge: avoid run_command_v_opt() for recursive and subtree
  merge-recursive: introduce merge_options
  merge-recursive.c: Add more generic merge_recursive_generic()
  Split out merge_recursive() to merge-recursive.c

16 years agoMerge branch 'jc/alternate-push'
Shawn O. Pearce [Thu, 25 Sep 2008 16:39:24 +0000 (09:39 -0700)]
Merge branch 'jc/alternate-push'

* jc/alternate-push:
  push: receiver end advertises refs from alternate repositories
  push: prepare sender to receive extended ref information from the receiver
  receive-pack: make it a builtin
  is_directory(): a generic helper function

16 years agoMerge branch 'am/status'
Shawn O. Pearce [Thu, 25 Sep 2008 16:32:49 +0000 (09:32 -0700)]
Merge branch 'am/status'

* am/status:
  wt-status: Teach how to discard changes in the working directory
  wt-status: Split header generation into three functions

16 years agoMerge branch 'pb/autocorrect-wrapper'
Shawn O. Pearce [Thu, 25 Sep 2008 16:23:48 +0000 (09:23 -0700)]
Merge branch 'pb/autocorrect-wrapper'

* pb/autocorrect-wrapper:
  git wrapper: also use aliases to correct mistyped commands

16 years agoMerge branch 'mv/commit-tree'
Shawn O. Pearce [Thu, 25 Sep 2008 16:16:33 +0000 (09:16 -0700)]
Merge branch 'mv/commit-tree'

* mv/commit-tree:
  t7603: add new testcases to ensure builtin-commit uses reduce_heads()
  builtin-commit: use commit_tree()
  commit_tree(): add a new author parameter

16 years agoMerge branch 'jc/apply-include-exclude'
Shawn O. Pearce [Thu, 25 Sep 2008 16:09:41 +0000 (09:09 -0700)]
Merge branch 'jc/apply-include-exclude'

* jc/apply-include-exclude:
  git-apply:--include=pathspec

16 years agoMerge branch 'jc/safe-c-l-d'
Shawn O. Pearce [Thu, 25 Sep 2008 15:50:01 +0000 (08:50 -0700)]
Merge branch 'jc/safe-c-l-d'

* jc/safe-c-l-d:
  safe_create_leading_directories(): make it about "leading" directories

16 years agogitweb: shortlog now also obeys $hash_parent
Giuseppe Bilotta [Fri, 8 Aug 2008 14:12:11 +0000 (16:12 +0200)]
gitweb: shortlog now also obeys $hash_parent

If $hash_parent is defined, shortlog now limits the list of commits at
those between $hash_parent (exclusive) and $hash (inclusive).

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'ho/dirstat-by-file'
Shawn O. Pearce [Thu, 25 Sep 2008 15:41:42 +0000 (08:41 -0700)]
Merge branch 'ho/dirstat-by-file'

* ho/dirstat-by-file:
  diff --dirstat-by-file: count changed files, not lines

16 years agoMerge git://repo.or.cz/git-gui
Shawn O. Pearce [Thu, 25 Sep 2008 15:41:07 +0000 (08:41 -0700)]
Merge git://repo.or.cz/git-gui

* git://repo.or.cz/git-gui:
  git-gui: Reenable staging unmerged files by clicking the icon.
  git-gui: Support the encoding menu in gui blame.
  git-gui: Optimize encoding name resolution using a lookup table.
  git-gui: Allow forcing display encoding for diffs using a submenu.
  git-gui: Add a menu of available encodings.
  git-gui: Cleanup handling of the default encoding.
  git-gui: Assume `blame --incremental` output is in UTF-8
  git-gui: Use gitattribute "encoding" for file content display
  git-gui: Add support for calling out to the prepare-commit-msg hook
  git-gui: Hide commit related UI during citool --nocommit
  git-gui: Add more integration options to citool.
  git-gui: Updated German translation.
  git-gui: I18n fix sentence parts into full sentences for translation again.
  git-gui: Restore ability to Stage Working Copy for conflicts.
  git-gui: Fix Blame Parent & Context for working copy lines.

16 years agoMerge branch 'maint'
Shawn O. Pearce [Thu, 25 Sep 2008 15:27:53 +0000 (08:27 -0700)]
Merge branch 'maint'

* maint:
  Update release notes for 1.6.0.3
  checkout: Do not show local changes when in quiet mode
  for-each-ref: Fix --format=%(subject) for log message without newlines
  git-stash.sh: don't default to refs/stash if invalid ref supplied
  maint: check return of split_cmdline to avoid bad config strings

16 years agoUpdate release notes for 1.6.0.3
Shawn O. Pearce [Thu, 25 Sep 2008 15:27:41 +0000 (08:27 -0700)]
Update release notes for 1.6.0.3

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoFix submodule sync with relative submodule URLs
Johan Herland [Mon, 22 Sep 2008 16:08:31 +0000 (18:08 +0200)]
Fix submodule sync with relative submodule URLs

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agograph.c: make many functions static
Nanako Shiraishi [Thu, 25 Sep 2008 09:41:08 +0000 (18:41 +0900)]
graph.c: make many functions static

These function are not used anywhere.  Also removes graph_release()
that is never called.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoremote.c: make free_ref(), parse_push_refspec() and free_refspecs() static.
Nanako Shiraishi [Thu, 25 Sep 2008 09:41:00 +0000 (18:41 +0900)]
remote.c: make free_ref(), parse_push_refspec() and free_refspecs() static.

These functions are not used by any other file.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agocheckout: Do not show local changes when in quiet mode
Jonas Fonseca [Thu, 25 Sep 2008 08:35:38 +0000 (10:35 +0200)]
checkout: Do not show local changes when in quiet mode

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agofor-each-ref: Fix --format=%(subject) for log message without newlines
Johan Herland [Wed, 24 Sep 2008 23:10:54 +0000 (01:10 +0200)]
for-each-ref: Fix --format=%(subject) for log message without newlines

'git for-each-ref --format=%(subject)' currently returns an empty string
if the log message does not contain a newline.

This patch teaches 'git for-each-ref' to return the entire log message
(instead of an empty string) if there is no newline in the log message.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-web--browse: Support for using /bin/start on MinGW
Petr Baudis [Wed, 24 Sep 2008 21:52:39 +0000 (23:52 +0200)]
git-web--browse: Support for using /bin/start on MinGW

In the future, I think we should also default to xdg-open on Linux instead
of having a KDE-specific hack.

This patch has been sponsored by Novartis.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Reenable staging unmerged files by clicking the icon.
Alexander Gavrilov [Sat, 20 Sep 2008 08:19:18 +0000 (12:19 +0400)]
git-gui: Reenable staging unmerged files by clicking the icon.

This restores functionality of the file icon for unmerged files.
Safety is enforced by loading the diff and checking for lines
that look like conflict markers. If such lines are found, or
the conflict involves deletion and/or symlinks, a confirmation
dialog is presented. Otherwise, the icon immediately stages the
working copy version of the file.

Includes a revert of 2fe5b2ee42897a3acc78e5ddaace3775eb2713ca
(Restore ability to Stage Working Copy for conflicts)

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Tested-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Support the encoding menu in gui blame.
Alexander Gavrilov [Wed, 17 Sep 2008 21:07:36 +0000 (01:07 +0400)]
git-gui: Support the encoding menu in gui blame.

Allow dynamically changing the encoding from the blame
viewer as well.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Tested-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Optimize encoding name resolution using a lookup table.
Alexander Gavrilov [Wed, 17 Sep 2008 21:07:35 +0000 (01:07 +0400)]
git-gui: Optimize encoding name resolution using a lookup table.

Encoding menu construction does almost a hundred of encoding
resolutions, which with the old implementation led to a
small but noticeable delay.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Tested-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Allow forcing display encoding for diffs using a submenu.
Alexander Gavrilov [Wed, 17 Sep 2008 21:07:34 +0000 (01:07 +0400)]
git-gui: Allow forcing display encoding for diffs using a submenu.

Add a submenu to allow dynamically changing the encoding to use
for diffs. Encoding settings are remembered while git-gui runs.
The rules are:

1) Encoding set for a specific file overrides gitattributes.
2) Last explicitly set value of the encoding overrides gui.encoding

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Tested-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Add a menu of available encodings.
Alexander Gavrilov [Wed, 17 Sep 2008 21:07:33 +0000 (01:07 +0400)]
git-gui: Add a menu of available encodings.

To make encoding selection easier, add a menu that
lists available encodings to the Options window.

Menu structure is borrowed from Firefox.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Tested-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Cleanup handling of the default encoding.
Alexander Gavrilov [Wed, 17 Sep 2008 21:07:32 +0000 (01:07 +0400)]
git-gui: Cleanup handling of the default encoding.

- Make diffs and blame default to the system (locale)
  encoding instead of hard-coding UTF-8.
- Add a gui.encoding option to allow overriding it.
- gitattributes still have the final word.

The rationale for this is Windows support:

1) Windows people are accustomed to using legacy encodings
   for text files. For many of them defaulting to utf-8
   will be counter-intuitive.
2) Windows doesn't support utf-8 locales, and switching
   the system encoding is a real pain. Thus the option.

This patch also adds proper encoding conversion to Apply Hunk/Line.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Tested-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Assume `blame --incremental` output is in UTF-8
Shawn O. Pearce [Wed, 23 Jan 2008 05:39:50 +0000 (00:39 -0500)]
git-gui: Assume `blame --incremental` output is in UTF-8

Most commits have author name encoded in UTF-8, but the incremental
blame output dumps raw bytes and doesn't give us the encoding header
from the commit.  Rather than fixing up tooltip data after we have
viewed that particular commit in the blame viewer we can assume all
names are in UTF-8.

This is still going to cause problems when the author name is not
encoded in UTF-8, but the only (efficient) way to solve that is to
add an "encoding" header to the blame --incremental mode output,
as otherwise we need to run `git cat-file commit $sha1` for each
and every commit identified and that would be horribly expensive
on any platform.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Use gitattribute "encoding" for file content display
Shawn O. Pearce [Wed, 23 Jan 2008 05:37:10 +0000 (00:37 -0500)]
git-gui: Use gitattribute "encoding" for file content display

Most folks using git-gui on internationalized files have complained
that it doesn't recognize UTF-8 correctly.  In the past we have just
ignored the problem and showed the file contents as binary/US-ASCII,
which is wrong no matter how you look at it.

This really should be a per-file attribute, managed by .gitattributes,
so we now pull the "encoding" attribute data for the given path from
the .gitattributes (if available) and use that, falling back to UTF-8
if the attributes are unavailable, git-check-attr is broken, or an
encoding for this path not specified.

We apply the encoding anytime we show file content, which currently
is limited to only the diff viewer and the blame viewer.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Add support for calling out to the prepare-commit-msg hook
Joshua Williams [Wed, 24 Sep 2008 19:11:53 +0000 (14:11 -0500)]
git-gui: Add support for calling out to the prepare-commit-msg hook

Signed-off-by: Joshua Williams <joshua.williams@qlogic.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Hide commit related UI during citool --nocommit
Shawn O. Pearce [Wed, 24 Sep 2008 16:48:20 +0000 (09:48 -0700)]
git-gui: Hide commit related UI during citool --nocommit

If the user started git-gui as "git citool --nocommit" then they
don't need the new commit / amend commit radio buttons, or the sign
off button in the UI.  Rather than use up space with options the
user cannot activate they are simply not installed into the UI.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-gui: Add more integration options to citool.
Alexander Gavrilov [Fri, 12 Sep 2008 18:43:49 +0000 (22:43 +0400)]
git-gui: Add more integration options to citool.

- Make citool return nonzero exit code if it did not commit.
- Add a mode where it does not actually commit and simply
  exits with zero code. Commit message is either disabled,
  or simply dumped to GITGUI_EDITMSG before exiting.
- Add an option to immediately start it in amend mode.

Rationale:

1) Use 'git citool --nocommit' instead of mergetool in scripts.
2) Use 'git citool --amend' to edit commits while rebasing.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agogit-stash.sh: don't default to refs/stash if invalid ref supplied
Brandon Casey [Tue, 23 Sep 2008 23:57:09 +0000 (18:57 -0500)]
git-stash.sh: don't default to refs/stash if invalid ref supplied

apply_stash() and show_stash() each call rev-parse with
'--default refs/stash' as an argument. This option causes rev-parse to
operate on refs/stash if it is not able to successfully operate on any
element of the command line. This includes failure to supply a "valid"
revision. This has the effect of causing 'stash apply' and 'stash show'
to operate as if stash@{0} had been supplied when an invalid revision is
supplied.

e.g. 'git stash apply stash@{1}' would fall back to
     'git stash apply stash@{0}'

This patch modifies these two functions so that they avoid using the
--default option of rev-parse.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoFixed some grammatical errors in git-rebase.txt documentation.
Garry Dolley [Wed, 24 Sep 2008 09:51:27 +0000 (02:51 -0700)]
Fixed some grammatical errors in git-rebase.txt documentation.

Generally, the dependent clause "for example" is suffixed with a comma.
Used present tense where appropriate to be consistent with the other
paragraphs.

Rewrote the paragraph in the second hunk to be more clear.

Signed-off-by: Garry Dolley <gdolley@ucla.edu>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agomaint: check return of split_cmdline to avoid bad config strings
Deskin Miller [Mon, 22 Sep 2008 15:06:41 +0000 (11:06 -0400)]
maint: check return of split_cmdline to avoid bad config strings

As the testcase demonstrates, it's possible for split_cmdline to return -1 and
deallocate any memory it's allocated, if the config string is missing an end
quote.  In both the cases below, which are the only calling sites, the return
isn't checked, and using the pointer causes a pretty immediate segfault.

Signed-off-by: Deskin Miller <deskinm@umich.edu>
Acked-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
16 years agoMerge branch 'maint'
Junio C Hamano [Tue, 23 Sep 2008 09:05:35 +0000 (02:05 -0700)]
Merge branch 'maint'

* maint:
  builtin-prune.c: prune temporary packs in <object_dir>/pack directory
  Do not perform cross-directory renames when creating packs

16 years agobuiltin-prune.c: prune temporary packs in <object_dir>/pack directory
Brandon Casey [Mon, 22 Sep 2008 23:34:26 +0000 (18:34 -0500)]
builtin-prune.c: prune temporary packs in <object_dir>/pack directory

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agot4018-diff-funcname: test syntax of builtin xfuncname patterns
Brandon Casey [Mon, 22 Sep 2008 23:26:20 +0000 (18:26 -0500)]
t4018-diff-funcname: test syntax of builtin xfuncname patterns

[jc: fixes bibtex pattern breakage exposed by this test]

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-hunk-header-fix
Junio C Hamano [Tue, 23 Sep 2008 03:01:33 +0000 (20:01 -0700)]
Merge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-hunk-header-fix

* bc/maint-diff-hunk-header-fix:
  t4018-diff-funcname: test syntax of builtin xfuncname patterns

16 years agot4018-diff-funcname: test syntax of builtin xfuncname patterns
Brandon Casey [Mon, 22 Sep 2008 23:19:05 +0000 (18:19 -0500)]
t4018-diff-funcname: test syntax of builtin xfuncname patterns

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoDo not perform cross-directory renames when creating packs
Petr Baudis [Mon, 22 Sep 2008 17:20:21 +0000 (19:20 +0200)]
Do not perform cross-directory renames when creating packs

A comment on top of create_tmpfile() describes caveats ('can have
problems on various systems (FAT, NFS, Coda)') that should apply
in this situation as well.  This in the end did not end up solving
any of my personal problems, but it might be a useful cleanup patch
nevertheless.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'maint'
Junio C Hamano [Mon, 22 Sep 2008 16:41:43 +0000 (09:41 -0700)]
Merge branch 'maint'

* maint:
  Use dashless git commands in setgitperms.perl
  git-remote: do not use user input in a printf format string

16 years agoUse dashless git commands in setgitperms.perl
Todd Zullinger [Mon, 22 Sep 2008 11:30:08 +0000 (07:30 -0400)]
Use dashless git commands in setgitperms.perl

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-remote: do not use user input in a printf format string
Johannes Sixt [Mon, 22 Sep 2008 11:03:25 +0000 (13:03 +0200)]
git-remote: do not use user input in a printf format string

'git remote show' substituted the remote name into a string that was later
used as a printf format string. If a remote name contains a printf format
specifier like this:

   $ git remote add foo%sbar .

then the command

   $ git remote show foo%sbar

would print garbage (if you are lucky) or crash. This fixes it.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agomake "git remote" report multiple URLs
Michael J Gruber [Mon, 22 Sep 2008 08:57:51 +0000 (10:57 +0200)]
make "git remote" report multiple URLs

This patch makes "git remote -v" and "git remote show" report multiple URLs
rather than warn about them. Multiple URLs are OK for pushing into
multiple repos simultaneously. Without "-v" each repo is shown once only.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-svn: do a partial rebuild if rev_map is out-of-date
Deskin Miller [Tue, 16 Sep 2008 01:12:58 +0000 (21:12 -0400)]
git-svn: do a partial rebuild if rev_map is out-of-date

Suppose you're using git-svn to work with a certain SVN repository.
Since you don't like 'git-svn fetch' to take forever, and you don't want
to accidentally interrupt it and end up corrupting your repository, you
set up a remote Git repository to mirror the SVN repository, which does
its own 'git-svn fetch' on a cronjob; now you can 'git-fetch' from the
Git mirror into your local repository, and still dcommit to SVN when you
have changes to push.

After you do this, though, git-svn will get very confused if you ever
try to do 'git-svn fetch' in your local repository again, since its
rev_map will differ from the branch's head, and it will be unable to
fetch new commits from SVN because of the metadata conflict.  But all
the necessary metadata are there in the Git commit message; git-svn
already knows how to rebuild rev_map files that get blown away, by
using the metadata.

This patch teaches git-svn do a partial rebuild of the rev_map to
match the true state of the branch, if it ever is used to fetch again.

This will only work for projects not using either noMetadata or
useSvmProps configuration options; if you are using these options,
git-svn will fall back to the previous behaviour.

Signed-off-by: Deskin Miller <deskinm@umich.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-svn: testcase for partial rebuild
Deskin Miler [Thu, 18 Sep 2008 21:55:14 +0000 (17:55 -0400)]
git-svn: testcase for partial rebuild

[jc: use expect_failure to mark the test to expose existing breakage]

Signed-off-by: Deskin Miller <deskinm@umich.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'db/maint-checkout-b'
Junio C Hamano [Mon, 22 Sep 2008 06:50:05 +0000 (23:50 -0700)]
Merge branch 'db/maint-checkout-b'

* db/maint-checkout-b:
  Check early that a new branch is new and valid

16 years agot5510: test "git fetch" following tags minimally
Junio C Hamano [Mon, 22 Sep 2008 06:50:01 +0000 (23:50 -0700)]
t5510: test "git fetch" following tags minimally

When "git fetch" auto-follows tags, it should not download excess ones.
This new test makes sure that condition.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoCheck early that a new branch is new and valid
Daniel Barkalow [Sun, 21 Sep 2008 18:36:06 +0000 (14:36 -0400)]
Check early that a new branch is new and valid

If you fail to update refs to change branches in checkout, your index
and working tree are left already updated. We don't have an easy way
to undo this, but at least we can check things that would make the
creation of a new branch fail. These checks were in the shell version,
and were lost in the C conversion.

The messages are from the shell version, and should probably be made nicer.

[jc: added test to t7201]

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-hunk-header-fix
Junio C Hamano [Sun, 21 Sep 2008 01:36:22 +0000 (18:36 -0700)]
Merge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-hunk-header-fix

* bc/maint-diff-hunk-header-fix:
  diff hunk pattern: fix misconverted "\{" tex macro introducers

Conflicts:
diff.c

16 years agodiff hunk pattern: fix misconverted "\{" tex macro introducers
Junio C Hamano [Sat, 20 Sep 2008 22:30:12 +0000 (15:30 -0700)]
diff hunk pattern: fix misconverted "\{" tex macro introducers

Pointed out by Brandon Casey.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoUpdate draft release notes to 1.6.1
Junio C Hamano [Sat, 20 Sep 2008 08:01:30 +0000 (01:01 -0700)]
Update draft release notes to 1.6.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodiff: fix "multiple regexp" semantics to find hunk header comment
Junio C Hamano [Sat, 20 Sep 2008 07:52:11 +0000 (00:52 -0700)]
diff: fix "multiple regexp" semantics to find hunk header comment

When multiple regular expressions are concatenated with "\n", they were
traditionally AND'ed together, and only a line that matches _all_ of them
is taken as a match.  This however is unwieldy when multiple regexp
feature is used to specify alternatives.

This fixes the semantics to take the first match.  A nagative pattern, if
matches, makes the line to fail as before.  A match with a positive
pattern will be the final match, and what it captures in $1 is used as the
hunk header comment.

We could write alternatives using "|" in ERE, but the machinery can only
use captured $1 as the hunk header comment (or $0 if there is no match in
$1), so you cannot write:

    "junk ( A | B ) | garbage ( C | D )"

and expect both "junk" and "garbage" to get stripped with the existing
code.  With this fix, you can write it as:

    "junk ( A | B ) \n garbage ( C | D )"

and the way capture works would match the user expectation more
naturally.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodiff: use extended regexp to find hunk headers
Junio C Hamano [Sat, 20 Sep 2008 06:52:49 +0000 (23:52 -0700)]
diff: use extended regexp to find hunk headers

Using ERE elements such as "|" (alternation) by backquoting in BRE
is a GNU extension and should not be done in portable programs.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-hunk-header-fix
Junio C Hamano [Sat, 20 Sep 2008 06:51:01 +0000 (23:51 -0700)]
Merge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-hunk-header-fix

* bc/maint-diff-hunk-header-fix:
  diff: use extended regexp to find hunk headers

Conflicts:
diff.c

16 years agodiff: use extended regexp to find hunk headers
Junio C Hamano [Sat, 20 Sep 2008 06:45:04 +0000 (23:45 -0700)]
diff: use extended regexp to find hunk headers

Using ERE elements such as "|" (alternation) by backquoting in BRE
is a GNU extension and should not be done in portable programs.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'maint'
Junio C Hamano [Sat, 20 Sep 2008 06:15:44 +0000 (23:15 -0700)]
Merge branch 'maint'

* maint:
  Start draft release notes for 1.6.0.3
  git-repack uses --no-repack-object, not --no-repack-delta.
  Typo "bogos" in format-patch error message.
  builtin-clone: fix typo
  Bust the ghost of long-defunct diffcore-pathspec.
  completion: git commit should list --interactive

Conflicts:
RelNotes

16 years agoStart draft release notes for 1.6.0.3
Junio C Hamano [Sat, 20 Sep 2008 06:15:13 +0000 (23:15 -0700)]
Start draft release notes for 1.6.0.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agogit-repack uses --no-repack-object, not --no-repack-delta.
Mikael Magnusson [Fri, 19 Sep 2008 13:43:48 +0000 (15:43 +0200)]
git-repack uses --no-repack-object, not --no-repack-delta.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoTypo "bogos" in format-patch error message.
Mikael Magnusson [Fri, 19 Sep 2008 13:42:30 +0000 (15:42 +0200)]
Typo "bogos" in format-patch error message.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agobuiltin-clone: fix typo
Fabrizio Chiarello [Fri, 19 Sep 2008 12:07:26 +0000 (14:07 +0200)]
builtin-clone: fix typo

Signed-off-by: Fabrizio Chiarello <ponch@autistici.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoBust the ghost of long-defunct diffcore-pathspec.
Yann Dirson [Fri, 19 Sep 2008 20:12:53 +0000 (22:12 +0200)]
Bust the ghost of long-defunct diffcore-pathspec.

This concept was retired by 77882f6 (Retire diffcore-pathspec.,
2006-04-10), more than 2 years ago.

Signed-off-by: Yann Dirson <ydirson@altern.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agobash: use for-each-ref format 'refname:short'
SZEDER Gábor [Fri, 19 Sep 2008 22:15:25 +0000 (00:15 +0200)]
bash: use for-each-ref format 'refname:short'

Using this format simplifies the code for completing refs and (in some
cases) improves performance significantly.

For repositories like the current git.git (with more than 200 refs)
there is no real performance difference, but for a repository with 2000
refs the total time needed to complete the refs is reduced by ~25% (from
around 400ms to around 305ms).

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agocompletion: git commit should list --interactive
Eric Raible [Thu, 11 Sep 2008 00:40:20 +0000 (17:40 -0700)]
completion: git commit should list --interactive

Signed-off-by: Eric Raible <raible@gmail.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-hunk-header-fix
Junio C Hamano [Fri, 19 Sep 2008 03:32:50 +0000 (20:32 -0700)]
Merge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-hunk-header-fix

* bc/maint-diff-hunk-header-fix:
  diff.*.xfuncname which uses "extended" regex's for hunk header selection
  diff.c: associate a flag with each pattern and use it for compiling regex
  diff.c: return pattern entry pointer rather than just the hunk header pattern
  Cosmetical command name fix
  Start conforming code to "git subcmd" style part 3
  t9700/test.pl: remove File::Temp requirement
  t9700/test.pl: avoid bareword 'STDERR' in 3-argument open()
  GIT 1.6.0.2
  Fix some manual typos.
  Use compatibility regex library also on FreeBSD
  Use compatibility regex library also on AIX
  Update draft release notes for 1.6.0.2
  Use compatibility regex library for OSX/Darwin
  git-svn: Fixes my() parameter list syntax error in pre-5.8 Perl
  Git.pm: Use File::Temp->tempfile instead of ->new
  t7501: always use test_cmp instead of diff
  Start conforming code to "git subcmd" style part 2
  diff: Help "less" hide ^M from the output
  checkout: do not check out unmerged higher stages randomly

Conflicts:
Documentation/git.txt
Documentation/gitattributes.txt
Makefile
diff.c
t/t7201-co.sh

16 years agoMerge branch 'maint'
Junio C Hamano [Fri, 19 Sep 2008 03:30:12 +0000 (20:30 -0700)]
Merge branch 'maint'

* maint:
  sha1_file: link() returns -1 on failure, not errno
  Make git archive respect core.autocrlf when creating zip format archives
  Add new test to demonstrate git archive core.autocrlf inconsistency
  gitweb: avoid warnings for commits without body
  Clarified gitattributes documentation regarding custom hunk header.
  git-svn: fix handling of even funkier branch names
  git-svn: Always create a new RA when calling do_switch for svn://
  git-svn: factor out svnserve test code for later use
  diff/diff-files: do not use --cc too aggressively

16 years agoMerge branch 'jc/diff-prefix'
Junio C Hamano [Fri, 19 Sep 2008 03:30:07 +0000 (20:30 -0700)]
Merge branch 'jc/diff-prefix'

* jc/diff-prefix:
  diff: vary default prefix depending on what are compared

16 years agoMerge branch 'np/pack'
Junio C Hamano [Fri, 19 Sep 2008 03:19:30 +0000 (20:19 -0700)]
Merge branch 'np/pack'

* np/pack:
  t5300: improve SHA1 collision test
  pack-objects: don't include missing preferred base objects
  sha1write: don't copy full sized buffers

Conflicts:
t/t5300-pack-object.sh

16 years agoMerge branch 'bw/shortref'
Junio C Hamano [Fri, 19 Sep 2008 03:18:44 +0000 (20:18 -0700)]
Merge branch 'bw/shortref'

* bw/shortref:
  for-each-ref: `:short` format for `refname`

16 years agoMerge branch 'rs/decorate'
Junio C Hamano [Fri, 19 Sep 2008 03:18:41 +0000 (20:18 -0700)]
Merge branch 'rs/decorate'

* rs/decorate:
  add '%d' pretty format specifier to show decoration
  move load_ref_decorations() to log-tree.c and export it
  log: add load_ref_decorations()

16 years agoMerge branch 'tr/rev-list-reverse'
Junio C Hamano [Fri, 19 Sep 2008 03:18:37 +0000 (20:18 -0700)]
Merge branch 'tr/rev-list-reverse'

* tr/rev-list-reverse:
  t6013: replace use of 'tac' with equivalent Perl
  rev-list: fix --reverse interaction with --parents

16 years agoMerge branch 'cc/bisect'
Junio C Hamano [Fri, 19 Sep 2008 03:18:32 +0000 (20:18 -0700)]
Merge branch 'cc/bisect'

* cc/bisect:
  bisect: remove "checkout_done" variable used when checking merge bases
  bisect: only check merge bases when needed
  bisect: test merge base if good rev is not an ancestor of bad rev

16 years agoMerge branch 'jc/setlinebuf-setvbuf'
Junio C Hamano [Fri, 19 Sep 2008 03:18:27 +0000 (20:18 -0700)]
Merge branch 'jc/setlinebuf-setvbuf'

* jc/setlinebuf-setvbuf:
  daemon.c: avoid setlinebuf()

16 years agodiff.*.xfuncname which uses "extended" regex's for hunk header selection
Brandon Casey [Thu, 18 Sep 2008 22:44:33 +0000 (17:44 -0500)]
diff.*.xfuncname which uses "extended" regex's for hunk header selection

Currently, the hunk headers produced by 'diff -p' are customizable by
setting the diff.*.funcname option in the config file. The 'funcname' option
takes a basic regular expression. This functionality was designed using the
GNU regex library which, by default, allows using backslashed versions of
some extended regular expression operators, even in Basic Regular Expression
mode. For example, the following characters, when backslashed, are
interpreted according to the extended regular expression rules: ?, +, and |.
As such, the builtin funcname patterns were created using some extended
regular expression operators.

Other platforms which adhere more strictly to the POSIX spec do not
interpret the backslashed extended RE operators in Basic Regular Expression
mode. This causes the pattern matching for the builtin funcname patterns to
fail on those platforms.

Introduce a new option 'xfuncname' which uses extended regular expressions,
and advertise it _instead_ of funcname. Since most users are on GNU
platforms, the majority of funcname patterns are created and tested there.
Advertising only xfuncname should help to avoid the creation of non-portable
patterns which work with GNU regex but not elsewhere.

Additionally, the extended regular expressions may be less ugly and
complicated compared to the basic RE since many common special operators do
not need to be backslashed.

For example, the GNU Basic RE:

    ^[  ]*\\(\\(public\\|static\\).*\\)$

becomes the following Extended RE:

    ^[  ]*((public|static).*)$

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodiff.c: associate a flag with each pattern and use it for compiling regex
Brandon Casey [Thu, 18 Sep 2008 22:42:48 +0000 (17:42 -0500)]
diff.c: associate a flag with each pattern and use it for compiling regex

This is in preparation for allowing extended regular expression patterns.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agodiff.c: return pattern entry pointer rather than just the hunk header pattern
Brandon Casey [Thu, 18 Sep 2008 22:40:48 +0000 (17:40 -0500)]
diff.c: return pattern entry pointer rather than just the hunk header pattern

This is in preparation for associating a flag with each pattern which will
control how the pattern is interpreted. For example, as a basic or extended
regular expression.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16 years agoMerge branch 'dp/maint-rebase-fix' into maint
Junio C Hamano [Fri, 19 Sep 2008 02:53:25 +0000 (19:53 -0700)]
Merge branch 'dp/maint-rebase-fix' into maint

* dp/maint-rebase-fix:
  git-rebase--interactive: auto amend only edited commit
  git-rebase-interactive: do not squash commits on abort

16 years agoMerge branch 'jc/maint-checkout-keep-remove' into maint
Junio C Hamano [Fri, 19 Sep 2008 02:53:22 +0000 (19:53 -0700)]
Merge branch 'jc/maint-checkout-keep-remove' into maint

* jc/maint-checkout-keep-remove:
  checkout: do not lose staged removal

16 years agoMerge branch 'jc/maint-diff-quiet' into maint
Junio C Hamano [Fri, 19 Sep 2008 02:53:12 +0000 (19:53 -0700)]
Merge branch 'jc/maint-diff-quiet' into maint

* jc/maint-diff-quiet:
  diff --quiet: make it synonym to --exit-code >/dev/null
  diff Porcelain: do not disable auto index refreshing on -C -C

16 years agoMerge branch 'jc/maint-name-hash-clear' into maint
Junio C Hamano [Fri, 19 Sep 2008 02:53:06 +0000 (19:53 -0700)]
Merge branch 'jc/maint-name-hash-clear' into maint

* jc/maint-name-hash-clear:
  discard_cache: reset lazy name_hash bit