git.git
17 years agobuiltin-commit: Include the diff in the commit message when verbose.
Kristian Høgsberg [Thu, 22 Nov 2007 02:54:49 +0000 (21:54 -0500)]
builtin-commit: Include the diff in the commit message when verbose.

run_diff_index() and the entire diff machinery is hard coded to output
to stdout, so just redirect that and restore it when done.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agobuiltin-commit: fix partial-commit support
Junio C Hamano [Sun, 18 Nov 2007 09:52:55 +0000 (01:52 -0800)]
builtin-commit: fix partial-commit support

When making a partial-commit, we need to prepare two index
files, one to be used to write out the tree to be committed
(temporary index) and the other to be used as the index file
after the commit is made.

The temporary index needs to be initialized to HEAD and then all
the named paths on the command line need to be staged on top of
the index.  For this, running add_files_to_cache() that compares
what is in the index and the paths given from the command line
is not enough -- the comparison will miss the paths that the
user previously ran "git add" to the index since the HEAD
because the index reset to the HEAD would not know about them.
The index file needs to get the same modification done when
preparing the temporary index as described above.

This implementation mimics the behaviour of the scripted
version of git-commit.  It first runs overlay_tree_on_cache(),
which was stolen from ls-files with the earlier change, to get
the list of paths that the user can potentially mean, and then
uses pathspec_match() to find which ones the user meant.  This
list of paths is used to update both the temporary and the real
index file.

Additional fixes are:

 - read the index file after pre-commit hook returns, as the
   hook can modify it to affect the contents of the commit.

 - remove the temporary index file .git/next-index-* after
   commit is done or aborted.

 - run post-commit hook with the real index file to be used
   after the commit (previously it gave the temporary commit if
   a partial commit was made).

 - resurrect the safety mechanism to refuse partial commits
   during a merge to match the scripted version.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoFix add_files_to_cache() to take pathspec, not user specified list of files
Junio C Hamano [Sun, 18 Nov 2007 09:12:04 +0000 (01:12 -0800)]
Fix add_files_to_cache() to take pathspec, not user specified list of files

This separates the logic to limit the extent of change to the
index by where you are (controlled by "prefix") and what you
specify from the command line (controlled by "pathspec").

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoExport three helper functions from ls-files
Junio C Hamano [Sun, 18 Nov 2007 09:13:32 +0000 (01:13 -0800)]
Export three helper functions from ls-files

This exports three helper functions from ls-files.

 * pathspec_match() checks if a given path matches a set of pathspecs
   and optionally records which pathspec was used.  This function used
   to be called "match()" but renamed to be a bit less vague.

 * report_path_error() takes a set of pathspecs and the record
   pathspec_match() above leaves, and gives error message.  This
   was split out of the main function of ls-files.

 * overlay_tree_on_cache() takes a tree-ish (typically "HEAD")
   and overlays it on the current in-core index.  By iterating
   over the resulting index, the caller can find out the paths
   in either the index or the HEAD.  This function used to be
   called "overlay_tree()" but renamed to be a bit more
   descriptive.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agobuiltin-commit: run commit-msg hook with correct message file
Junio C Hamano [Sun, 18 Nov 2007 20:21:17 +0000 (12:21 -0800)]
builtin-commit: run commit-msg hook with correct message file

It should run with $GIT_DIR/COMMIT_EDITMSG, not just COMMIT_EDITMSG.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agobuiltin-commit: do not color status output shown in the message template
Junio C Hamano [Sun, 18 Nov 2007 20:01:38 +0000 (12:01 -0800)]
builtin-commit: do not color status output shown in the message template

Noticed by Ping Yin on the list.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agofile_exists(): dangling symlinks do exist
Junio C Hamano [Sun, 18 Nov 2007 09:58:16 +0000 (01:58 -0800)]
file_exists(): dangling symlinks do exist

This function is used to see if a path given by the user does exist
on the filesystem.  A symbolic link that does not point anywhere does
exist but running stat() on it would yield an error, and it incorrectly
said it does not exist.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoReplace "runstatus" with "status" in the tests
Johannes Schindelin [Thu, 15 Nov 2007 06:27:57 +0000 (06:27 +0000)]
Replace "runstatus" with "status" in the tests

We no longer have "runstatus", but running "status" is no longer that
expensive anyway; it is a builtin.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agot7501-commit: Add test for git commit <file> with dirty index.
Kristian Høgsberg [Thu, 15 Nov 2007 14:49:58 +0000 (09:49 -0500)]
t7501-commit: Add test for git commit <file> with dirty index.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agobuiltin-commit: Clean up an unused variable and a debug fprintf().
Kristian Høgsberg [Wed, 14 Nov 2007 15:31:53 +0000 (10:31 -0500)]
builtin-commit: Clean up an unused variable and a debug fprintf().

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoCall refresh_cache() when updating the user index for --only commits.
Kristian Høgsberg [Mon, 12 Nov 2007 20:48:22 +0000 (15:48 -0500)]
Call refresh_cache() when updating the user index for --only commits.

We're guaranteeing the user that the index will be stat-clean after
git commit. Thus, we need to call refresh_cache() for the user index too,
in the 'git commit <paths>' case.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agobuiltin-commit: Add newline when showing which commit was created
Johannes Schindelin [Sun, 11 Nov 2007 17:36:52 +0000 (17:36 +0000)]
builtin-commit: Add newline when showing which commit was created

The function log_tree_commit() does not break the line, so we have to
do it ourselves.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agobuiltin-commit: resurrect behavior for multiple -m options
Johannes Schindelin [Sun, 11 Nov 2007 17:36:39 +0000 (17:36 +0000)]
builtin-commit: resurrect behavior for multiple -m options

When more than one -m option is given, the message does not replace
the previous, but is appended as a new paragraph.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agobuiltin-commit --s: add a newline if the last line was not a S-o-b
Johannes Schindelin [Sun, 11 Nov 2007 17:36:27 +0000 (17:36 +0000)]
builtin-commit --s: add a newline if the last line was not a S-o-b

The rule is this: if the last line already contains the sign off by the
current committer, do nothing.  If it contains another sign off, just
add the sign off of the current committer.  If the last line does not
contain a sign off, add a new line before adding the sign off.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agobuiltin-commit: fix --signoff
Johannes Schindelin [Sun, 11 Nov 2007 17:35:58 +0000 (17:35 +0000)]
builtin-commit: fix --signoff

The Signed-off-by: line contained a spurious timestamp.  The reason was
a call to git_committer_info(1), which automatically added the
timestamp.

Instead, fmt_ident() was taught to interpret an empty string for the
date (as opposed to NULL, which still triggers the default behavior)
as "do not bother with the timestamp", and builtin-commit.c uses it.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit status: show relative paths when run in a subdirectory
Johannes Schindelin [Sun, 11 Nov 2007 17:35:41 +0000 (17:35 +0000)]
git status: show relative paths when run in a subdirectory

To show the relative paths, the function formerly called quote_crlf()
(now called quote_path()) takes the prefix as an additional argument.

While at it, the static buffers were replaced by strbufs.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agobuiltin-commit: Refresh cache after adding files.
Kristian Høgsberg [Fri, 9 Nov 2007 16:40:27 +0000 (11:40 -0500)]
builtin-commit: Refresh cache after adding files.

We have promised our users that after running git-status or
git-commit the index will be refreshed for a long time since
these commands were introduced.  Do refresh the index before
writing it out to keep the promise.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agobuiltin-commit: fix reflog message generation
Johannes Schindelin [Thu, 8 Nov 2007 12:15:26 +0000 (12:15 +0000)]
builtin-commit: fix reflog message generation

Instead of strdup()ing, we can just reuse the buffer in which the
commit message is stored, and which is supposed to hold the reflog
message anyway.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agolaunch_editor(): read the file, even when EDITOR=:
Johannes Schindelin [Thu, 8 Nov 2007 14:06:52 +0000 (14:06 +0000)]
launch_editor(): read the file, even when EDITOR=:

Earlier we just returned in case EDITOR=: but the message stored
in the file was not read back.  Fix this, at the same time
simplifying the code as suggested by Johannes Sixt.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoPort git commit to C.
Kristian Høgsberg [Thu, 8 Nov 2007 16:59:00 +0000 (11:59 -0500)]
Port git commit to C.

This makes git commit a builtin and moves git-commit.sh to
contrib/examples.  This also removes the git-runstatus
helper, which was mostly just a git-status.sh implementation detail.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoExport launch_editor() and make it accept ':' as a no-op editor.
Kristian Høgsberg [Fri, 2 Nov 2007 15:33:08 +0000 (11:33 -0400)]
Export launch_editor() and make it accept ':' as a no-op editor.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAdd testcase for amending and fixing author in git commit.
Kristian Høgsberg [Fri, 2 Nov 2007 15:33:06 +0000 (11:33 -0400)]
Add testcase for amending and fixing author in git commit.

We used to clobber author time, but we shouldn't.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMake test scripts executable.
Junio C Hamano [Fri, 23 Nov 2007 00:52:17 +0000 (16:52 -0800)]
Make test scripts executable.

17 years agoMerge branch 'maint'
Junio C Hamano [Fri, 23 Nov 2007 00:51:18 +0000 (16:51 -0800)]
Merge branch 'maint'

* maint:
  Make test scripts executable.
  bundle create: keep symbolic refs' names instead of resolving them

17 years agoMake test scripts executable.
Junio C Hamano [Fri, 23 Nov 2007 00:48:55 +0000 (16:48 -0800)]
Make test scripts executable.

17 years agorebase -i: move help to end of todo file
Johannes Schindelin [Thu, 22 Nov 2007 12:30:10 +0000 (12:30 +0000)]
rebase -i: move help to end of todo file

[PATCH] rebase -i: move help to end of todo file

Many editors start in the first line, so the 9-line help text was an
annoyance.  So move it to the end.

Requested by Junio.

While at it, add a hint how to abort the rebase.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agobundle create: keep symbolic refs' names instead of resolving them
Johannes Schindelin [Thu, 22 Nov 2007 12:24:59 +0000 (12:24 +0000)]
bundle create: keep symbolic refs' names instead of resolving them

When creating a bundle, symbolic refs used to be resolved to the
non-symbolic refs they point to before being written to the list
of contained refs.  I.e. "git bundle create a1.bundle HEAD master"
would show something like

388afe7881b33102fada216dd07806728773c011        refs/heads/master
388afe7881b33102fada216dd07806728773c011        refs/heads/master

instead of

388afe7881b33102fada216dd07806728773c011        HEAD
388afe7881b33102fada216dd07806728773c011        refs/heads/master

Introduce a special handling so that the symbolic refs are listed
with the names passed on the command line.

Noticed by Santi Béjar.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-merge-ours: make it a builtin.
Thomas Harning [Thu, 22 Nov 2007 20:19:40 +0000 (15:19 -0500)]
git-merge-ours: make it a builtin.

Except that this fixes a longstanding corner case bug by
tightening the way underlying diff-index command is run, it is
functionally equivalent to the scripted version.

Signed-off-by: Thomas Harning Jr <harningt@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRefactor patch_update_cmd
Wincent Colaiuta [Wed, 21 Nov 2007 12:36:38 +0000 (13:36 +0100)]
Refactor patch_update_cmd

Split patch_update_cmd into two functions, one to prompt the user for
a path to patch and another to do the actual work given that file path.
This lays the groundwork for a future commit which will teach
git-add--interactive to accept a path parameter and jump directly to
the patch subcommand for that path, bypassing the interactive prompt.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAuthenticate only once in git-send-email
Wincent Colaiuta [Wed, 21 Nov 2007 12:35:05 +0000 (13:35 +0100)]
Authenticate only once in git-send-email

When using git-send-email with SMTP authentication sending a patch series
would redundantly authenticate multiple times, once for each patch. In
the worst case, this would actually prevent the series from being sent
because the server would reply with a "5.5.0 Already Authenticated"
status code which would derail the process.

This commit teaches git-send-email to authenticate once and only once at
the beginning of the series.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge git://git.bogomips.org/git-svn
Junio C Hamano [Thu, 22 Nov 2007 08:34:49 +0000 (00:34 -0800)]
Merge git://git.bogomips.org/git-svn

* git://git.bogomips.org/git-svn:
  git-svn: allow `info' command to work offline
  git-svn: info --url [path]
  git-svn info: implement info command
  git-svn: extract reusable code into utility functions
  t9106: fix a race condition that caused svn to miss modifications

17 years agoFix "quote" misconversion for rewrite diff output.
Junio C Hamano [Thu, 22 Nov 2007 07:06:44 +0000 (23:06 -0800)]
Fix "quote" misconversion for rewrite diff output.

663af3422a648e87945e4d8c0cc3e13671f2bbde (Full rework of
quote_c_style and write_name_quoted.) mistakenly used puts()
when writing out a fixed string when it did not want to add a
terminating LF.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-svn: allow `info' command to work offline
Eric Wong [Thu, 22 Nov 2007 02:20:57 +0000 (18:20 -0800)]
git-svn: allow `info' command to work offline

Cache the repository root whenever we connect to the repository.
This will allow us to notice URL changes if the user changes the
URL in .git/config, too.

If the repository is no longer accessible, or if `git svn info'
is the first and only command run; then '(offline)' will be
displayed for "Repository Root:" in the output.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: info --url [path]
David D. Kilzer [Wed, 21 Nov 2007 19:57:19 +0000 (11:57 -0800)]
git-svn: info --url [path]

Return the svn URL for the given path, or return the svn
repository URL if no path is given.

Added 18 tests to t/t9119-git-svn-info.sh.

Signed-off-by: David D. Kilzer <ddkilzer@kilzer.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn info: implement info command
David D. Kilzer [Wed, 21 Nov 2007 19:57:18 +0000 (11:57 -0800)]
git-svn info: implement info command

Implement "git-svn info" for files and directories based on the
"svn info" command.  Note that the -r/--revision argument is not
supported yet.

Added 18 tests in t/t9119-git-svn-info.sh.

[ew: small fix to work without arguments on all working directories]

Signed-off-by: David D. Kilzer <ddkilzer@kilzer.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: extract reusable code into utility functions
David D. Kilzer [Wed, 21 Nov 2007 06:43:17 +0000 (22:43 -0800)]
git-svn: extract reusable code into utility functions

Extacted canonicalize_path() in the main package.

Created new Git::SVN::Util package with an md5sum() function.  A
new package was created so that Digest::MD5 did not have to be
loaded in the main package.  Replaced code in the SVN::Git::Editor
and SVN::Git::Fetcher packages with calls to md5sum().

Extracted the format_svn_date(), parse_git_date() and
set_local_timezone() functions within the Git::SVN::Log package.

Signed-off-by: David D. Kilzer <ddkilzer@kilzer.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
17 years agot9106: fix a race condition that caused svn to miss modifications
Eric Wong [Wed, 21 Nov 2007 08:57:33 +0000 (00:57 -0800)]
t9106: fix a race condition that caused svn to miss modifications

carbonated beverage noticed this test was occasionally failing.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agoMerge git://repo.or.cz/git-gui
Junio C Hamano [Wed, 21 Nov 2007 08:00:56 +0000 (00:00 -0800)]
Merge git://repo.or.cz/git-gui

* git://repo.or.cz/git-gui: (96 commits)
  git-gui 0.9.0
  git-gui: Bind Meta-T for "Stage To Commit" menu action
  git-gui: Allow users to set font weights to bold
  git-gui: Update Japanese strings (part 2)
  git-gui: Update Japanese strings
  Updated russian translation of git-gui
  po2msg: actually output statistics
  po2msg: ignore untranslated messages
  po2msg: ignore entries marked with "fuzzy"
  git-gui: Protect against bad translation strings
  git-gui: Make sure we get errors from git-update-index
  More updates and corrections to the russian translation of git-gui
  Updated Russian translation.
  git-gui: Update German translation
  git-gui: Add more terms to glossary.
  git-gui: Paper bag fix the global config parsing
  git-gui: Honor a config.mak in git-gui's top level
  git-gui: Collapse $env(HOME) to ~/ in recent repositories on Windows
  git-gui: Support cloning Cygwin based work-dirs
  git-gui: Use proper Windows shortcuts instead of bat files
  ...

17 years agogit-p4: Fix typo in --detect-labels
Shun Kei Leung [Wed, 21 Nov 2007 03:01:19 +0000 (11:01 +0800)]
git-p4: Fix typo in --detect-labels

Signed-off-by: Kevin Leung <kevinlsk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoavoid "defined but not used" warning for fetch_objs_via_walker
Jeff King [Sun, 18 Nov 2007 08:17:23 +0000 (03:17 -0500)]
avoid "defined but not used" warning for fetch_objs_via_walker

Because this function is static and used only by the
http-walker, when NO_CURL is defined, gcc emits a "defined
but not used" warning.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-gui 0.9.0 gitgui-0.9.0
Shawn O. Pearce [Wed, 21 Nov 2007 07:10:03 +0000 (02:10 -0500)]
git-gui 0.9.0

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoMerge branch 'maint'
Junio C Hamano [Wed, 21 Nov 2007 07:00:07 +0000 (23:00 -0800)]
Merge branch 'maint'

* maint:
  send-email: add transfer encoding header with content-type
  Doc fix for git-reflog: mention @{...} syntax, and <ref> in synopsys.
  config: clarify compression defaults
  config: correct core.loosecompression documentation

17 years agosend-email: add transfer encoding header with content-type
Jeff King [Tue, 20 Nov 2007 12:54:04 +0000 (07:54 -0500)]
send-email: add transfer encoding header with content-type

We add the content-type header only when we have non-7bit
characters from the 'From' header, so we really need to
specify the encoding (in other cases, where the commit text
needed a content-type, git-format-patch will already have
added the encoding header).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-compat-util.h: auto-adjust to compiler support of FLEX_ARRAY a bit better
Junio C Hamano [Tue, 20 Nov 2007 20:08:06 +0000 (12:08 -0800)]
git-compat-util.h: auto-adjust to compiler support of FLEX_ARRAY a bit better

When declaring a structure with a flexible array member, instead
of defaulting to the c99 syntax for non-gnu compilers (which
burned people with older compilers), default to the traditional
and more portable "member[1]; /* more */" syntax.

At the same time, other c99 compilers should be able to take
advantage of the modern syntax to flexible array members without
being gcc.  Check __STDC_VERSION__ for that.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoFlush progress message buffer in display().
Johannes Sixt [Mon, 19 Nov 2007 19:48:58 +0000 (20:48 +0100)]
Flush progress message buffer in display().

This will make progress display from pack-objects (invoked via
upload-pack) more responsive on platforms with an implementation
of stdio whose stderr is line buffered.

The standard error stream is defined to be merely "not fully
buffered"; this is different from "unbuffered".  If the
implementation of the stdio library chooses to make it line
buffered, progress reports that end with CR but do not contain
LF will accumulate in the stdio buffer before written out.  A
fflush() after each progress display gives a nice continuous
progress.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoautoconf: Add tests for memmem, strtoumax and mkdtemp functions
Jakub Narebski [Mon, 19 Nov 2007 18:47:05 +0000 (19:47 +0100)]
autoconf: Add tests for memmem, strtoumax and mkdtemp functions

Update configure.ac (and config.mak.in) to keep up with git
development by adding tests for memmem (NO_MEMMEM), strtoumax
(NO_STRTOUMAX) and mkdtemp (NO_MKDTEMP) functions.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitweb: Put project README in div.readme, fix its padding
Jakub Narebski [Mon, 19 Nov 2007 13:16:12 +0000 (14:16 +0100)]
gitweb: Put project README in div.readme, fix its padding

Put (optional) projects README on "summary" page in <div> element
using "readme" class.  This allow to style it using CSS.

Add padding to project's README to make it line out with the rest
of the page.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
17 years agogitweb: Style all tables using CSS
Jakub Narebski [Mon, 19 Nov 2007 13:16:11 +0000 (14:16 +0100)]
gitweb: Style all tables using CSS

Remove all cellspacing="0" attributes from tables in gitweb,
replacing it by CSS rule.  Add CSS classes for all tables.

While at it, change class(es) of table for commit message and commit
authorship search from "grep" to "commit_search"; similarly,
"grep_search" class is now used for table with results of grep (files)
search.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
17 years agosend-email: Don't add To: recipients to the Cc: header
Ask Bjørn Hansen [Mon, 19 Nov 2007 11:00:26 +0000 (03:00 -0800)]
send-email: Don't add To: recipients to the Cc: header

Signed-off-by: Ask Bjørn Hansen <ask@develooper.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDoc fix for git-reflog: mention @{...} syntax, and <ref> in synopsys.
Matthieu Moy [Mon, 19 Nov 2007 18:25:11 +0000 (19:25 +0100)]
Doc fix for git-reflog: mention @{...} syntax, and <ref> in synopsys.

The HEAD@{...} syntax was documented in git-rev-parse manpage, which
is hard to find by someone looking for the documentation of porcelain.
git-reflog is probably the place where one expects to find this.

While I'm there, "git revlog show whatever" was also undocumented.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoconfig: clarify compression defaults
Brian Downing [Mon, 19 Nov 2007 16:58:51 +0000 (10:58 -0600)]
config: clarify compression defaults

* Clarify that core.compression provides a system-wide default to
  other compression parameters.

* Explain that the default for pack.compression, -1, is "a default
  compromise between speed and compression (currently equivalent
  to level 6)" according to zlib.h.

Signed-off-by: Brian Downing <bdowning@lavos.net>
Acked-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoconfig: correct core.loosecompression documentation
Brian Downing [Mon, 19 Nov 2007 16:58:50 +0000 (10:58 -0600)]
config: correct core.loosecompression documentation

* core.loosecompression stated that the default was "0 (best speed)",
  when in fact 0 is "no compression", and the default is Z_BEST_SPEED,
  which is 1.

Signed-off-by: Brian Downing <bdowning@lavos.net>
Acked-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitview: import only one of gtksourceview and gtksourceview2
Anton Gyllenberg [Mon, 19 Nov 2007 10:37:16 +0000 (12:37 +0200)]
gitview: import only one of gtksourceview and gtksourceview2

Importing both gtksourceview and gtksourceview2 will make python segfault
on my system (ubuntu 7.10). Change so that gtksourceview is only imported
if importing gtksourceview2 fails. This should be safe as gtksourceview
is only used if gtksourceview2 is not available.

Signed-off-by: Anton Gyllenberg <anton@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-send-email: show all headers when sending mail
David D. Kilzer [Mon, 19 Nov 2007 04:14:55 +0000 (20:14 -0800)]
git-send-email: show all headers when sending mail

As a git newbie, it was confusing to set an In-Reply-To header but then
not see it printed when the git-send-email command was run.

This patch prints all headers that would be sent to sendmail or an SMTP
server instead of only printing From, Subject, Cc, To.  It also removes
the now-extraneous Date header after the "Log says" line.

Added test to t/t9001-send-email.sh.

Signed-off-by: David D. Kilzer <ddkilzer@kilzer.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'maint'
Junio C Hamano [Mon, 19 Nov 2007 08:19:15 +0000 (00:19 -0800)]
Merge branch 'maint'

* maint:
  Documentation: Fix references to deprecated commands
  user-manual: mention "..." in "Generating diffs", etc.
  user-manual: Add section "Why bisecting merge commits can be harder ..."
  git-remote.txt: fix example url

17 years agoFurther clarify clean.requireForce changes
Wincent Colaiuta [Mon, 19 Nov 2007 08:06:31 +0000 (09:06 +0100)]
Further clarify clean.requireForce changes

Mention the -f switch in the release notes for clean.requireForce to avoid
possible misunderstandings.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'maint' of git://linux-nfs.org/~bfields/git into maint
Junio C Hamano [Mon, 19 Nov 2007 07:56:01 +0000 (23:56 -0800)]
Merge branch 'maint' of git://linux-nfs.org/~bfields/git into maint

* 'maint' of git://linux-nfs.org/~bfields/git:
  Documentation: Fix references to deprecated commands
  user-manual: mention "..." in "Generating diffs", etc.
  user-manual: Add section "Why bisecting merge commits can be harder ..."
  git-remote.txt: fix example url

17 years agoDocumentation: Fix references to deprecated commands
J. Bruce Fields [Mon, 19 Nov 2007 01:50:57 +0000 (20:50 -0500)]
Documentation: Fix references to deprecated commands

... by changing git-tar-tree reference to git-archive and removing
seemingly unrelevant footnote about git-ssh-{fetch,upload}.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
17 years agoUpdate draft release notes for 1.5.4
Junio C Hamano [Mon, 19 Nov 2007 00:24:14 +0000 (16:24 -0800)]
Update draft release notes for 1.5.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agouser-manual: mention "..." in "Generating diffs", etc.
J. Bruce Fields [Mon, 19 Nov 2007 00:18:27 +0000 (19:18 -0500)]
user-manual: mention "..." in "Generating diffs", etc.

We should mention the use of the "..." syntax for git-diff here.  The
note about the difference between diff and the combined output of
git-format-patch then no longer fits so well, so remove it.  Add a
reference to the git-format-patch[1] manpage.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
17 years agoMerge branch 'lt/rev-list-gitlink'
Junio C Hamano [Mon, 19 Nov 2007 00:16:37 +0000 (16:16 -0800)]
Merge branch 'lt/rev-list-gitlink'

* lt/rev-list-gitlink:
  Fix rev-list when showing objects involving submodules

17 years agoMerge branch 'ds/checkout-upper'
Junio C Hamano [Mon, 19 Nov 2007 00:04:17 +0000 (16:04 -0800)]
Merge branch 'ds/checkout-upper'

* ds/checkout-upper:
  git-checkout: Test for relative path use.
  git-checkout: Support relative paths containing "..".

17 years agoMerge branch 'sh/p4'
Junio C Hamano [Mon, 19 Nov 2007 00:03:58 +0000 (16:03 -0800)]
Merge branch 'sh/p4'

* sh/p4:
  git-p4: Fix direct import from perforce after fetching changes through git from origin

17 years agoMerge branch 'lt/rev-list-interactive'
Junio C Hamano [Mon, 19 Nov 2007 00:03:24 +0000 (16:03 -0800)]
Merge branch 'lt/rev-list-interactive'

* lt/rev-list-interactive:
  Fix parent rewriting in --early-output
  revision walker: mini clean-up
  Enhance --early-output format
  Add "--early-output" log flag for interactive GUI use
  Simplify topo-sort logic

17 years agoMerge branch 'ph/diffopts'
Junio C Hamano [Sun, 18 Nov 2007 23:50:16 +0000 (15:50 -0800)]
Merge branch 'ph/diffopts'

* ph/diffopts:
  Reorder diff_opt_parse options more logically per topics.
  Make the diff_options bitfields be an unsigned with explicit masks.
  Use OPT_BIT in builtin-pack-refs
  Use OPT_BIT in builtin-for-each-ref
  Use OPT_SET_INT and OPT_BIT in builtin-branch
  parse-options new features.

17 years agoDraft release notes: fix clean.requireForce description
Junio C Hamano [Sun, 18 Nov 2007 23:22:51 +0000 (15:22 -0800)]
Draft release notes: fix clean.requireForce description

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'maint' to synchronize with 1.5.3.6
Junio C Hamano [Sun, 18 Nov 2007 23:15:47 +0000 (15:15 -0800)]
Merge branch 'maint' to synchronize with 1.5.3.6

* maint:
  GIT 1.5.3.6
  grep -An -Bm: fix invocation of external grep command

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agouser-manual: Add section "Why bisecting merge commits can be harder ..."
Steffen Prohaska [Sat, 10 Nov 2007 13:49:54 +0000 (14:49 +0100)]
user-manual: Add section "Why bisecting merge commits can be harder ..."

This commit adds a discussion of the challenge of bisecting
merge commits to the user manual.  The original author is
Junio C Hamano <gitster@pobox.com>, who posted the text to
the mailing list <http://marc.info/?l=git&m=119403257315527&w=2>.
His email was adapted for the manual.

The discussion is added to "Rewriting history and maintainig
patch series".  The text added requires good understanding of
merging and rebasing.  Therefore it should not be placed too
early in the manual.  Right after the section on "Problems with
rewriting history", the discussion of bisect gives another reason
for linearizing as much of the history as possible.

The text includes suggestions and fixes by
Ralf Wildenhues <Ralf.Wildenhues@gmx.de> and
Benoit Sigoure <tsuna@lrde.epita.fr>.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
17 years agoGIT 1.5.3.6 v1.5.3.6
Junio C Hamano [Sun, 18 Nov 2007 22:00:38 +0000 (14:00 -0800)]
GIT 1.5.3.6

17 years agoUse compat mkdtemp() on Solaris boxes
Guido Ostkamp [Fri, 16 Nov 2007 18:59:58 +0000 (19:59 +0100)]
Use compat mkdtemp() on Solaris boxes

Define NO_MKDTEMP for all variants of SunOS; Solaris 10 does not
have mkdtemp() and all the other versions our Makefile knows
about don't have it either.

NO_{SETENV,UNSETENV,C99_FORMAT,STRTOUMAX} definitions cannot be
unified across versions.  Beginning with Solaris 10, the C-library
provides unsetenv(), setenv() and strtoumax().  Also 'z'/'t' formats
are supported.  However, older versions of Solaris do not support
these.

Signed-off-by: Guido Ostkamp <git@ostkamp.fastmail.fm>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'ph/parseopt-sh'
Junio C Hamano [Sun, 18 Nov 2007 05:39:37 +0000 (21:39 -0800)]
Merge branch 'ph/parseopt-sh'

* ph/parseopt-sh:
  git-quiltimport.sh fix --patches handling
  git-am: -i does not take a string parameter.
  sh-setup: don't let eval output to be shell-expanded.
  git-sh-setup: fix parseopt `eval` string underquoting
  Give git-am back the ability to add Signed-off-by lines.
  git-rev-parse --parseopt
  scripts: Add placeholders for OPTIONS_SPEC
  Migrate git-repack.sh to use git-rev-parse --parseopt
  Migrate git-quiltimport.sh to use git-rev-parse --parseopt
  Migrate git-checkout.sh to use git-rev-parse --parseopt --keep-dashdash
  Migrate git-instaweb.sh to use git-rev-parse --parseopt
  Migrate git-merge.sh to use git-rev-parse --parseopt
  Migrate git-am.sh to use git-rev-parse --parseopt
  Migrate git-clone to use git-rev-parse --parseopt
  Migrate git-clean.sh to use git-rev-parse --parseopt.
  Update git-sh-setup(1) to allow transparent use of git-rev-parse --parseopt
  Add a parseopt mode to git-rev-parse to bring parse-options to shell scripts.

17 years agogrep -An -Bm: fix invocation of external grep command
Junio C Hamano [Sun, 18 Nov 2007 05:18:14 +0000 (21:18 -0800)]
grep -An -Bm: fix invocation of external grep command

When building command line to invoke external grep, the
arguments to -A/-B/-C options were placd in randarg[] buffer,
but the code forgot that snprintf() does not count terminating
NUL in its return value.  This caused "git grep -A1 -B2" to
invoke external grep with "-B21 -A1".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-remote.txt: fix example url
J. Bruce Fields [Sat, 3 Nov 2007 02:54:31 +0000 (22:54 -0400)]
git-remote.txt: fix example url

If I'm going to use a real example as a URL, I suppose I should get it
right....

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
17 years agoMerge git://git.bogomips.org/git-svn
Junio C Hamano [Sun, 18 Nov 2007 00:40:03 +0000 (16:40 -0800)]
Merge git://git.bogomips.org/git-svn

* git://git.bogomips.org/git-svn:
  git-svn: Fix a typo and add a comma in an error message in git-svn
  git-svn log: handle unreachable revisions like "svn log"
  git-svn log: include commit log for the smallest revision in a range
  git-svn log: fix ascending revision ranges
  git-svn's dcommit must use subversion's config
  git-svn: add tests for command-line usage of init and clone commands

17 years agogit-svn: Fix a typo and add a comma in an error message in git-svn
David Reiss [Tue, 13 Nov 2007 21:47:26 +0000 (13:47 -0800)]
git-svn: Fix a typo and add a comma in an error message in git-svn

Signed-off-by: David Reiss <dreiss@facebook.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn log: handle unreachable revisions like "svn log"
David D Kilzer [Mon, 12 Nov 2007 06:56:52 +0000 (22:56 -0800)]
git-svn log: handle unreachable revisions like "svn log"

When unreachable revisions are given to "svn log", it displays all commit
logs in the given range that exist in the current tree.  (If no commit
logs are found in the current tree, it simply prints a single commit log
separator.)  This patch makes "git-svn log" behave the same way.

Ten tests added to t/t9116-git-svn-log.sh.

Signed-off-by: David D Kilzer <ddkilzer@kilzer.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn log: include commit log for the smallest revision in a range
David D Kilzer [Sun, 11 Nov 2007 06:10:34 +0000 (22:10 -0800)]
git-svn log: include commit log for the smallest revision in a range

The "svn log -rM:N" command shows commit logs inclusive in the range [M,N].
Previously "git-svn log" always excluded the commit log for the smallest
revision in a range, whether the range was ascending or descending.  With
this patch, the smallest revision in a range is always shown.

Updated tests for ascending and descending revision ranges.

Signed-off-by: David D Kilzer <ddkilzer@kilzer.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn log: fix ascending revision ranges
David D Kilzer [Sun, 11 Nov 2007 06:10:33 +0000 (22:10 -0800)]
git-svn log: fix ascending revision ranges

Fixed typo in Git::SVN::Log::git_svn_log_cmd().  Previously a command like
"git-svn log -r1:4" would only show a commit log separator.

Added tests for ascending and descending revision ranges.

Signed-off-by: David D Kilzer <ddkilzer@kilzer.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn's dcommit must use subversion's config
Konstantin V. Arkhipov [Wed, 14 Nov 2007 00:52:02 +0000 (03:52 +0300)]
git-svn's dcommit must use subversion's config

When doing dcommit git-svn must use subversion's config or newly created
files will not include svn's properties
(defined in [auto-props] with 'enable-auto-props = yes').

Signed-off-by: Konstantin V. Arkhipov <voxus@onphp.org>
Acked-by: Eric Wong <normalperson@yhbt.net>
17 years agogit-svn: add tests for command-line usage of init and clone commands
Eric Wong [Sat, 17 Nov 2007 20:47:16 +0000 (12:47 -0800)]
git-svn: add tests for command-line usage of init and clone commands

Some patches broke these commands in certain cases and were only
caught by manual testing.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
17 years agoUpdate draft release notes for 1.5.4
Junio C Hamano [Sat, 17 Nov 2007 05:47:59 +0000 (21:47 -0800)]
Update draft release notes for 1.5.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoFix and improve t7004 (git-tag tests)
Mike Hommey [Fri, 16 Nov 2007 22:02:08 +0000 (23:02 +0100)]
Fix and improve t7004 (git-tag tests)

Brown paper bag fix to avoid using non portable sed syntax. The
test by itself didn't catch what it was supposed to, anyways.

The new test first checks if git-tag correctly errors out when
the user exited the editor without editing the file.  Then it
checks if what the user was presented in the editor was any
useful, which we define as the following:

 * It begins with a single blank line, where the invoked editor
   would typically place the editing curser at, so that the user
   can immediately start typing;

 * It has some instruction but that comes after that initial
   blank line, all lines prefixed with "#".  We specifically do
   not check for the wording of this instruction.

 * And it has nothing else, as the expected behaviour is "Hey
   you did not leave any message".

Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocumentation: fix git-clone manpage not to refer to itself
Sergei Organov [Fri, 16 Nov 2007 18:43:16 +0000 (21:43 +0300)]
Documentation: fix git-clone manpage not to refer to itself

Signed-off-by: Sergei Organov <osv@javad.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agouser-manual.txt: minor clarification.
Sergei Organov [Fri, 16 Nov 2007 11:28:57 +0000 (14:28 +0300)]
user-manual.txt: minor clarification.

Signed-off-by: Sergei Organov <osv@javad.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'maint'
Junio C Hamano [Sat, 17 Nov 2007 05:30:06 +0000 (21:30 -0800)]
Merge branch 'maint'

* maint:
  Update draft release notes for 1.5.3.6
  Fix per-directory exclude handing for "git add"
  core.excludesfile clean-up
  Fix t9101 test failure caused by Subversion "auto-props"
  git-send-email: add charset header if we add encoded 'From'

17 years agoUpdate draft release notes for 1.5.3.6
Junio C Hamano [Sat, 17 Nov 2007 02:44:06 +0000 (18:44 -0800)]
Update draft release notes for 1.5.3.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'ds/maint-deflatebound' into maint
Junio C Hamano [Sat, 17 Nov 2007 05:14:17 +0000 (21:14 -0800)]
Merge branch 'ds/maint-deflatebound' into maint

* ds/maint-deflatebound:
  Improve accuracy of check for presence of deflateBound.

17 years agoFix per-directory exclude handing for "git add"
Junio C Hamano [Fri, 16 Nov 2007 09:15:41 +0000 (01:15 -0800)]
Fix per-directory exclude handing for "git add"

In "dir_struct", each exclusion element in the exclusion stack records a
base string (pointer to the beginning with length) so that we can tell
where it came from, but this pointer is just pointing at the parameter
that is given by the caller to the push_exclude_per_directory()
function.

While read_directory_recursive() runs, calls to excluded() makes use
the data in the exclusion elements, including this base string.  The
caller of read_directory_recursive() is not supposed to free the
buffer it gave to push_exclude_per_directory() earlier, until it
returns.

The test case Bruce Stephens gave in the mailing list discussion
was simplified and added to the t3700 test.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agocore.excludesfile clean-up
Junio C Hamano [Sat, 17 Nov 2007 01:05:02 +0000 (17:05 -0800)]
core.excludesfile clean-up

There are inconsistencies in the way commands currently handle
the core.excludesfile configuration variable.  The problem is
the variable is too new to be noticed by anything other than
git-add and git-status.

 * git-ls-files does not notice any of the "ignore" files by
   default, as it predates the standardized set of ignore files.
   The calling scripts established the convention to use
   .git/info/exclude, .gitignore, and later core.excludesfile.

 * git-add and git-status know about it because they call
   add_excludes_from_file() directly with their own notion of
   which standard set of ignore files to use.  This is just a
   stupid duplication of code that need to be updated every time
   the definition of the standard set of ignore files is
   changed.

 * git-read-tree takes --exclude-per-directory=<gitignore>,
   not because the flexibility was needed.  Again, this was
   because the option predates the standardization of the ignore
   files.

 * git-merge-recursive uses hardcoded per-directory .gitignore
   and nothing else.  git-clean (scripted version) does not
   honor core.* because its call to underlying ls-files does not
   know about it.  git-clean in C (parked in 'pu') doesn't either.

We probably could change git-ls-files to use the standard set
when no excludes are specified on the command line and ignore
processing was asked, or something like that, but that will be a
change in semantics and might break people's scripts in a subtle
way.  I am somewhat reluctant to make such a change.

On the other hand, I think it makes perfect sense to fix
git-read-tree, git-merge-recursive and git-clean to follow the
same rule as other commands.  I do not think of a valid use case
to give an exclude-per-directory that is nonstandard to
read-tree command, outside a "negative" test in the t1004 test
script.

This patch is the first step to untangle this mess.

The next step would be to teach read-tree, merge-recursive and
clean (in C) to use setup_standard_excludes().

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoFix t9101 test failure caused by Subversion "auto-props"
Wincent Colaiuta [Fri, 16 Nov 2007 13:25:10 +0000 (14:25 +0100)]
Fix t9101 test failure caused by Subversion "auto-props"

If a user has an "auto-prop" in his/her ~/.subversion/config file for
automatically setting the svn:keyword Id property on all ".c" files
(a reasonably common configuration in the Subversion world) then one
of the "svn propset" operations in the very first test would become a
no-op, which in turn would make the next commit a no-op.

This then caused the 25th test ('test propget') to fail because it
expects a certain number of commits to have taken place but the actual
number of commits was off by one.

Björn Steinbrink identified the "auto-prop" feature as the cause
of the failure. This patch avoids it by passing the "--no-auto-prop"
flag to "svn import" when setting up the test repository, thus ensuring
that the "svn propset" operation is no longer a no-op, regardless of the
users' settings in their config.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-send-email: add charset header if we add encoded 'From'
Jeff King [Fri, 16 Nov 2007 10:49:09 +0000 (05:49 -0500)]
git-send-email: add charset header if we add encoded 'From'

We sometimes pick out the original rfc822 'From' header and
include it in the body of the message. If the original
author's name needs encoding, then we should specify that in
the content-type header.

If we already had a content-type header in the mail, then we
may need to re-encode. The logic is there to detect
this case, but it doesn't actually do the re-encoding.

Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-p4: Fix direct import from perforce after fetching changes through git from origin
Simon Hausmann [Thu, 15 Nov 2007 09:38:45 +0000 (10:38 +0100)]
git-p4: Fix direct import from perforce after fetching changes through git from origin

When using an existing git repository to cache the perforce import we don't
fetch the branch mapping from perforce as that is a slow operation. However
the origin repository may not be fully up-to-date and therefore it may be
necessary to import more changes directly from Perforce.

Such a direct import needs self.knownBranches to be set up though, so
initialize it from the existing p4/* git branches.

Signed-off-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoFix per-directory exclude handing for "git add"
Junio C Hamano [Fri, 16 Nov 2007 09:15:41 +0000 (01:15 -0800)]
Fix per-directory exclude handing for "git add"

In "dir_struct", each exclusion element in the exclusion stack records a
base string (pointer to the beginning with length) so that we can tell
where it came from, but this pointer is just pointing at the parameter
that is given by the caller to the push_exclude_per_directory()
function.

While read_directory_recursive() runs, calls to excluded() makes use
the data in the exclusion elements, including this base string.  The
caller of read_directory_recursive() is not supposed to free the
buffer it gave to push_exclude_per_directory() earlier, until it
returns.

The test case Bruce Stephens gave in the mailing list discussion
was simplified and added to the t3700 test.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocumentation: customize diff-options depending on particular command
Sergei Organov [Thu, 15 Nov 2007 13:19:29 +0000 (16:19 +0300)]
Documentation: customize diff-options depending on particular command

Customize diff-options depending on particular command as follows,
mostly to make git-diff and git-format-patch manuals less confusing:

* git-format-patch:

  - Mark --patch-with-stat as being the default.

  - Change -p description so that it matches what it actually does and
    so that it doesn't refer to absent "section on generating
    patches".

* git-diff: mark -p as being the default.

* git-diff-index/git-diff-files/git-diff-tree: mark --raw as being
  the default.

Signed-off-by: Sergei Organov <osv@javad.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-ls-files: add --exclude-standard
Jeff King [Thu, 15 Nov 2007 07:04:30 +0000 (02:04 -0500)]
git-ls-files: add --exclude-standard

This provides a way for scripts to get at the new standard exclude
function.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRemove unreachable statements
Guido Ostkamp [Thu, 15 Nov 2007 22:19:11 +0000 (23:19 +0100)]
Remove unreachable statements

Solaris Workshop Compiler found a few unreachable statements.

Signed-off-by: Guido Ostkamp <git@ostkamp.fastmail.fm>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agorefs.c: Remove unused get_ref_sha1()
Johannes Sixt [Thu, 15 Nov 2007 16:33:44 +0000 (17:33 +0100)]
refs.c: Remove unused get_ref_sha1()

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agocore.excludesfile clean-up
Junio C Hamano [Wed, 14 Nov 2007 08:05:00 +0000 (00:05 -0800)]
core.excludesfile clean-up

There are inconsistencies in the way commands currently handle
the core.excludesfile configuration variable.  The problem is
the variable is too new to be noticed by anything other than
git-add and git-status.

 * git-ls-files does not notice any of the "ignore" files by
   default, as it predates the standardized set of ignore files.
   The calling scripts established the convention to use
   .git/info/exclude, .gitignore, and later core.excludesfile.

 * git-add and git-status know about it because they call
   add_excludes_from_file() directly with their own notion of
   which standard set of ignore files to use.  This is just a
   stupid duplication of code that need to be updated every time
   the definition of the standard set of ignore files is
   changed.

 * git-read-tree takes --exclude-per-directory=<gitignore>,
   not because the flexibility was needed.  Again, this was
   because the option predates the standardization of the ignore
   files.

 * git-merge-recursive uses hardcoded per-directory .gitignore
   and nothing else.  git-clean (scripted version) does not
   honor core.* because its call to underlying ls-files does not
   know about it.  git-clean in C (parked in 'pu') doesn't either.

We probably could change git-ls-files to use the standard set
when no excludes are specified on the command line and ignore
processing was asked, or something like that, but that will be a
change in semantics and might break people's scripts in a subtle
way.  I am somewhat reluctant to make such a change.

On the other hand, I think it makes perfect sense to fix
git-read-tree, git-merge-recursive and git-clean to follow the
same rule as other commands.  I do not think of a valid use case
to give an exclude-per-directory that is nonstandard to
read-tree command, outside a "negative" test in the t1004 test
script.

This patch is the first step to untangle this mess.

The next step would be to teach read-tree, merge-recursive and
clean (in C) to use setup_standard_excludes().

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'sp/fetch-fix'
Junio C Hamano [Wed, 14 Nov 2007 22:26:04 +0000 (14:26 -0800)]
Merge branch 'sp/fetch-fix'

* sp/fetch-fix:
  git-fetch: avoid local fetching from alternate (again)
  rev-list: Introduce --quiet to avoid /dev/null redirects
  run-command: Support sending stderr to /dev/null
  git-fetch: Always fetch tags if the object they reference exists

17 years agoMerge branch 'bs/maint-commit-options'
Junio C Hamano [Wed, 14 Nov 2007 22:25:46 +0000 (14:25 -0800)]
Merge branch 'bs/maint-commit-options'

* bs/maint-commit-options:
  git-commit: Add tests for invalid usage of -a/--interactive with paths
  git-commit.sh: Fix usage checks regarding paths given when they do not make sense