git.git
13 years agostreaming: read non-delta incrementally from a pack
Junio C Hamano [Fri, 13 May 2011 22:34:58 +0000 (15:34 -0700)]
streaming: read non-delta incrementally from a pack

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agostreaming_write_entry(): support files with holes
Junio C Hamano [Fri, 13 May 2011 22:55:00 +0000 (15:55 -0700)]
streaming_write_entry(): support files with holes

One typical use of a large binary file is to hold a sparse on-disk hash
table with a lot of holes. Help preserving the holes with lseek().

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoconvert: CRLF_INPUT is a no-op in the output codepath
Junio C Hamano [Fri, 20 May 2011 23:14:32 +0000 (16:14 -0700)]
convert: CRLF_INPUT is a no-op in the output codepath

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agostreaming_write_entry(): use streaming API in write_entry()
Junio C Hamano [Thu, 12 May 2011 21:31:08 +0000 (14:31 -0700)]
streaming_write_entry(): use streaming API in write_entry()

When the output to a path does not have to be converted, we can read from
the object database from the streaming API and write to the file in the
working tree, without having to hold everything in the memory.

The ident, auto- and safe- crlf conversions inherently require you to read
the whole thing before deciding what to do, so while it is technically
possible to support them by using a buffer of an unbound size or rewinding
and reading the stream twice, it is less practical than the traditional
"read the whole thing in core and convert" approach.

Adding streaming filters for the other conversions on top of this should
be doable by tweaking the can_bypass_conversion() function (it should be
renamed to can_filter_stream() when it happens). Then the streaming API
can be extended to wrap the git_istream streaming_write_entry() opens on
the underlying object in another git_istream that reads from it, filters
what is read, and let the streaming_write_entry() read the filtered
result. But that is outside the scope of this series.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agostreaming: a new API to read from the object store
Junio C Hamano [Thu, 12 May 2011 02:30:25 +0000 (19:30 -0700)]
streaming: a new API to read from the object store

Given an object name, use open_istream() to get a git_istream handle
that you can read_istream() from as if you are using read(2) to read
the contents of the object, and close it with close_istream() when
you are done.

Currently, we do not do anything fancy--it just calls read_sha1_file()
and keeps the contents in memory as a whole, and carve it out as you
request with read_istream().

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agowrite_entry(): separate two helper functions out
Junio C Hamano [Fri, 13 May 2011 04:36:42 +0000 (21:36 -0700)]
write_entry(): separate two helper functions out

In the write-out codepath, a block of code determines what file in the
working tree to write to, and opens an output file descriptor to it.

After writing the contents out to the file, another block of code runs
fstat() on the file descriptor when appropriate.

Separate these blocks out to open_output_fd() and fstat_output()
helper functions.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agounpack_object_header(): make it public
Junio C Hamano [Fri, 13 May 2011 22:33:33 +0000 (15:33 -0700)]
unpack_object_header(): make it public

This function is used to read and skip over the per-object header
in a packfile.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosha1_object_info_extended(): hint about objects in delta-base cache
Junio C Hamano [Fri, 13 May 2011 20:20:43 +0000 (13:20 -0700)]
sha1_object_info_extended(): hint about objects in delta-base cache

An object found in the delta-base cache is not guaranteed to
stay there, but we know it came from a pack and it is likely
to give us a quick access if we read_sha1_file() it right now,
which is a piece of useful information.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosha1_object_info_extended(): expose a bit more info
Junio C Hamano [Thu, 12 May 2011 22:51:38 +0000 (15:51 -0700)]
sha1_object_info_extended(): expose a bit more info

The original interface for sha1_object_info() takes an object name and
gives back a type and its size (the latter is given only when it was
asked).  The new interface wraps its implementation and exposes a bit
more pieces of information that the interface used to discard, namely:

 - where the object is stored (loose? cached? packed?)
 - if packed, where in which packfile?

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 * In the earlier round, this used u.pack.delta to record the length of
   the delta chain, but the caller is not necessarily interested in the
   length of the delta chain per-se, but may only want to know if it is a
   delta against another object or is stored as a deflated data. Calling
   packed_object_info_detail() involves walking the reverse index chain to
   compute the store size of the object and is unnecessarily expensive.

   We could resurrect the code if a new caller wants to know, but I doubt
   it.

13 years agopacked_object_info_detail(): do not return a string
Junio C Hamano [Thu, 12 May 2011 23:50:29 +0000 (16:50 -0700)]
packed_object_info_detail(): do not return a string

Instead return an integer that can be given to typename() if
the caller wants a string, just like everybody else does.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branches 'jc/convert', 'jc/bigfile' and 'jc/replacing' into jc/streaming
Junio C Hamano [Sun, 15 May 2011 23:30:13 +0000 (16:30 -0700)]
Merge branches 'jc/convert', 'jc/bigfile' and 'jc/replacing' into jc/streaming

* jc/convert:
  convert: make it harder to screw up adding a conversion attribute
  convert: make it safer to add conversion attributes
  convert: give saner names to crlf/eol variables, types and functions
  convert: rename the "eol" global variable to "core_eol"

* jc/bigfile:
  Bigfile: teach "git add" to send a large file straight to a pack
  index_fd(): split into two helper functions
  index_fd(): turn write_object and format_check arguments into one flag

* jc/replacing:
  read_sha1_file(): allow selective bypassing of replacement mechanism
  inline lookup_replace_object() calls
  read_sha1_file(): get rid of read_sha1_file_repl() madness
  t6050: make sure we test not just commit replacement
  Declare lookup_replace_object() in cache.h, not in commit.h

13 years agoSync release notes for 1.7.6 to exclude what are in maintenance track
Junio C Hamano [Sun, 15 May 2011 23:19:16 +0000 (16:19 -0700)]
Sync release notes for 1.7.6 to exclude what are in maintenance track

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Sun, 15 May 2011 23:16:56 +0000 (16:16 -0700)]
Merge branch 'maint'

* maint:
  Update draft release notes to 1.7.5.2
  git_open_noatime(): drop unused parameter
  sha1_file: typofix

13 years agoUpdate draft release notes to 1.7.5.2
Junio C Hamano [Sun, 15 May 2011 23:11:55 +0000 (16:11 -0700)]
Update draft release notes to 1.7.5.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'cn/format-patch-quiet' into maint
Junio C Hamano [Sun, 15 May 2011 23:10:49 +0000 (16:10 -0700)]
Merge branch 'cn/format-patch-quiet' into maint

* cn/format-patch-quiet:
  format-patch: document --quiet option
  format-patch: don't pass on the --quiet flag

13 years agoMerge branch 'jm/mergetool-submodules' into maint
Junio C Hamano [Sun, 15 May 2011 22:57:16 +0000 (15:57 -0700)]
Merge branch 'jm/mergetool-submodules' into maint

* jm/mergetool-submodules:
  mergetool: Teach about submodules

13 years agoMerge branch 'jk/format-patch-quote-special-in-from' into maint
Junio C Hamano [Sun, 15 May 2011 22:56:44 +0000 (15:56 -0700)]
Merge branch 'jk/format-patch-quote-special-in-from' into maint

* jk/format-patch-quote-special-in-from:
  pretty: quote rfc822 specials in email addresses

13 years agoMerge branch 'vh/git-svn-doc' into maint
Junio C Hamano [Sun, 15 May 2011 22:52:40 +0000 (15:52 -0700)]
Merge branch 'vh/git-svn-doc' into maint

* vh/git-svn-doc:
  git-svn.txt: small typeface improvements
  git-svn.txt: move option descriptions
  git-svn.txt: fix usage of --add-author-from

13 years agogit_open_noatime(): drop unused parameter
Junio C Hamano [Sun, 15 May 2011 19:16:29 +0000 (12:16 -0700)]
git_open_noatime(): drop unused parameter

Since commit c793430 (Limit file descriptors used by packs, 2011-02-28),
the extra parameter added in f2e872aa (Work around EMFILE when there are
too many pack files, 2010-11-01) is not used anymore.

Remove it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
13 years agosha1_file: typofix
Junio C Hamano [Sun, 15 May 2011 19:16:03 +0000 (12:16 -0700)]
sha1_file: typofix

The number zero is spelled "zero", not "zer0".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoread_sha1_file(): allow selective bypassing of replacement mechanism
Junio C Hamano [Sun, 15 May 2011 19:54:54 +0000 (12:54 -0700)]
read_sha1_file(): allow selective bypassing of replacement mechanism

The way "object replacement" mechanism was tucked to the read_sha1_file()
interface was suboptimal in a couple of ways:

 - Callers that want it to die with useful diagnosis upon seeing a corrupt
   object does not have a way to say that they do not want any object
   replacement.

 - Callers who do not want it to die but want to handle the errors
   themselves are told to arrange to call read_object(), but the function
   does not use the replacement mechanism, and also it is a file scope
   static function that not many callers can call to begin with.

This adds a read_sha1_file_extended() that takes a set of flags; the
callers of read_sha1_file() passes a flag READ_SHA1_FILE_REPLACE to ask
for object replacement mechanism to kick in.

Later, we could add another flag bit to tell the function to return an
error instead of dying and then remove the misguided "call read_object()
yourself".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoinline lookup_replace_object() calls
Junio C Hamano [Sun, 15 May 2011 19:54:53 +0000 (12:54 -0700)]
inline lookup_replace_object() calls

In a repository without object replacement, lookup_replace_object() should
be a no-op. Check the flag "read_replace_refs" on the side of the caller,
and bypess a function call when we know we are not dealing with replacement.

Also, even when we are set up to replace objects, if we do not find any
replacement defined, flip that flag off to avoid function call overhead
for all the later object accesses.

As this change the semantics of the flag from "do we need read the
replacement definition?" to "do we need to check with the lookup table?"
the flag needs to be renamed later to something saner, e.g. "use_replace",
when the codebase is calmer, but not now.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoread_sha1_file(): get rid of read_sha1_file_repl() madness
Junio C Hamano [Sun, 15 May 2011 19:54:52 +0000 (12:54 -0700)]
read_sha1_file(): get rid of read_sha1_file_repl() madness

Most callers want to silently get a replacement object, and they do not
care what the real name of the replacement object is.  Worse yet, no sane
interface to return the underlying object without replacement is provided.

Remove the function and make only the few callers that want the name of
the replacement object find it themselves.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot6050: make sure we test not just commit replacement
Junio C Hamano [Sun, 15 May 2011 19:54:51 +0000 (12:54 -0700)]
t6050: make sure we test not just commit replacement

The replacement mechanism should affect all types of objects not
just commits, so make sure it deals with at least a blob.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoDeclare lookup_replace_object() in cache.h, not in commit.h
Junio C Hamano [Sun, 15 May 2011 19:54:50 +0000 (12:54 -0700)]
Declare lookup_replace_object() in cache.h, not in commit.h

The declaration is misplaced as the replace API is supposed to affect
not just commits, but all types of objects.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Sun, 15 May 2011 03:44:09 +0000 (20:44 -0700)]
Merge branch 'maint'

* maint:
  add, merge, diff: do not use strcasecmp to compare config variable names

13 years agoadd, merge, diff: do not use strcasecmp to compare config variable names
Jonathan Nieder [Sat, 14 May 2011 20:19:21 +0000 (15:19 -0500)]
add, merge, diff: do not use strcasecmp to compare config variable names

The config machinery already makes section and variable names
lowercase when parsing them, so using strcasecmp for comparison just
feels wasteful.  No noticeable change intended.

Noticed-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoBigfile: teach "git add" to send a large file straight to a pack
Junio C Hamano [Sun, 8 May 2011 08:47:35 +0000 (01:47 -0700)]
Bigfile: teach "git add" to send a large file straight to a pack

When adding a new content to the repository, we have always slurped
the blob in its entirety in-core first, and computed the object name
and compressed it into a loose object file.  Handling large binary
files (e.g.  video and audio asset for games) has been problematic
because of this design.

At the middle level of "git add" callchain is an internal API
index_fd() that takes an open file descriptor to read from the
working tree file being added with its size. Teach it to call out to
fast-import when adding a large blob.

The write-out codepath in entry.c::write_entry() should be taught to
stream, instead of reading everything in core. This should not be so
hard to implement, especially if we limit ourselves only to loose
object files and non-delta representation in packfiles.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoUpdate draft release notes to 1.7.6
Junio C Hamano [Fri, 13 May 2011 18:14:07 +0000 (11:14 -0700)]
Update draft release notes to 1.7.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'bf/commit-template-no-cleanup'
Junio C Hamano [Fri, 13 May 2011 18:03:08 +0000 (11:03 -0700)]
Merge branch 'bf/commit-template-no-cleanup'

* bf/commit-template-no-cleanup:
  Do not strip empty lines / trailing spaces from a commit message template

13 years agoMerge branch 'jc/t1506-shell-param-expansion-gotcha'
Junio C Hamano [Fri, 13 May 2011 18:02:47 +0000 (11:02 -0700)]
Merge branch 'jc/t1506-shell-param-expansion-gotcha'

* jc/t1506-shell-param-expansion-gotcha:
  t1507: avoid "${parameter<op>'word'}" inside double-quotes

13 years agoMerge branch 'rr/rerere-libify-clear-gc'
Junio C Hamano [Fri, 13 May 2011 18:02:40 +0000 (11:02 -0700)]
Merge branch 'rr/rerere-libify-clear-gc'

* rr/rerere-libify-clear-gc:
  rerere: libify rerere_clear() and rerere_gc()

13 years agoMerge branch 'js/maint-send-pack-stateless-rpc-deadlock-fix'
Junio C Hamano [Fri, 13 May 2011 18:02:29 +0000 (11:02 -0700)]
Merge branch 'js/maint-send-pack-stateless-rpc-deadlock-fix'

* js/maint-send-pack-stateless-rpc-deadlock-fix:
  send-pack: unbreak push over stateless rpc
  send-pack: avoid deadlock when pack-object dies early

13 years agoMerge branch 'jh/dirstat-lines'
Junio C Hamano [Fri, 13 May 2011 18:01:32 +0000 (11:01 -0700)]
Merge branch 'jh/dirstat-lines'

* jh/dirstat-lines:
  Mark dirstat error messages for translation
  Improve error handling when parsing dirstat parameters
  New --dirstat=lines mode, doing dirstat analysis based on diffstat
  Allow specifying --dirstat cut-off percentage as a floating point number
  Add config variable for specifying default --dirstat behavior
  Refactor --dirstat parsing; deprecate --cumulative and --dirstat-by-file
  Make --dirstat=0 output directories that contribute < 0.1% of changes
  Add several testcases for --dirstat and friends

13 years agoMerge branch 'jc/fix-add-u-unmerged'
Junio C Hamano [Fri, 13 May 2011 18:01:15 +0000 (11:01 -0700)]
Merge branch 'jc/fix-add-u-unmerged'

* jc/fix-add-u-unmerged:
  Fix "add -u" that sometimes fails to resolve unmerged paths

13 years agoMerge branch 'jn/setup-revisions-glob-and-friends-passthru'
Junio C Hamano [Fri, 13 May 2011 18:00:25 +0000 (11:00 -0700)]
Merge branch 'jn/setup-revisions-glob-and-friends-passthru'

* jn/setup-revisions-glob-and-friends-passthru:
  revisions: allow --glob and friends in parse_options-enabled commands
  revisions: split out handle_revision_pseudo_opt function

13 years agoMerge branch 'cn/log-parse-opt'
Junio C Hamano [Fri, 13 May 2011 17:59:57 +0000 (10:59 -0700)]
Merge branch 'cn/log-parse-opt'

* cn/log-parse-opt:
  log: convert to parse-options

13 years agoMerge branch 'maint'
Junio C Hamano [Fri, 13 May 2011 17:58:10 +0000 (10:58 -0700)]
Merge branch 'maint'

* maint:
  Prepare for 1.7.5.2
  t5400: Fix a couple of typos

Conflicts:
RelNotes

13 years agoPrepare for 1.7.5.2
Junio C Hamano [Fri, 13 May 2011 17:57:09 +0000 (10:57 -0700)]
Prepare for 1.7.5.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'aw/maint-rebase-i-p-no-ff' into maint
Junio C Hamano [Fri, 13 May 2011 17:45:21 +0000 (10:45 -0700)]
Merge branch 'aw/maint-rebase-i-p-no-ff' into maint

* aw/maint-rebase-i-p-no-ff:
  git-rebase--interactive.sh: preserve-merges fails on merges created with no-ff

13 years agoMerge branch 'js/blame-parsename' into maint
Junio C Hamano [Fri, 13 May 2011 17:45:00 +0000 (10:45 -0700)]
Merge branch 'js/blame-parsename' into maint

* js/blame-parsename:
  t/annotate-tests: Use echo & cat instead of sed
  blame: tolerate bogus e-mail addresses a bit better

13 years agoMerge branch 'gr/cvsimport-alternative-cvspass-location' into maint
Junio C Hamano [Fri, 13 May 2011 17:44:54 +0000 (10:44 -0700)]
Merge branch 'gr/cvsimport-alternative-cvspass-location' into maint

* gr/cvsimport-alternative-cvspass-location:
  Look for password in both CVS and CVSNT password files.

13 years agoMerge branch 'cj/p4merge' into maint
Junio C Hamano [Fri, 13 May 2011 17:44:46 +0000 (10:44 -0700)]
Merge branch 'cj/p4merge' into maint

* cj/p4merge:
  Pass empty file to p4merge where no base is suitable.

13 years agoMerge branch 'jk/merge-one-file-working-tree' into maint
Junio C Hamano [Fri, 13 May 2011 17:44:19 +0000 (10:44 -0700)]
Merge branch 'jk/merge-one-file-working-tree' into maint

* jk/merge-one-file-working-tree:
  merge-one-file: fix broken merges with alternate work trees
  add tests for merge-index / merge-one-file

13 years agoMerge branch 'jc/fix-diff-files-unmerged' into maint
Junio C Hamano [Fri, 13 May 2011 17:41:54 +0000 (10:41 -0700)]
Merge branch 'jc/fix-diff-files-unmerged' into maint

* jc/fix-diff-files-unmerged:
  diff-files: show unmerged entries correctly
  diff: remove often unused parameters from diff_unmerge()
  diff.c: return filepair from diff_unmerge()
  test: use $_z40 from test-lib

13 years agoMerge branch 'mz/maint-rename-unmerged' into maint
Junio C Hamano [Fri, 13 May 2011 17:41:24 +0000 (10:41 -0700)]
Merge branch 'mz/maint-rename-unmerged' into maint

* mz/maint-rename-unmerged:
  diffcore-rename: don't consider unmerged path as source

13 years agot5400: Fix a couple of typos
Johan Herland [Fri, 13 May 2011 16:43:29 +0000 (18:43 +0200)]
t5400: Fix a couple of typos

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'nd/struct-pathspec'
Junio C Hamano [Fri, 13 May 2011 05:36:41 +0000 (22:36 -0700)]
Merge branch 'nd/struct-pathspec'

* nd/struct-pathspec:
  Tweak t3102-ls-tree-wildcards to run on Windows

13 years agoTweak t3102-ls-tree-wildcards to run on Windows
Johannes Sixt [Thu, 12 May 2011 08:37:22 +0000 (10:37 +0200)]
Tweak t3102-ls-tree-wildcards to run on Windows

The test case fails on Windows, because "a*" is an invalid file name.
Therefore, use "a[a]" instead.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Acked-by: Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoUpdate draft release notes to 1.7.6
Junio C Hamano [Wed, 11 May 2011 18:56:11 +0000 (11:56 -0700)]
Update draft release notes to 1.7.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jn/gitweb-dependency'
Junio C Hamano [Wed, 11 May 2011 18:38:39 +0000 (11:38 -0700)]
Merge branch 'jn/gitweb-dependency'

* jn/gitweb-dependency:
  Remove gitweb/gitweb.cgi and other legacy targets from main Makefile
  git-instaweb: Simplify build dependency on gitweb

13 years agoMerge branch 'jc/maint-branch-mergeoptions'
Junio C Hamano [Wed, 11 May 2011 18:38:36 +0000 (11:38 -0700)]
Merge branch 'jc/maint-branch-mergeoptions'

* jc/maint-branch-mergeoptions:
  merge: make branch.<name>.mergeoptions correctly override merge.<option>

Conflicts:
builtin/merge.c

13 years agoMerge branch 'jn/maint-test-merge-verify-parents'
Junio C Hamano [Wed, 11 May 2011 18:38:10 +0000 (11:38 -0700)]
Merge branch 'jn/maint-test-merge-verify-parents'

* jn/maint-test-merge-verify-parents:
  tests: teach verify_parents to check for extra parents
  tests: eliminate unnecessary setup test assertions

13 years agoMerge branch 'vh/config-interactive-singlekey-doc'
Junio C Hamano [Wed, 11 May 2011 18:38:06 +0000 (11:38 -0700)]
Merge branch 'vh/config-interactive-singlekey-doc'

* vh/config-interactive-singlekey-doc:
  git-reset.txt: better docs for '--patch'
  git-checkout.txt: better docs for '--patch'
  git-stash.txt: better docs for '--patch'
  git-add.txt: document 'interactive.singlekey'
  config.txt: 'interactive.singlekey; is used by...

13 years agoMerge branch 'jc/maint-add-p-overlapping-hunks'
Junio C Hamano [Wed, 11 May 2011 18:37:46 +0000 (11:37 -0700)]
Merge branch 'jc/maint-add-p-overlapping-hunks'

* jc/maint-add-p-overlapping-hunks:
  t3701: add-p-fix makes the last test to pass
  "add -p": work-around an old laziness that does not coalesce hunks
  add--interactive.perl: factor out repeated --recount option
  t3701: Editing a split hunk in an "add -p" session
  add -p: 'q' should really quit

13 years agoMerge branch 'sr/maint-fast-import-tighten-option-parsing'
Junio C Hamano [Wed, 11 May 2011 18:37:41 +0000 (11:37 -0700)]
Merge branch 'sr/maint-fast-import-tighten-option-parsing'

* sr/maint-fast-import-tighten-option-parsing:
  fast-import: fix option parser for no-arg options

13 years agoMerge branch 'dm/http-cleanup'
Junio C Hamano [Wed, 11 May 2011 18:37:38 +0000 (11:37 -0700)]
Merge branch 'dm/http-cleanup'

* dm/http-cleanup:
  t5541-http-push: add test for chunked
  http-push: refactor curl_easy_setup madness
  http-push: use const for strings in signatures
  http: make curl callbacks match contracts from curl header

13 years agoMerge branch 'jn/ctags'
Junio C Hamano [Wed, 11 May 2011 18:37:32 +0000 (11:37 -0700)]
Merge branch 'jn/ctags'

* jn/ctags:
  gitweb: Mark matched 'ctag' / contents tag (?by_tag=foo)
  gitweb: Change the way "content tags" ('ctags') are handled
  gitweb: Restructure projects list generation

13 years agoDo not strip empty lines / trailing spaces from a commit message template
Boris Faure [Sun, 8 May 2011 10:31:02 +0000 (12:31 +0200)]
Do not strip empty lines / trailing spaces from a commit message template

Templates should be just that: A form that the user fills out, and forms
have blanks. If people are attached to not having extra whitespace in the
editor, they can simply clean up their templates.

Added test with editor adding even more whitespace.

Signed-off-by: Boris Faure <billiob@gmail.com>
Based-on-patch-by:Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoconvert: make it harder to screw up adding a conversion attribute
Junio C Hamano [Mon, 9 May 2011 20:58:31 +0000 (13:58 -0700)]
convert: make it harder to screw up adding a conversion attribute

The current internal API requires the callers of setup_convert_check() to
supply the git_attr_check structures (hence they need to know how many to
allocate), but they grab the same set of attributes for given path.

Define a new convert_attrs() API that fills a higher level information that
the callers (convert_to_git and convert_to_working_tree) really want, and
move the common code to interact with the attributes system to it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoconvert: make it safer to add conversion attributes
Junio C Hamano [Mon, 9 May 2011 18:23:04 +0000 (11:23 -0700)]
convert: make it safer to add conversion attributes

The places that need to pass an array of "struct git_attr_check" needed to
be careful to pass a large enough array and know what index each element
lied.  Make it safer and easier to code these.

Besides, the hard-coded sequence of initializing various attributes was
too ugly after we gained more than a few attributes.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoconvert: give saner names to crlf/eol variables, types and functions
Junio C Hamano [Mon, 9 May 2011 20:12:57 +0000 (13:12 -0700)]
convert: give saner names to crlf/eol variables, types and functions

Back when the conversion was only about the end-of-line convention, it
might have made sense to call what we do upon seeing CR/LF simply an
"action", but these days the conversion routines do a lot more than just
tweaking the line ending.  Raname "action" to "crlf_action".

The function that decides what end of line conversion to use on the output
codepath was called "determine_output_conversion", as if there is no other
kind of output conversion.  Rename it to "output_eol"; it is a function
that returns what EOL convention is to be used.

A function that decides what "crlf_action" needs to be used on the input
codepath, given what conversion attribute is set to the path and global
end-of-line convention, was called "determine_action".  Rename it to
"input_crlf_action".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoconvert: rename the "eol" global variable to "core_eol"
Junio C Hamano [Mon, 9 May 2011 19:52:12 +0000 (12:52 -0700)]
convert: rename the "eol" global variable to "core_eol"

Yes, it is clear that "eol" wants to mean some sort of end-of-line thing,
but as the name of a global variable, it is way too short to describe what
kind of end-of-line thing it wants to represent. Besides, there are many
codepaths that want to use their own local "char *eol" variable to point
at the end of the current line they are processing.

This global variable holds what we read from core.eol configuration
variable. Name it as such.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoindex_fd(): split into two helper functions
Junio C Hamano [Sun, 8 May 2011 08:47:34 +0000 (01:47 -0700)]
index_fd(): split into two helper functions

Split out the case where we do not know the size of the input (hence we
read everything into a strbuf before doing anything) to index_pipe(), and
the other case where we mmap or read the whole data to index_bulk().

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoindex_fd(): turn write_object and format_check arguments into one flag
Junio C Hamano [Sun, 8 May 2011 08:47:33 +0000 (01:47 -0700)]
index_fd(): turn write_object and format_check arguments into one flag

The "format_check" parameter tucked after the existing parameters is too
ugly an afterthought to live in any reasonable API.

Combine it with the other boolean parameter "write_object" into a single
"flags" parameter.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot1507: avoid "${parameter<op>'word'}" inside double-quotes
Junio C Hamano [Mon, 9 May 2011 04:43:20 +0000 (21:43 -0700)]
t1507: avoid "${parameter<op>'word'}" inside double-quotes

Kacper Kornet noticed that a $variable in "word" in the above construct is
not substituted by his pdksh.  Modern POSIX compliant shells (e.g. dash,
ksh, bash) all seem to interpret POSIX "2.6.2 Parameter Expansion" that
says "word shall be subjected to tilde expansion, parameter expansion,
command substitution, and arithmetic expansion" in ${parameter<op>word},
to mean that the word is expanded as if it appeared in dq pairs, so if the
word were "'$variable'" (sans dq) it would expand to a single quote, the
value of the $variable and then a single quote.

Johannes Sixt reports that the behavior of quoting at the right of :- when
the ${...:-...} expansion appears in double-quotes was debated recently at
length at the Austin group.  We can avoid this issue and future-proof the
test by a slight rewrite.

Helped-by: Johannes Sixt <j.sixt@viscovery.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot3701: add-p-fix makes the last test to pass
Junio C Hamano [Sun, 8 May 2011 20:43:04 +0000 (13:43 -0700)]
t3701: add-p-fix makes the last test to pass

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorerere: libify rerere_clear() and rerere_gc()
Junio C Hamano [Sun, 8 May 2011 19:55:34 +0000 (12:55 -0700)]
rerere: libify rerere_clear() and rerere_gc()

This moves the two features from builtin/rerere.c to a more library-ish
portion of the codebase.  No behaviour change.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoRemove gitweb/gitweb.cgi and other legacy targets from main Makefile
Jakub Narebski [Sat, 7 May 2011 12:45:21 +0000 (14:45 +0200)]
Remove gitweb/gitweb.cgi and other legacy targets from main Makefile

Now that there is gitweb/Makefile, let's leave only "gitweb" and
"install-gitweb" targets in main Makefile.  Those targets just
delegate to gitweb's Makefile.

Requested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogit-instaweb: Simplify build dependency on gitweb
Jakub Narebski [Sat, 7 May 2011 12:45:20 +0000 (14:45 +0200)]
git-instaweb: Simplify build dependency on gitweb

Since c0cb4ed (git-instaweb: Configure it to work with new gitweb
structure, 2010-05-28) git-instaweb does not re-create gitweb.cgi
etc., but makes use of installed gitweb.  Therefore simplify
git-instaweb dependency on gitweb subsystem in main Makefile from
'gitweb/gitweb.cgi gitweb/static/gitweb.css gitweb/static/gitweb.js'
to simply 'gitweb'.

This is preparation for splitting gitweb.perl script, and for
splitting gitweb.js (to be reassembled / combined on build).  This way
we don't have to duplicate parts of gitweb/Makefile in main
Makefile... it is also more correct description of git-instaweb
dependency.

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agotests: teach verify_parents to check for extra parents
Jonathan Nieder [Fri, 6 May 2011 21:00:21 +0000 (16:00 -0500)]
tests: teach verify_parents to check for extra parents

Currently verify_parents only makes sure that the earlier parents of
HEAD match the commits given, and does not care if there are more
parents.  This makes it harder than one would like to check that, for
example, parent reduction works correctly when making an octopus.

Fix it by checking that HEAD^(n+1) is not a valid commit name.
Noticed while working on a new test that was supposed to create a
fast-forward one commit ahead but actually created a merge.

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agomerge: make branch.<name>.mergeoptions correctly override merge.<option>
Junio C Hamano [Thu, 5 May 2011 00:42:51 +0000 (17:42 -0700)]
merge: make branch.<name>.mergeoptions correctly override merge.<option>

The parsing of the additional command line parameters supplied to
the branch.<name>.mergeoptions configuration variable was implemented
at the wrong stage.  If any merge-related variable came after we read
branch.<name>.mergeoptions, the earlier value was overwritten.

We should first read all the merge.* configuration, override them by
reading from branch.<name>.mergeoptions and then finally read from
the command line.

This patch should fix it, even though I now strongly suspect that
branch.<name>.mergeoptions that gives a single command line that
needs to be parsed was likely to be an ill-conceived idea to begin
with.  Sigh...

Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agotests: eliminate unnecessary setup test assertions
Jonathan Nieder [Fri, 6 May 2011 20:58:52 +0000 (15:58 -0500)]
tests: eliminate unnecessary setup test assertions

Most of git's tests write files and define shell functions and
variables that will last throughout a test script at the top of
the script, before all test assertions:

. ./test-lib.sh

VAR='some value'
export VAR

>empty

fn () {
do something
}

test_expect_success 'setup' '
... nontrivial commands go here ...
'

Two scripts use a different style with this kind of trivial code
enclosed by a test assertion; fix them.  The usual style is easier to
read since there is less indentation to keep track of and no need to
worry about nested quotes; and on the other hand, because the commands
in question are trivial, it should not make the test suite any worse
at catching future bugs in git.

While at it, make some other small tweaks:

 - spell function definitions with a space before () for consistency
   with other scripts;

 - use the self-contained command "git mktree </dev/null" in
   preference to "git write-tree" which looks at the index when
   writing an empty tree.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoUpdate draft release notes to 1.7.6
Junio C Hamano [Fri, 6 May 2011 18:13:08 +0000 (11:13 -0700)]
Update draft release notes to 1.7.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jn/run-command-error-failure'
Junio C Hamano [Fri, 6 May 2011 18:01:04 +0000 (11:01 -0700)]
Merge branch 'jn/run-command-error-failure'

* jn/run-command-error-failure:
  run-command: handle short writes and EINTR in die_child
  tests: check error message from run_command

13 years agoMerge branch 'js/info-man-path'
Junio C Hamano [Fri, 6 May 2011 18:00:46 +0000 (11:00 -0700)]
Merge branch 'js/info-man-path'

* js/info-man-path:
  Documentation: clarify meaning of --html-path, --man-path, and --info-path
  git: add --info-path and --man-path options

Conflicts:
Makefile

13 years agoMerge branch 'im/hashcmp-optim'
Junio C Hamano [Fri, 6 May 2011 18:00:36 +0000 (11:00 -0700)]
Merge branch 'im/hashcmp-optim'

* im/hashcmp-optim:
  hashcmp(): inline memcmp() by hand to optimize

13 years agoMerge branch 'jk/merge-one-file-working-tree'
Junio C Hamano [Fri, 6 May 2011 17:54:08 +0000 (10:54 -0700)]
Merge branch 'jk/merge-one-file-working-tree'

* jk/merge-one-file-working-tree:
  merge-one-file: fix broken merges with alternate work trees
  add tests for merge-index / merge-one-file

13 years agoMerge branch 'jc/fix-diff-files-unmerged'
Junio C Hamano [Fri, 6 May 2011 17:52:58 +0000 (10:52 -0700)]
Merge branch 'jc/fix-diff-files-unmerged'

* jc/fix-diff-files-unmerged:
  diff-files: show unmerged entries correctly
  diff: remove often unused parameters from diff_unmerge()
  diff.c: return filepair from diff_unmerge()
  test: use $_z40 from test-lib

13 years agoMerge branch 'cj/p4merge'
Junio C Hamano [Fri, 6 May 2011 17:52:16 +0000 (10:52 -0700)]
Merge branch 'cj/p4merge'

* cj/p4merge:
  Pass empty file to p4merge where no base is suitable.

13 years agoMerge branch 'gr/cvsimport-alternative-cvspass-location'
Junio C Hamano [Fri, 6 May 2011 17:52:12 +0000 (10:52 -0700)]
Merge branch 'gr/cvsimport-alternative-cvspass-location'

* gr/cvsimport-alternative-cvspass-location:
  Look for password in both CVS and CVSNT password files.

13 years agoMerge branch 'sg/completion-cleanup'
Junio C Hamano [Fri, 6 May 2011 17:52:03 +0000 (10:52 -0700)]
Merge branch 'sg/completion-cleanup'

* sg/completion-cleanup:
  completion: remove unnecessary _get_comp_words_by_ref() invocations
  completion: don't modify the $cur variable in completion functions

13 years agoMerge branch 'js/blame-parsename'
Junio C Hamano [Fri, 6 May 2011 17:50:32 +0000 (10:50 -0700)]
Merge branch 'js/blame-parsename'

* js/blame-parsename:
  t/annotate-tests: Use echo & cat instead of sed
  blame: tolerate bogus e-mail addresses a bit better

13 years agoMerge branch 'jk/format-patch-quote-special-in-from'
Junio C Hamano [Fri, 6 May 2011 17:50:18 +0000 (10:50 -0700)]
Merge branch 'jk/format-patch-quote-special-in-from'

* jk/format-patch-quote-special-in-from:
  pretty: quote rfc822 specials in email addresses

Conflicts:
pretty.c
t/t4014-format-patch.sh

13 years agoMerge branch 'nd/struct-pathspec'
Junio C Hamano [Fri, 6 May 2011 17:50:06 +0000 (10:50 -0700)]
Merge branch 'nd/struct-pathspec'

* nd/struct-pathspec:
  pathspec: rename per-item field has_wildcard to use_wildcard
  Improve tree_entry_interesting() handling code
  Convert read_tree{,_recursive} to support struct pathspec
  Reimplement read_tree_recursive() using tree_entry_interesting()

13 years agoMerge branch 'aw/maint-rebase-i-p-no-ff'
Junio C Hamano [Fri, 6 May 2011 17:50:00 +0000 (10:50 -0700)]
Merge branch 'aw/maint-rebase-i-p-no-ff'

* aw/maint-rebase-i-p-no-ff:
  git-rebase--interactive.sh: preserve-merges fails on merges created with no-ff

Conflicts:
git-rebase--interactive.sh

13 years agoMerge branch 'mg/alias-expose-prefix'
Junio C Hamano [Fri, 6 May 2011 17:49:57 +0000 (10:49 -0700)]
Merge branch 'mg/alias-expose-prefix'

* mg/alias-expose-prefix:
  handle_alias: provide GIT_PREFIX to !alias
  t1020: test !alias in subdirectory

13 years agoMerge branch 'mg/diff-uiconfig-doc'
Junio C Hamano [Fri, 6 May 2011 17:49:53 +0000 (10:49 -0700)]
Merge branch 'mg/diff-uiconfig-doc'

* mg/diff-uiconfig-doc:
  config.txt,diff-options.txt: porcelain vs. plumbing for color.diff

13 years agoMerge branch 'maint'
Junio C Hamano [Fri, 6 May 2011 17:44:23 +0000 (10:44 -0700)]
Merge branch 'maint'

* maint:
  Remove duplicated "is a"

13 years agoRemove duplicated "is a"
João Britto [Fri, 6 May 2011 04:16:17 +0000 (01:16 -0300)]
Remove duplicated "is a"

Signed-off-by: João Britto <jabcalves@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agofast-import: fix option parser for no-arg options
Sverre Rabbelier [Thu, 5 May 2011 18:56:00 +0000 (20:56 +0200)]
fast-import: fix option parser for no-arg options

While refactoring the options parser in bc3c79a (fast-import: add
(non-)relative-marks feature, 2009-12-04), it was made too lenient
for options that take no argument, fix that.

Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Thu, 5 May 2011 21:43:45 +0000 (14:43 -0700)]
Merge branch 'maint'

* maint:
  t3701: fix here document
  git-fast-import.txt: --relative-marks takes no parameter
  shell: add missing initialization of argv0_path

13 years agoMerge branch 'js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix' into js/maint...
Junio C Hamano [Thu, 5 May 2011 20:46:36 +0000 (13:46 -0700)]
Merge branch 'js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix' into js/maint-send-pack-stateless-rpc-deadlock-fix

* js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix:
  send-pack: unbreak push over stateless rpc

13 years agosend-pack: unbreak push over stateless rpc
Jeff King [Thu, 5 May 2011 06:18:45 +0000 (02:18 -0400)]
send-pack: unbreak push over stateless rpc

Commit 09c9957 (send-pack: avoid deadlock when pack-object
dies early, 2011-04-25) attempted to fix a hang in the
stateless rpc case by closing a file descriptor early, but
we still need that descriptor.

Basically the deadlock can happen when pack-objects fails,
and the descriptor to upstream is left open. We never send
the pack, so the upstream is left waiting for us to say
something, and we are left waiting for upstream to close the
connection.

In the non-rpc case, our descriptor points straight to the
upstream. We hand it off to run-command, which takes
ownership and closes the descriptor after pack-objects
finishes (whether it succeeds or not).

Commit 09c9957 tried to emulate that in the rpc case. That
isn't right, though. We actually have a descriptor going
back to the remote-helper, and we need to keep using it
after pack-objects is finished. Closing it early completely
breaks pushing via smart-http.

We still need to do something on error to signal the
remote-helper that we won't be sending any pack data
(otherwise we get the deadlock).  In an ideal world, we
would send a special packet back that says "Sorry, there was
an error". But the remote-helper doesn't understand any such
packet, so the best we can do is close the descriptor and
let it report that we hung up unexpectedly.

Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogit-reset.txt: better docs for '--patch'
Valentin Haenel [Thu, 5 May 2011 19:58:18 +0000 (21:58 +0200)]
git-reset.txt: better docs for '--patch'

Describe '-p' as a short form of '--patch' in synopsis. Also include a better
explanation of this option and additionally refer the reader to the patch mode
description of git-add documentation.

Helped-by: Jeff King <peff@peff.net>
Mentored-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Valentin Haenel <valentin.haenel@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogit-checkout.txt: better docs for '--patch'
Valentin Haenel [Thu, 5 May 2011 18:48:48 +0000 (20:48 +0200)]
git-checkout.txt: better docs for '--patch'

Describe '-p' as a short form of '--patch' in synopsis and options.  Also
refer the reader to the patch mode description of git-add documentation.

Helped-by: Jeff King <peff@peff.net>
Mentored-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Valentin Haenel <valentin.haenel@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogit-stash.txt: better docs for '--patch'
Valentin Haenel [Thu, 5 May 2011 18:48:47 +0000 (20:48 +0200)]
git-stash.txt: better docs for '--patch'

Describe '-p' as a short form of '--patch' in synopsis and options.  Also
refer the reader to the patch mode description of git-add documentation.

Helped-by: Jeff King <peff@peff.net>
Mentored-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Valentin Haenel <valentin.haenel@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogit-add.txt: document 'interactive.singlekey'
Valentin Haenel [Thu, 5 May 2011 18:48:45 +0000 (20:48 +0200)]
git-add.txt: document 'interactive.singlekey'

This is documented in the section about the 'Interactive Mode', rather than for
the option '--patch', since this is the section is where people go to learn
about '--patch'.

Helped-by: Jeff King <peff@peff.net>
Mentored-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Valentin Haenel <valentin.haenel@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoconfig.txt: 'interactive.singlekey; is used by...
Valentin Haenel [Mon, 2 May 2011 13:44:28 +0000 (15:44 +0200)]
config.txt: 'interactive.singlekey; is used by...

The config variable 'interactive.singlekey' influences also '--patch' mode of
git-add, git-reset, and git-checkout.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Valentin Haenel <valentin.haenel@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot3701: fix here document
Junio C Hamano [Thu, 5 May 2011 18:28:52 +0000 (11:28 -0700)]
t3701: fix here document

A broken here-document was not caught because end of file is taken by
an implicit end of the here document (POSIX does not seem to say it is
an error to lack the delimiter), and everything in the test just turned
into a single "cat into a file".

Noticed-by: Kacper Kornet <draenog@pld-linux.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>