Code

git.git
13 years agot2107: mark passing test as success
Jeff King [Sun, 19 Dec 2010 03:53:58 +0000 (22:53 -0500)]
t2107: mark passing test as success

This failed on the branch where it was introduced, but was fixed
by merging with 6e67619 (Merge branch 'jn/parse-options-extra').

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jn/parse-options-extra'
Junio C Hamano [Mon, 13 Dec 2010 05:49:53 +0000 (21:49 -0800)]
Merge branch 'jn/parse-options-extra'

* jn/parse-options-extra:
  update-index: migrate to parse-options API
  setup: save prefix (original cwd relative to toplevel) in startup_info
  parse-options: make resuming easier after PARSE_OPT_STOP_AT_NON_OPTION
  parse-options: allow git commands to invent new option types
  parse-options: never suppress arghelp if LITERAL_ARGHELP is set
  parse-options: do not infer PARSE_OPT_NOARG from option type
  parse-options: sanity check PARSE_OPT_NOARG flag
  parse-options: move NODASH sanity checks to parse_options_check
  parse-options: clearer reporting of API misuse
  parse-options: Don't call parse_options_check() so much

13 years agoMerge branch 'js/configurable-tab'
Junio C Hamano [Mon, 13 Dec 2010 05:49:52 +0000 (21:49 -0800)]
Merge branch 'js/configurable-tab'

* js/configurable-tab:
  Make the tab width used for whitespace checks configurable
  apply --whitespace=fix: fix tab-in-indent

13 years agoMerge branch 'nd/maint-hide-checkout-index-from-error'
Junio C Hamano [Mon, 13 Dec 2010 05:49:52 +0000 (21:49 -0800)]
Merge branch 'nd/maint-hide-checkout-index-from-error'

* nd/maint-hide-checkout-index-from-error:
  entry.c: remove "checkout-index" from error messages

13 years agoMerge branch 'jn/gitweb-per-request-config'
Junio C Hamano [Mon, 13 Dec 2010 05:49:52 +0000 (21:49 -0800)]
Merge branch 'jn/gitweb-per-request-config'

* jn/gitweb-per-request-config:
  gitweb: document $per_request_config better
  gitweb: selectable configurations that change with each request

13 years agoMerge branch 'ef/help-cmd-prefix'
Junio C Hamano [Mon, 13 Dec 2010 05:49:52 +0000 (21:49 -0800)]
Merge branch 'ef/help-cmd-prefix'

* ef/help-cmd-prefix:
  help: always suggest common-cmds if prefix of cmd

13 years agoMerge branch 'tc/http-urls-ends-with-slash'
Junio C Hamano [Mon, 13 Dec 2010 05:49:52 +0000 (21:49 -0800)]
Merge branch 'tc/http-urls-ends-with-slash'

* tc/http-urls-ends-with-slash:
  http-fetch: rework url handling
  http-push: add trailing slash at arg-parse time, instead of later on
  http-push: check path length before using it
  http-push: Normalise directory names when pushing to some WebDAV servers
  http-backend: use end_url_with_slash()
  url: add str wrapper for end_url_with_slash()
  shift end_url_with_slash() from http.[ch] to url.[ch]
  t5550-http-fetch: add test for http-fetch
  t5550-http-fetch: add missing '&&'

13 years agoMerge branch 'tc/format-patch-p'
Junio C Hamano [Mon, 13 Dec 2010 05:49:52 +0000 (21:49 -0800)]
Merge branch 'tc/format-patch-p'

* tc/format-patch-p:
  format-patch: page output with --stdout

13 years agoMerge branch 'ef/win32-dirent'
Junio C Hamano [Mon, 13 Dec 2010 05:49:52 +0000 (21:49 -0800)]
Merge branch 'ef/win32-dirent'

* ef/win32-dirent:
  win32: use our own dirent.h
  msvc: opendir: handle paths ending with a slash
  win32: dirent: handle errors
  msvc: opendir: do not start the search
  msvc: opendir: allocate enough memory
  msvc: opendir: fix malloc-failure

Conflicts:
Makefile

13 years agoMerge branch 'mz/rebase-i-verify'
Junio C Hamano [Mon, 13 Dec 2010 05:49:51 +0000 (21:49 -0800)]
Merge branch 'mz/rebase-i-verify'

* mz/rebase-i-verify:
  rebase: support --verify

13 years agoMerge branch 'mz/rebase-abort-reflog-fix'
Junio C Hamano [Mon, 13 Dec 2010 05:49:51 +0000 (21:49 -0800)]
Merge branch 'mz/rebase-abort-reflog-fix'

* mz/rebase-abort-reflog-fix:
  rebase --abort: do not update branch ref

13 years agoMerge branch 'jk/maint-reflog-bottom'
Junio C Hamano [Mon, 13 Dec 2010 05:49:51 +0000 (21:49 -0800)]
Merge branch 'jk/maint-reflog-bottom'

* jk/maint-reflog-bottom:
  reflogs: clear flags properly in corner case

13 years agoMerge branch 'jk/asciidoc-update'
Junio C Hamano [Mon, 13 Dec 2010 05:49:51 +0000 (21:49 -0800)]
Merge branch 'jk/asciidoc-update'

* jk/asciidoc-update:
  docs: default to more modern toolset

13 years agoMerge branch 'mz/pull-rebase-rebased'
Junio C Hamano [Mon, 13 Dec 2010 05:49:51 +0000 (21:49 -0800)]
Merge branch 'mz/pull-rebase-rebased'

* mz/pull-rebase-rebased:
  Use reflog in 'pull --rebase . foo'

13 years agoMerge branch 'mz/maint-rebase-stat-config'
Junio C Hamano [Mon, 13 Dec 2010 05:49:50 +0000 (21:49 -0800)]
Merge branch 'mz/maint-rebase-stat-config'

* mz/maint-rebase-stat-config:
  rebase: only show stat if configured to true

13 years agoMerge branch 'jn/git-cmd-h-bypass-setup'
Junio C Hamano [Mon, 13 Dec 2010 05:49:50 +0000 (21:49 -0800)]
Merge branch 'jn/git-cmd-h-bypass-setup'

* jn/git-cmd-h-bypass-setup:
  update-index -h: show usage even with corrupt index
  merge -h: show usage even with corrupt index
  ls-files -h: show usage even with corrupt index
  gc -h: show usage even with broken configuration
  commit/status -h: show usage even with broken configuration
  checkout-index -h: show usage even in an invalid repository
  branch -h: show usage even in an invalid repository

Conflicts:
builtin/merge.c

13 years agoRelnotes: remove items fixed on 'maint'
Junio C Hamano [Sat, 11 Dec 2010 00:40:00 +0000 (16:40 -0800)]
Relnotes: remove items fixed on 'maint'

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Sat, 11 Dec 2010 00:36:19 +0000 (16:36 -0800)]
Merge branch 'maint'

13 years agoPrepare for 1.7.3.4
Junio C Hamano [Sat, 11 Dec 2010 00:35:00 +0000 (16:35 -0800)]
Prepare for 1.7.3.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jk/maint-decorate-01-bool' into maint
Junio C Hamano [Sat, 11 Dec 2010 00:13:14 +0000 (16:13 -0800)]
Merge branch 'jk/maint-decorate-01-bool' into maint

* jk/maint-decorate-01-bool:
  log.decorate: accept 0/1 bool values

13 years agoMerge branch 'mg/maint-tag-rfc1991' into maint
Junio C Hamano [Sat, 11 Dec 2010 00:13:03 +0000 (16:13 -0800)]
Merge branch 'mg/maint-tag-rfc1991' into maint

* mg/maint-tag-rfc1991:
  tag: recognize rfc1991 signatures
  tag: factor out sig detection for tag display
  tag: factor out sig detection for body edits
  verify-tag: factor out signature detection
  t/t7004-tag: test handling of rfc1991 signatures

13 years agoMerge branch 'ks/maint-getenv-fix' into maint
Junio C Hamano [Sat, 11 Dec 2010 00:12:51 +0000 (16:12 -0800)]
Merge branch 'ks/maint-getenv-fix' into maint

* ks/maint-getenv-fix:
  setup: make sure git_dir path is in a permanent buffer, getenv(3) case

13 years agothread-utils.h: simplify the inclusion
Junio C Hamano [Fri, 10 Dec 2010 18:32:12 +0000 (10:32 -0800)]
thread-utils.h: simplify the inclusion

All files that include this header file use the same four line
incantation:

    #ifndef NO_PTHREADS
    #include <pthread.h>
    #include "thread-utils.h"
    #endif

Move the responsibility for that gymnastics to the header file from the
files that include it.  This approach makes it easier to later declare new
services that are related to threading in thread-utils.h and have them
available to all the threading code.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMakefile: transport-helper uses thread-utils.h
Jonathan Nieder [Fri, 10 Dec 2010 19:48:25 +0000 (13:48 -0600)]
Makefile: transport-helper uses thread-utils.h

transport-helper.o gained a dependency on thread-utils.h in
7851b1e (remote-fd/ext: finishing touches after code review,
2010-11-17).

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoAdd --force to git-send-email documentation
Alejandro R. Sedeño [Fri, 10 Dec 2010 18:44:15 +0000 (13:44 -0500)]
Add --force to git-send-email documentation

Signed-off-by: Alejandro R. Sedeño <asedeno@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge git://git.bogomips.org/git-svn
Junio C Hamano [Fri, 10 Dec 2010 00:03:41 +0000 (16:03 -0800)]
Merge git://git.bogomips.org/git-svn

* git://git.bogomips.org/git-svn:
  t9143: do not fail when unhandled.log.gz is not created
  git-svn: allow the mergeinfo property to be set

13 years agoDocumentation/git.txt: update list of maintenance releases
Junio C Hamano [Thu, 9 Dec 2010 23:52:12 +0000 (15:52 -0800)]
Documentation/git.txt: update list of maintenance releases

Recently we have made 1.7.3.3, 1.7.2.4, 1.7.1.3 and 1.7.0.8.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot9143: do not fail when unhandled.log.gz is not created
Torsten Bögershausen [Thu, 9 Dec 2010 19:53:19 +0000 (20:53 +0100)]
t9143: do not fail when unhandled.log.gz is not created

Do not depend on internal implementation details of svn,
which right now uses perl to create a .gz file.
So this test case will even work in the future,
when svn changes its implementation.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Acked-by: Eric Wong <normalperson@yhbt.net>
13 years agogit-svn: allow the mergeinfo property to be set
Steven Walter [Sat, 25 Sep 2010 03:51:50 +0000 (23:51 -0400)]
git-svn: allow the mergeinfo property to be set

As a first step towards preserving merges across dcommit, we need a
mechanism to update the svn:mergeinfo property.

[ew: fixed bashism and style issues in test case]

Signed-off-by: Steven Walter <stevenrwalter@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
13 years agoMerge branch 'maint'
Junio C Hamano [Thu, 9 Dec 2010 18:45:53 +0000 (10:45 -0800)]
Merge branch 'maint'

* maint:
  contrib/hooks/post-receive-email: fix return values from prep_for_email

13 years agoMerge branch 'jn/ignore-doc' into maint
Junio C Hamano [Thu, 9 Dec 2010 18:38:16 +0000 (10:38 -0800)]
Merge branch 'jn/ignore-doc' into maint

* jn/ignore-doc:
  Documentation: point to related commands from gitignore
  Documentation: split gitignore page into sections

13 years agoMerge branch 'jn/cherry-pick-refresh-index' into maint
Junio C Hamano [Thu, 9 Dec 2010 18:36:51 +0000 (10:36 -0800)]
Merge branch 'jn/cherry-pick-refresh-index' into maint

* jn/cherry-pick-refresh-index:
  cherry-pick/revert: transparently refresh index

13 years agoMerge branch 'jl/add-p-reverse-message' into maint
Junio C Hamano [Thu, 9 Dec 2010 18:36:47 +0000 (10:36 -0800)]
Merge branch 'jl/add-p-reverse-message' into maint

* jl/add-p-reverse-message:
  Correct help blurb in checkout -p and friends

13 years agoMerge branch 'np/diff-in-corrupt-repository' into maint
Junio C Hamano [Thu, 9 Dec 2010 18:36:39 +0000 (10:36 -0800)]
Merge branch 'np/diff-in-corrupt-repository' into maint

* np/diff-in-corrupt-repository:
  diff: don't presume empty file when corresponding object is missing

13 years agoMerge branch 'fc/apply-p2-get-header-name' into maint
Junio C Hamano [Thu, 9 Dec 2010 18:36:36 +0000 (10:36 -0800)]
Merge branch 'fc/apply-p2-get-header-name' into maint

* fc/apply-p2-get-header-name:
  test: git-apply -p2 rename/chmod only
  Fix git-apply with -p greater than 1

13 years agoMerge branch 'np/pack-broken-boundary' into maint
Junio C Hamano [Thu, 9 Dec 2010 18:36:23 +0000 (10:36 -0800)]
Merge branch 'np/pack-broken-boundary' into maint

* np/pack-broken-boundary:
  make pack-objects a bit more resilient to repo corruption

13 years agoMerge branch 'ak/apply-non-git-epoch' into maint
Junio C Hamano [Thu, 9 Dec 2010 18:36:16 +0000 (10:36 -0800)]
Merge branch 'ak/apply-non-git-epoch' into maint

* ak/apply-non-git-epoch:
  apply: handle patches with funny filename and colon in timezone
  apply: Recognize epoch timestamps with : in the timezone

13 years agoMerge branch 'cm/diff-check-at-eol' into maint
Junio C Hamano [Thu, 9 Dec 2010 18:36:10 +0000 (10:36 -0800)]
Merge branch 'cm/diff-check-at-eol' into maint

* cm/diff-check-at-eol:
  diff --check: correct line numbers of new blank lines at EOF

13 years agoMerge branch 'tc/smart-http-post-redirect' into maint
Junio C Hamano [Thu, 9 Dec 2010 18:36:04 +0000 (10:36 -0800)]
Merge branch 'tc/smart-http-post-redirect' into maint

* tc/smart-http-post-redirect:
  smart-http: Don't change POST to GET when following redirect

13 years agoMerge branch 'ab/require-perl-5.8' into maint
Junio C Hamano [Thu, 9 Dec 2010 18:35:21 +0000 (10:35 -0800)]
Merge branch 'ab/require-perl-5.8' into maint

* ab/require-perl-5.8:
  perl: use "use warnings" instead of -w
  perl: bump the required Perl version to 5.8 from 5.6.[21]

13 years agocontrib/hooks/post-receive-email: fix return values from prep_for_email
Alan Raison [Thu, 9 Dec 2010 16:03:05 +0000 (16:03 +0000)]
contrib/hooks/post-receive-email: fix return values from prep_for_email

The function was returning 0 for failure and 1 for success which was
breaking the logic in the main loop.  It now also returns in all
cases, rather than exiting.

Signed-off-by: Alan Raison <alan@theraisons.me.uk>
Acked-by: Kevin P. Fleming <kpfleming@digium.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'nd/maint-fix-add-typo-detection' (early part)
Junio C Hamano [Wed, 8 Dec 2010 19:25:52 +0000 (11:25 -0800)]
Merge branch 'nd/maint-fix-add-typo-detection' (early part)

* 'nd/maint-fix-add-typo-detection' (early part):
  add: do not rely on dtype being NULL behavior

13 years agoMerge branch 'jn/gitweb-time-hires-comes-with-5.8'
Junio C Hamano [Wed, 8 Dec 2010 19:25:04 +0000 (11:25 -0800)]
Merge branch 'jn/gitweb-time-hires-comes-with-5.8'

* jn/gitweb-time-hires-comes-with-5.8:
  gitweb: Time::HiRes is in core for Perl 5.8

13 years agoMerge branch 'il/remote-fd-ext'
Junio C Hamano [Wed, 8 Dec 2010 19:24:14 +0000 (11:24 -0800)]
Merge branch 'il/remote-fd-ext'

* il/remote-fd-ext:
  remote-fd/ext: finishing touches after code review
  git-remote-ext
  git-remote-fd
  Add bidirectional_transfer_loop()

Conflicts:
compat/mingw.h

13 years agoMerge branch 'jk/pager-per-command'
Junio C Hamano [Wed, 8 Dec 2010 19:24:14 +0000 (11:24 -0800)]
Merge branch 'jk/pager-per-command'

* jk/pager-per-command:
  allow command-specific pagers in pager.<cmd>

13 years agoMerge branch 'jk/maint-decorate-01-bool'
Junio C Hamano [Wed, 8 Dec 2010 19:24:14 +0000 (11:24 -0800)]
Merge branch 'jk/maint-decorate-01-bool'

* jk/maint-decorate-01-bool:
  log.decorate: accept 0/1 bool values

13 years agoMerge branch 'gc/http-with-non-ascii-username-url'
Junio C Hamano [Wed, 8 Dec 2010 19:24:14 +0000 (11:24 -0800)]
Merge branch 'gc/http-with-non-ascii-username-url'

* gc/http-with-non-ascii-username-url:
  Fix username and password extraction from HTTP URLs
  t5550: test HTTP authentication and userinfo decoding

Conflicts:
t/lib-httpd/apache.conf

13 years agoMerge branch 'ks/maint-getenv-fix'
Junio C Hamano [Wed, 8 Dec 2010 19:24:13 +0000 (11:24 -0800)]
Merge branch 'ks/maint-getenv-fix'

* ks/maint-getenv-fix:
  setup: make sure git_dir path is in a permanent buffer, getenv(3) case

13 years agoMerge branch 'gb/gitweb-remote-heads'
Junio C Hamano [Wed, 8 Dec 2010 19:24:13 +0000 (11:24 -0800)]
Merge branch 'gb/gitweb-remote-heads'

* gb/gitweb-remote-heads:
  git instaweb: enable remote_heads
  gitweb: group remote heads by remote
  gitweb: provide a routine to display (sub)sections
  gitweb: refactor repository URL printing
  gitweb: remotes view for a single remote
  gitweb: allow action specialization in page header
  gitweb: nagivation menu for tags, heads and remotes
  gitweb: separate heads and remotes lists
  gitweb: git_get_heads_list accepts an optional list of refs
  gitweb: introduce remote_heads feature
  gitweb: use fullname as hash_base in heads link

13 years agoMerge branch 'mg/maint-tag-rfc1991'
Junio C Hamano [Wed, 8 Dec 2010 19:24:13 +0000 (11:24 -0800)]
Merge branch 'mg/maint-tag-rfc1991'

* mg/maint-tag-rfc1991:
  tag: recognize rfc1991 signatures
  tag: factor out sig detection for tag display
  tag: factor out sig detection for body edits
  verify-tag: factor out signature detection
  t/t7004-tag: test handling of rfc1991 signatures

13 years agoMerge branch 'jh/notes-merge'
Junio C Hamano [Wed, 8 Dec 2010 19:24:12 +0000 (11:24 -0800)]
Merge branch 'jh/notes-merge'

* jh/notes-merge: (23 commits)
  Provide 'git merge --abort' as a synonym to 'git reset --merge'
  cmd_merge(): Parse options before checking MERGE_HEAD
  Provide 'git notes get-ref' to easily retrieve current notes ref
  git notes merge: Add testcases for merging notes trees at different fanouts
  git notes merge: Add another auto-resolving strategy: "cat_sort_uniq"
  git notes merge: --commit should fail if underlying notes ref has moved
  git notes merge: List conflicting notes in notes merge commit message
  git notes merge: Manual conflict resolution, part 2/2
  git notes merge: Manual conflict resolution, part 1/2
  Documentation: Preliminary docs on 'git notes merge'
  git notes merge: Add automatic conflict resolvers (ours, theirs, union)
  git notes merge: Handle real, non-conflicting notes merges
  builtin/notes.c: Refactor creation of notes commits.
  git notes merge: Initial implementation handling trivial merges only
  builtin/notes.c: Split notes ref DWIMmery into a separate function
  notes.c: Use two newlines (instead of one) when concatenating notes
  (trivial) t3303: Indent with tabs instead of spaces for consistency
  notes.h/c: Propagate combine_notes_fn return value to add_note() and beyond
  notes.h/c: Allow combine_notes functions to remove notes
  notes.c: Reorder functions in preparation for next commit
  ...

Conflicts:
builtin.h

13 years agoMerge branch 'jk/diff-CBM'
Junio C Hamano [Wed, 8 Dec 2010 19:24:11 +0000 (11:24 -0800)]
Merge branch 'jk/diff-CBM'

* jk/diff-CBM:
  diff: report bogus input to -C/-M/-B

13 years agoMerge branch 'maint'
Junio C Hamano [Wed, 8 Dec 2010 00:13:43 +0000 (16:13 -0800)]
Merge branch 'maint'

* maint:
  git-rm.txt: Fix quoting

13 years agoupdate-index: migrate to parse-options API
Jonathan Nieder [Wed, 1 Dec 2010 23:34:06 +0000 (17:34 -0600)]
update-index: migrate to parse-options API

--refresh and --really-refresh accept flags (like -q) and modify
an error indicator.  It might make sense to make the error
indicator global, but just pass the flags and a pointer to the error
indicator in a struct instead.

--cacheinfo wants 3 arguments.  Use the OPTION_LOWLEVEL_CALLBACK
extension to grab them and PARSE_OPT_NOARG to disallow the "sticked"
--cacheinfo=foo form.  (The resulting message

$ git update-index --cacheinfo=foo
error: option `cacheinfo' takes no value

is unfortunately incorrect.)

--assume-unchanged and --no-assume-unchanged probably should use the
OPT_UYN feature; but use a callback for now so the existing MARK_FLAG
and UNMARK_FLAG values can be used.

--stdin and --index-info are still constrained to be the last argument
(implemented using the OPTION_LOWLEVEL_CALLBACK extension).

--unresolve and --again consume all arguments that come after them
(also using OPTION_LOWLEVEL_CALLBACK).

The order of options matters.  Each path on the command line is
affected only by the options that come before it.  A custom
argument-parsing loop with parse_options_step() brings that about.

In exchange for all the fuss, we get the usual perks: support for
un-sticked options, better usage error messages, more useful -h
output, and argument parsing code that should be easier to tweak
in the future.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosetup: save prefix (original cwd relative to toplevel) in startup_info
Nguyễn Thái Ngọc Duy [Wed, 1 Dec 2010 23:33:22 +0000 (17:33 -0600)]
setup: save prefix (original cwd relative to toplevel) in startup_info

Save the path from the original cwd to the cwd at the end of the
setup procedure in the startup_info struct introduced in e37c1329
(2010-08-05).  The value cannot vary from thread to thread anyway,
since the cwd is global.

So now in your builtin command, instead of passing prefix around,
when you want to convert a user-supplied path to a cwd-relative
path, you can use startup_info->prefix directly.

Caveat: As with the return value from setup_git_directory_gently(),
startup_info->prefix would be NULL when the original cwd is not a
subdir of the toplevel.

Longer term, this would allow the prefix to be reused when several
noncooperating functions require access to the same repository (for
example, when accessing configuration before running a builtin).

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoparse-options: make resuming easier after PARSE_OPT_STOP_AT_NON_OPTION
Jonathan Nieder [Wed, 1 Dec 2010 23:32:55 +0000 (17:32 -0600)]
parse-options: make resuming easier after PARSE_OPT_STOP_AT_NON_OPTION

Introduce a PARSE_OPT_NON_OPTION state, so parse_option_step()
callers can easily distinguish between non-options and other
reasons for option parsing termination (like "--").

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoparse-options: allow git commands to invent new option types
Jonathan Nieder [Wed, 1 Dec 2010 23:32:16 +0000 (17:32 -0600)]
parse-options: allow git commands to invent new option types

parse-options provides a variety of option behaviors, including
OPTION_CALLBACK, which should take care of just about any sane
behavior.  All supported behaviors obey the following constraint:

 A --foo option can only accept (and base its behavior on)
 one argument, which would be the following command-line
 argument in the "unsticked" form.

Alas, some existing git commands have options that do not obey that
constraint.  For example, update-index --cacheinfo takes three
arguments, and update-index --resolve takes all later parameters as
arguments.

Introduces an OPTION_LOWLEVEL_CALLBACK backdoor to parse-options so
such option types can be supported without tempting inventors of other
commands through mention in the public API.  Commands can set the
callback field to a function accepting three arguments: the option
parsing context, the option itself, and a flag indicating whether the
the option was negated.  When the option is encountered, that function
is called to take over from get_value().  The return value should be
zero for success, -1 for usage errors.

Thanks to Stephen Boyd for API guidance.

Improved-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoparse-options: never suppress arghelp if LITERAL_ARGHELP is set
Jonathan Nieder [Wed, 1 Dec 2010 23:31:36 +0000 (17:31 -0600)]
parse-options: never suppress arghelp if LITERAL_ARGHELP is set

The PARSE_OPT_LITERAL_ARGHELP flag allows a program to override the
standard "<argument> for mandatory, [argument] for optional" markup in
its help message.  Extend it to override the usual "no text for
disallowed", too (for the PARSE_OPT_NOARG | PARSE_OPT_LITERAL_ARGHELP
case, which was previously meaningless), to be more intuitive.

The motivation is to allow update-index to correctly advertise

--cacheinfo <mode> <object> <path>
                      add the specified entry to the index

while abusing PARSE_OPT_NOARG to disallow the "sticked form"

--cacheinfo=<mode> <object> <path>

Noticed-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoparse-options: do not infer PARSE_OPT_NOARG from option type
Stephen Boyd [Wed, 1 Dec 2010 23:30:40 +0000 (17:30 -0600)]
parse-options: do not infer PARSE_OPT_NOARG from option type

Simplify the "takes no value" error path by relying on PARSE_OPT_NOARG
being set correctly.  That is:

 - if the PARSE_OPT_NOARG flag is set, reject --opt=value
   regardless of the option type;
 - if the PARSE_OPT_NOARG flag is unset, accept --opt=value
   regardless of the option type.

This way, the accepted usage more closely matches the usage advertised
with --help-all.

No functional change intended, since the NOARG flag is only used
with "boolean-only" option types in existing parse_options callers.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoparse-options: sanity check PARSE_OPT_NOARG flag
Jonathan Nieder [Thu, 2 Dec 2010 06:08:57 +0000 (00:08 -0600)]
parse-options: sanity check PARSE_OPT_NOARG flag

Some option types cannot use an argument --- boolean options that
would set a bit or flag or increment a counter, for example.  If
configured in the flag word to accept an argument anyway, the result
is an argument that is advertised in "program -h" output only to be
rejected by parse-options::get_value.

Luckily all current users of these option types use PARSE_OPT_NOARG
and do not use PARSE_OPT_OPTARG.  Add a check to ensure that that
remains true.  The check is run once for each invocation of
parse_option_start().

Improved-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoparse-options: move NODASH sanity checks to parse_options_check
Jonathan Nieder [Thu, 2 Dec 2010 06:05:05 +0000 (00:05 -0600)]
parse-options: move NODASH sanity checks to parse_options_check

A dashless switch (like '(' passed to 'git grep') cannot be negated,
cannot be attached to an argument, and cannot have a long form.
Currently parse-options runs the related sanity checks when the
dashless option is used; better to always check them at the start of
option parsing, so mistakes can be caught more quickly.

The error message at the new call site is less specific about the
nature of the error, for simplicity.  On the other hand, it prints
which switch was problematic.  Before:

fatal: BUG: dashless options can't be long

After:

error: BUG: switch '(' uses feature not supported for dashless options

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoparse-options: clearer reporting of API misuse
Jonathan Nieder [Thu, 2 Dec 2010 06:01:18 +0000 (00:01 -0600)]
parse-options: clearer reporting of API misuse

The PARSE_OPT_LASTARG_DEFAULT flag is meant for options like
--contains that (1) traditionally had a mandatory argument and
(2) have some better behavior to use when appearing in the final
position.  It makes no sense to combine this with OPTARG, so ever
since v1.6.4-rc0~71 (parse-options: add parse_options_check to
validate option specs, 2009-07-09) this mistake is flagged with

error: `--option` uses incompatible flags LASTARG_DEFAULT and OPTARG

and an exit status representing an error in commandline usage.

Unfortunately that which might confuse scripters calling such an
erroneous program into thinking the _script_ contains an error.
Clarify that it is an internal error by dying with a message beginning
"error: BUG: ..." and status 128.

While at it, clean up parse_options_check to prepare for more checks.

Long term, it would be nicer to make such checks happen at compile
time.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogit-rm.txt: Fix quoting
Michael J Gruber [Tue, 7 Dec 2010 09:07:11 +0000 (10:07 +0100)]
git-rm.txt: Fix quoting

Literal " produces typographically incorrect quotations, but "works" in
most circumstances. In the subheadings of git-rm.txt, it "works" for the
html backend but not for the docbook conversion to nroff: double "" and
spurious double spaces appear in the output.

Replace "incorrect" quotations by ``correct'' ones, and fix other
"quotations" which are really `code fragments`.

This should make git-rm.txt "-clean.

Reported-by: Jeff King <peff@peff.net>
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMakefile: dependencies for vcs-svn tests
Jonathan Nieder [Sun, 10 Oct 2010 05:50:32 +0000 (00:50 -0500)]
Makefile: dependencies for vcs-svn tests

The vcs-svn tests (test-treap.o et al) depend on the vcs-svn
headers for declarations and inline functions.  Declare the
dependency.  While at it, declare a dependency of the vcs-svn
objects (vcs-svn/string_pool.o et al) on $(LIB_H) to reflect use
within the vcs-svn library of git-compat-util.h and cache.h.

Without this change, tweaks to inline functions in those headers
do not provoke rebuilds of the corresponding tests[*], making
such changes unnecessarily difficult to test.

Before:

 $ touch vcs-svn/*.h && make test-treap
 $

After:

 $ touch vcs-svn/*.h && make test-treap
 CC test-treap.o
 LINK test-treap
 $

[*] unless COMPUTE_HEADER_DEPENDENCIES is enabled

Detected with "make CHECK_HEADER_DEPENDENCIES=1".

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoparse-remote: handle detached HEAD
Santi Béjar [Mon, 6 Dec 2010 10:20:11 +0000 (11:20 +0100)]
parse-remote: handle detached HEAD

get_remote_merge_branch with zero or one arguments returns the
upstream branch. But a detached HEAD does no have an upstream branch,
as it is not tracking anything. Handle this case testing the exit code
of "git symbolic-ref -q HEAD".

Reported-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Santi Béjar <santi@agolina.net>
Tested-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoparse-options: Don't call parse_options_check() so much
Stephen Boyd [Mon, 6 Dec 2010 07:57:42 +0000 (23:57 -0800)]
parse-options: Don't call parse_options_check() so much

parse_options_check() is being called for each invocation of
parse_options_step which can be quite a bit for some commands. The
commit introducing this function cb9d398 (parse-options: add
parse_options_check to validate option specs., 2009-06-09) had the
correct motivation and explicitly states that parse_options_check()
should be called from parse_options_start(). However, the implementation
differs from the motivation. Fix it.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agohelp: always suggest common-cmds if prefix of cmd
Erik Faye-Lund [Fri, 26 Nov 2010 16:00:39 +0000 (17:00 +0100)]
help: always suggest common-cmds if prefix of cmd

If someone runs "git st", the command "git status" is not suggested
because it's not one of the closest levenshtein-neighbour.

Reserve the distance of 0 for common commands where the entered command
is a prefixe, as these are often more likely to be what the user meant.

This way, "git status" is the first suggestion, while a list of possible
typos are still suggested as well.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jn/ignore-doc'
Junio C Hamano [Sat, 4 Dec 2010 00:13:06 +0000 (16:13 -0800)]
Merge branch 'jn/ignore-doc'

* jn/ignore-doc:
  Documentation: point to related commands from gitignore
  Documentation: split gitignore page into sections

13 years agoMerge branch 'kb/maint-status-cquote'
Junio C Hamano [Sat, 4 Dec 2010 00:13:06 +0000 (16:13 -0800)]
Merge branch 'kb/maint-status-cquote'

* kb/maint-status-cquote:
  status: Quote paths with spaces in short format

13 years agoMerge branch 'jn/thinner-wrapper'
Junio C Hamano [Sat, 4 Dec 2010 00:13:06 +0000 (16:13 -0800)]
Merge branch 'jn/thinner-wrapper'

* jn/thinner-wrapper:
  Remove pack file handling dependency from wrapper.o
  pack-objects: mark file-local variable static
  wrapper: give zlib wrappers their own translation unit
  strbuf: move strbuf_branchname to sha1_name.c
  path helpers: move git_mkstemp* to wrapper.c
  wrapper: move odb_* to environment.c
  wrapper: move xmmap() to sha1_file.c

13 years agoMerge branch 'pn/commit-autosquash'
Junio C Hamano [Sat, 4 Dec 2010 00:13:06 +0000 (16:13 -0800)]
Merge branch 'pn/commit-autosquash'

* pn/commit-autosquash:
  add tests of commit --squash
  commit: --squash option for use with rebase --autosquash
  add tests of commit --fixup
  commit: --fixup option for use with rebase --autosquash
  pretty.c: teach format_commit_message() to reencode the output
  commit: helper methods to reduce redundant blocks of code

Conflicts:
Documentation/git-commit.txt
t/t3415-rebase-autosquash.sh

13 years agoMerge branch 'sn/diff-doc'
Junio C Hamano [Sat, 4 Dec 2010 00:10:36 +0000 (16:10 -0800)]
Merge branch 'sn/diff-doc'

* sn/diff-doc:
  docs: clarify git diff modes of operation
  diff,difftool: Don't use the {0,2} notation in usage strings
  CodingGuidelines: Add a section on writing documentation

13 years agoMerge branch 'sp/emfile'
Junio C Hamano [Sat, 4 Dec 2010 00:10:35 +0000 (16:10 -0800)]
Merge branch 'sp/emfile'

* sp/emfile:
  Work around EMFILE when there are too many pack files
  Use git_open_noatime when accessing pack data

13 years agoMerge branch 'jc/abbrev-guard'
Junio C Hamano [Sat, 4 Dec 2010 00:10:35 +0000 (16:10 -0800)]
Merge branch 'jc/abbrev-guard'

* jc/abbrev-guard:
  core.abbrevguard: Ensure short object names stay unique a bit longer

13 years agoMerge branch 'jj/icase-directory'
Junio C Hamano [Sat, 4 Dec 2010 00:10:34 +0000 (16:10 -0800)]
Merge branch 'jj/icase-directory'

* jj/icase-directory:
  Support case folding in git fast-import when core.ignorecase=true
  Support case folding for git add when core.ignorecase=true
  Add case insensitivity support when using git ls-files
  Add case insensitivity support for directories when using git status
  Case insensitivity support for .gitignore via core.ignorecase
  Add string comparison functions that respect the ignore_case variable.
  Makefile & configure: add a NO_FNMATCH_CASEFOLD flag
  Makefile & configure: add a NO_FNMATCH flag

Conflicts:
Makefile
config.mak.in
configure.ac
fast-import.c

13 years agoMerge branch 'maint' to sync with Git 1.7.3.3
Junio C Hamano [Fri, 3 Dec 2010 23:23:50 +0000 (15:23 -0800)]
Merge branch 'maint' to sync with Git 1.7.3.3

* maint:
  Git 1.7.3.3
  CodingGuidelines: mention whitespace preferences for shell scripts
  Documentation: do not misinterpret pull refspec as bold text

Conflicts:
Documentation/git-pull.txt
RelNotes

13 years agoGit 1.7.3.3 v1.7.3.3
Junio C Hamano [Fri, 3 Dec 2010 23:18:06 +0000 (15:18 -0800)]
Git 1.7.3.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoCodingGuidelines: mention whitespace preferences for shell scripts
Giuseppe Bilotta [Fri, 3 Dec 2010 16:47:35 +0000 (17:47 +0100)]
CodingGuidelines: mention whitespace preferences for shell scripts

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoDocumentation: do not misinterpret pull refspec as bold text
Jonathan Nieder [Fri, 3 Dec 2010 20:04:17 +0000 (14:04 -0600)]
Documentation: do not misinterpret pull refspec as bold text

Use the {asterisk} entity to avoid mistreating the asterisks
in "(e.g., refs/heads/*:refs/remotes/origin/*)" as delimiters
for bold text.

From a quick search with 'git grep -e "\*.*\*"', this seems to
be the last example of this particular formatting problem.

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.4
Junio C Hamano [Thu, 2 Dec 2010 22:33:26 +0000 (14:33 -0800)]
Update draft release notes to 1.7.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Thu, 2 Dec 2010 22:32:52 +0000 (14:32 -0800)]
Merge branch 'maint'

* maint:
  Git 1.7.0.8
  Documentation: Fix mark-up of lines with more than one tilde

Conflicts:
GIT-VERSION-GEN

13 years agoPrepare for 1.7.3.3
Junio C Hamano [Thu, 2 Dec 2010 20:24:42 +0000 (12:24 -0800)]
Prepare for 1.7.3.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoGit 1.7.2.4 v1.7.2.4
Junio C Hamano [Thu, 2 Dec 2010 22:28:01 +0000 (14:28 -0800)]
Git 1.7.2.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoGit 1.7.1.3 v1.7.1.3
Junio C Hamano [Thu, 2 Dec 2010 20:18:49 +0000 (12:18 -0800)]
Git 1.7.1.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoGit 1.7.0.8 v1.7.0.8
Junio C Hamano [Thu, 2 Dec 2010 20:06:06 +0000 (12:06 -0800)]
Git 1.7.0.8

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoDocumentation: Fix mark-up of lines with more than one tilde
Junio C Hamano [Thu, 2 Dec 2010 19:23:50 +0000 (11:23 -0800)]
Documentation: Fix mark-up of lines with more than one tilde

The manual pages of cherry-pick and revert had examples with two revisions
on the same line in the examples section, that looked like this:

    git cherry-pick master~4 master~2::

Unfortunately, this is taken as a mark-up to make the part between two
tildes, "4 master", subscript.  Use {tilde} to make it explicit that we
do want ~ characters in these places (backslash does not help).

Reported-by: Sylvain Rabot <sylvain.rabot@f-secure.com>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'cb/maint-orphan-merge-noclobber' into maint
Junio C Hamano [Thu, 2 Dec 2010 19:27:13 +0000 (11:27 -0800)]
Merge branch 'cb/maint-orphan-merge-noclobber' into maint

* cb/maint-orphan-merge-noclobber:
  do not overwrite untracked during merge from unborn branch

13 years agoMerge branch 'jk/add-e-doc' into maint
Junio C Hamano [Thu, 2 Dec 2010 19:27:08 +0000 (11:27 -0800)]
Merge branch 'jk/add-e-doc' into maint

* jk/add-e-doc:
  docs: give more hints about how "add -e" works
  docs: give more hints about how "add -e" works

13 years agoMerge branch 'bg/maint-gitweb-test-lib' into maint
Junio C Hamano [Thu, 2 Dec 2010 19:26:49 +0000 (11:26 -0800)]
Merge branch 'bg/maint-gitweb-test-lib' into maint

* bg/maint-gitweb-test-lib:
  t/gitweb-lib: Don't pass constant to decode_utf8

13 years agoMerge branch 'tr/maint-merge-file-subdir' into maint
Junio C Hamano [Thu, 2 Dec 2010 19:26:40 +0000 (11:26 -0800)]
Merge branch 'tr/maint-merge-file-subdir' into maint

* tr/maint-merge-file-subdir:
  merge-file: correctly find files when called in subdir
  prefix_filename(): safely handle the case where pfx_len=0

13 years agoMerge branch 'ks/no-textconv-symlink' into maint
Junio C Hamano [Thu, 2 Dec 2010 19:26:24 +0000 (11:26 -0800)]
Merge branch 'ks/no-textconv-symlink' into maint

* ks/no-textconv-symlink:
  blame,cat-file --textconv: Don't assume mode is ``S_IFREF | 0664''
  blame,cat-file: Demonstrate --textconv is wrongly running converter on symlinks
  blame,cat-file: Prepare --textconv tests for correctly-failing conversion program

13 years agoMerge branch 'bc/fortran-userdiff' into maint
Junio C Hamano [Thu, 2 Dec 2010 19:25:36 +0000 (11:25 -0800)]
Merge branch 'bc/fortran-userdiff' into maint

* bc/fortran-userdiff:
  userdiff.c: add builtin fortran regex patterns

13 years agoMerge branch 'maint'
Junio C Hamano [Thu, 2 Dec 2010 00:41:13 +0000 (16:41 -0800)]
Merge branch 'maint'

* maint:
  add: introduce add.ignoreerrors synonym for add.ignore-errors
  bash: Match lightweight tags in prompt
  git-commit.txt: (synopsis): move -i and -o before "--"

13 years agoMerge branch 'maint-1.7.2' into maint
Junio C Hamano [Thu, 2 Dec 2010 00:40:26 +0000 (16:40 -0800)]
Merge branch 'maint-1.7.2' into maint

* maint-1.7.2:
  add: introduce add.ignoreerrors synonym for add.ignore-errors
  bash: Match lightweight tags in prompt
  git-commit.txt: (synopsis): move -i and -o before "--"

13 years agoMerge branch 'maint-1.7.1' into maint-1.7.2
Junio C Hamano [Thu, 2 Dec 2010 00:40:20 +0000 (16:40 -0800)]
Merge branch 'maint-1.7.1' into maint-1.7.2

* maint-1.7.1:
  add: introduce add.ignoreerrors synonym for add.ignore-errors

13 years agoMerge branch 'maint-1.7.0' into maint-1.7.1
Junio C Hamano [Thu, 2 Dec 2010 00:37:34 +0000 (16:37 -0800)]
Merge branch 'maint-1.7.0' into maint-1.7.1

* maint-1.7.0:
  add: introduce add.ignoreerrors synonym for add.ignore-errors

13 years agoMake the tab width used for whitespace checks configurable
Johannes Sixt [Tue, 30 Nov 2010 08:29:11 +0000 (09:29 +0100)]
Make the tab width used for whitespace checks configurable

A new whitespace "rule" is added that sets the tab width to use for
whitespace checks and fix-ups and replaces the hard-coded constant 8.

Since the setting is part of the rules, it can be set per file using
.gitattributes.

The new configuration is backwards compatible because older git versions
simply ignore unknown whitespace rules.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'js/maint-apply-tab-in-indent-fix' into HEAD
Junio C Hamano [Wed, 1 Dec 2010 22:42:00 +0000 (14:42 -0800)]
Merge branch 'js/maint-apply-tab-in-indent-fix' into HEAD

* js/maint-apply-tab-in-indent-fix:
  apply --whitespace=fix: fix tab-in-indent

13 years agoapply --whitespace=fix: fix tab-in-indent
Johannes Sixt [Tue, 30 Nov 2010 08:22:04 +0000 (09:22 +0100)]
apply --whitespace=fix: fix tab-in-indent

When the whitespace rule tab-in-indent is enabled, apply --whitespace=fix
replaces tabs by the appropriate amount of blanks. The code used
"dst->len % 8" as the criterion to stop adding blanks. But it forgot that
dst holds more than just the current line. Consequently, the modulus was
computed correctly only for the first added line, but not for the second
and subsequent lines. Fix it.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Acked-by: Chris Webb <chris@arachsys.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoadd: introduce add.ignoreerrors synonym for add.ignore-errors
Jonathan Nieder [Wed, 1 Dec 2010 18:36:15 +0000 (12:36 -0600)]
add: introduce add.ignoreerrors synonym for add.ignore-errors

The "[add] ignore-errors" tweakable introduced by v1.5.6-rc0~30^2 (Add
a config option to ignore errors for git-add, 2008-05-12) does not
follow the usual convention for naming values in the git configuration
file.

What convention?  Glad you asked.

The section name indicates the affected subsystem.

The subsection name, if any, indicates which of
an unbound set of things to set the value for.

The variable name describes the effect of tweaking
this knob.

The section and variable names can be broken into
words using bumpyCaps in documentation as a hint to
the reader.  These word breaks are not significant
at the level of code, since the section and variable
names are not case sensitive.

The name "add.ignore-errors" includes a dash, meaning a naive
configuration file like

[add]
ignoreErrors

does not have any effect.  Avoid such confusion by renaming to the
more consistent add.ignoreErrors, but keep the old version for
backwards compatibility.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>