git.git
10 years agobuiltin-am: extract patch and commit info with git-mailinfo
Paul Tan [Tue, 4 Aug 2015 13:51:28 +0000 (21:51 +0800)]
builtin-am: extract patch and commit info with git-mailinfo

For the purpose of applying the patch and committing the results,
implement extracting the patch data, commit message and authorship from
an e-mail message using git-mailinfo.

git-mailinfo is run as a separate process, but ideally in the future,
we should be be able to access its functionality directly without
spawning a new process.

Helped-by: Junio C Hamano <redacted>
Helped-by: Jeff King <redacted>
Helped-by: Johannes Schindelin <redacted>
Signed-off-by: Paul Tan <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agobuiltin-am: auto-detect mbox patches
Paul Tan [Tue, 4 Aug 2015 13:51:27 +0000 (21:51 +0800)]
builtin-am: auto-detect mbox patches

Since 15ced75 (git-am foreign patch support: autodetect some patch
formats, 2009-05-27), git-am.sh is able to autodetect mbox, stgit and
mercurial patches through heuristics.

Re-implement support for autodetecting mbox/maildir files in
builtin/am.c.

RFC 2822 requires that lines are terminated by "\r\n". To support this,
implement strbuf_getline_crlf(), which will remove both '\n' and "\r\n"
from the end of the line.

Helped-by: Junio C Hamano <redacted>
Helped-by: Eric Sunshine <redacted>
Helped-by: Johannes Schindelin <redacted>
Signed-off-by: Paul Tan <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agobuiltin-am: split out mbox/maildir patches with git-mailsplit
Paul Tan [Tue, 4 Aug 2015 13:51:26 +0000 (21:51 +0800)]
builtin-am: split out mbox/maildir patches with git-mailsplit

git-am.sh supports mbox, stgit and mercurial patches. Re-implement
support for splitting out mbox/maildirs using git-mailsplit, while also
implementing the framework required to support other patch formats in
the future.

Re-implement support for the --patch-format option (since a5a6755
(git-am foreign patch support: introduce patch_format, 2009-05-27)) to
allow the user to choose between the different patch formats.

Helped-by: Junio C Hamano <redacted>
Signed-off-by: Paul Tan <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agobuiltin-am: implement patch queue mechanism
Paul Tan [Tue, 4 Aug 2015 13:51:25 +0000 (21:51 +0800)]
builtin-am: implement patch queue mechanism

git-am applies a series of patches. If the process terminates
abnormally, we want to be able to resume applying the series of patches.
This requires the session state to be saved in a persistent location.

Implement the mechanism of a "patch queue", represented by 2 integers --
the index of the current patch we are applying and the index of the last
patch, as well as its lifecycle through the following functions:

* am_setup(), which will set up the state directory
  $GIT_DIR/rebase-apply. As such, even if the process exits abnormally,
  the last-known state will still persist.

* am_load(), which is called if there is an am session in
  progress, to load the last known state from the state directory so we
  can resume applying patches.

* am_run(), which will do the actual patch application. After applying a
  patch, it calls am_next() to increment the current patch index. The
  logic for applying and committing a patch is not implemented yet.

* am_destroy(), which is finally called when we successfully applied all
  the patches in the queue, to clean up by removing the state directory
  and its contents.

Helped-by: Junio C Hamano <redacted>
Helped-by: Stefan Beller <redacted>
Helped-by: Johannes Schindelin <redacted>
Signed-off-by: Paul Tan <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agobuiltin-am: implement skeletal builtin am
Paul Tan [Tue, 4 Aug 2015 13:51:24 +0000 (21:51 +0800)]
builtin-am: implement skeletal builtin am

For the purpose of rewriting git-am.sh into a C builtin, implement a
skeletal builtin/am.c that redirects to $GIT_EXEC_PATH/git-am if the
environment variable _GIT_USE_BUILTIN_AM is not defined. Since in the
Makefile git-am.sh takes precedence over builtin/am.c,
$GIT_EXEC_PATH/git-am will contain the shell script git-am.sh, and thus
this allows us to fall back on the functional git-am.sh when running the
test suite for tests that depend on a working git-am implementation.

Since git-am.sh cannot handle any environment modifications by
setup_git_directory(), "am" is declared with no setup flags in git.c. On
the other hand, to re-implement git-am.sh in builtin/am.c, we need to
run all the git dir and work tree setup logic that git.c typically does
for us. As such, we work around this temporarily by copying the logic in
git.c's run_builtin(), which is roughly:

prefix = setup_git_directory();
trace_repo_setup(prefix);
setup_work_tree();

This redirection should be removed when all the features of git-am.sh
have been re-implemented in builtin/am.c.

Helped-by: Junio C Hamano <redacted>
Signed-off-by: Paul Tan <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agowrapper: implement xfopen()
Paul Tan [Tue, 4 Aug 2015 13:51:23 +0000 (21:51 +0800)]
wrapper: implement xfopen()

A common usage pattern of fopen() is to check if it succeeded, and die()
if it failed:

FILE *fp = fopen(path, "w");
if (!fp)
die_errno(_("could not open '%s' for writing"), path);

Implement a wrapper function xfopen() for the above, so that we can save
a few lines of code and make the die() messages consistent.

Helped-by: Jeff King <redacted>
Helped-by: Johannes Schindelin <redacted>
Helped-by: Junio C Hamano <redacted>
Signed-off-by: Paul Tan <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agowrapper: implement xopen()
Paul Tan [Tue, 4 Aug 2015 13:51:22 +0000 (21:51 +0800)]
wrapper: implement xopen()

A common usage pattern of open() is to check if it was successful, and
die() if it was not:

int fd = open(path, O_WRONLY | O_CREAT, 0777);
if (fd < 0)
die_errno(_("Could not open '%s' for writing."), path);

Implement a wrapper function xopen() that does the above so that we can
save a few lines of code, and make the die() messages consistent.

Helped-by: Torsten Bögershausen <redacted>
Helped-by: Jeff King <redacted>
Helped-by: Johannes Schindelin <redacted>
Helped-by: Junio C Hamano <redacted>
Signed-off-by: Paul Tan <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agotransport-helper: die on errors reading refs.
Stefan Beller [Fri, 31 Jul 2015 23:57:57 +0000 (16:57 -0700)]
transport-helper: die on errors reading refs.

We check the return value of read_ref in 19 out of 21 cases.
This adds checks to the missing cases.

Signed-off-by: Stefan Beller <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agobisect: allow setting any user-specified in 'git bisect start'
Matthieu Moy [Mon, 29 Jun 2015 15:40:35 +0000 (17:40 +0200)]
bisect: allow setting any user-specified in 'git bisect start'

This allows a natural user-interface when looking for any change in the
code, not just regression. For example:

git bisect start --term-old fast --term-new slow
git bisect fast
git bisect slow
...

There were several proposed user-interfaces for this feature. This patch
implements it as options to 'git bisect start' for the following reasons:

* By construction, the terms will be valid for one and only one
  bisection.

* Unlike positional arguments, using named options avoid having to
  remember an order.

* We can combine user-defined terms and passing old/new commits as
  argument to "git bisect start".

* The implementation is relatively simple.

See previous discussions:

  http://mid.gmane.org/1435337896-20709-3-git-send-email-Matthieu.Moy@imag.fr

Signed-off-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agobisect: add 'git bisect terms' to view the current terms
Matthieu Moy [Mon, 29 Jun 2015 15:40:34 +0000 (17:40 +0200)]
bisect: add 'git bisect terms' to view the current terms

Signed-off-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agobisect: don't mix option parsing and non-trivial code
Matthieu Moy [Mon, 29 Jun 2015 15:40:31 +0000 (17:40 +0200)]
bisect: don't mix option parsing and non-trivial code

As-is, the revisions that appear on the command-line are processed in
order. This would mix badly with code that changes the configuration
(e.g. change $TERM_GOOD and $TERM_BAD) while processing the options.

Signed-off-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agobisect: add the terms old/new
Antoine Delaite [Mon, 29 Jun 2015 15:40:33 +0000 (17:40 +0200)]
bisect: add the terms old/new

When not looking for a regression during a bisect but for a fix or a
change in another given property, it can be confusing to use 'good'
and 'bad'.

This patch introduce `git bisect new` and `git bisect old` as an
alternative to 'bad' and good': the commits which have a certain
property must be marked as `new` and the ones which do not as `old`.

The output will be the first commit after the change in the property.
During a new/old bisect session you cannot use bad/good commands and
vice-versa.

Some commands are still not available for old/new:
     * git rev-list --bisect does not treat the revs/bisect/new and
       revs/bisect/old-SHA1 files.

Old discussions:
- http://thread.gmane.org/gmane.comp.version-control.git/86063
introduced bisect fix unfixed to find fix.
- http://thread.gmane.org/gmane.comp.version-control.git/182398
discussion around bisect yes/no or old/new.
- http://thread.gmane.org/gmane.comp.version-control.git/199758
last discussion and reviews
New discussions:
- http://thread.gmane.org/gmane.comp.version-control.git/271320
( v2 1/7-4/7 )
- http://comments.gmane.org/gmane.comp.version-control.git/271343
( v2 5/7-7/7 )

Signed-off-by: Antoine Delaite <redacted>
Signed-off-by: Louis Stuber <redacted>
Signed-off-by: Valentin Duperray <redacted>
Signed-off-by: Franck Jonas <redacted>
Signed-off-by: Lucien Kong <redacted>
Signed-off-by: Thomas Nguy <redacted>
Signed-off-by: Huynh Khoi Nguyen Nguyen <redacted>
Signed-off-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agobisect: sanity check on terms
Matthieu Moy [Mon, 29 Jun 2015 15:40:32 +0000 (17:40 +0200)]
bisect: sanity check on terms

This is currently only a defensive check since the only terms are
bad/good and new/old, which pass it, but this is a preparation step for
accepting user-supplied terms.

Signed-off-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agobisect: simplify the addition of new bisect terms
Antoine Delaite [Mon, 29 Jun 2015 15:40:30 +0000 (17:40 +0200)]
bisect: simplify the addition of new bisect terms

We create a file BISECT_TERMS in the repository .git to be read during a
bisection. There's no user-interface yet, but "git bisect" works if terms
other than old/new or bad/good are set in .git/BISECT_TERMS. The
fonctions to be changed if we add new terms are quite few.

In git-bisect.sh:
check_and_set_terms
bisect_voc

Co-authored-by: Louis Stuber <redacted>
Tweaked-by: Matthieu Moy <redacted>
Signed-off-by: Antoine Delaite <redacted>
Signed-off-by: Louis Stuber <redacted>
Signed-off-by: Valentin Duperray <redacted>
Signed-off-by: Franck Jonas <redacted>
Signed-off-by: Lucien Kong <redacted>
Signed-off-by: Thomas Nguy <redacted>
Signed-off-by: Huynh Khoi Nguyen Nguyen <redacted>
Signed-off-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoSync with maint
Junio C Hamano [Mon, 3 Aug 2015 18:20:07 +0000 (11:20 -0700)]
Sync with maint

* maint:
  Git 2.4.8

10 years agoFirst batch for 2.6
Junio C Hamano [Mon, 3 Aug 2015 18:19:36 +0000 (11:19 -0700)]
First batch for 2.6

Signed-off-by: Junio C Hamano <redacted>
10 years agoMerge branch 'es/doc-clean-outdated-tools'
Junio C Hamano [Mon, 3 Aug 2015 18:01:32 +0000 (11:01 -0700)]
Merge branch 'es/doc-clean-outdated-tools'

* es/doc-clean-outdated-tools:
  Documentation/git-tools: retire manually-maintained list
  Documentation/git-tools: drop references to defunct tools
  Documentation/git-tools: fix item text formatting
  Documentation/git-tools: improve discoverability of Git wiki
  Documentation/git: drop outdated Cogito reference

10 years agoMerge branch 'jk/refspec-parse-wildcard'
Junio C Hamano [Mon, 3 Aug 2015 18:01:31 +0000 (11:01 -0700)]
Merge branch 'jk/refspec-parse-wildcard'

Allow an asterisk as a substring (as opposed to the entirety) of
a path component for both side of a refspec, e.g.
"refs/heads/o*:refs/remotes/heads/i*".

* jk/refspec-parse-wildcard:
  refs: loosen restriction on wildcard "*" refspecs
  refs: cleanup comments regarding check_refname_component()

10 years agoMerge branch 'da/subtree-date-confusion'
Junio C Hamano [Mon, 3 Aug 2015 18:01:31 +0000 (11:01 -0700)]
Merge branch 'da/subtree-date-confusion'

"git subtree" (in contrib/) depended on "git log" output to be
stable, which was a no-no.  Apply a workaround to force a
particular date format.

* da/subtree-date-confusion:
  contrib/subtree: ignore log.date configuration

10 years agoMerge branch 'jx/do-not-crash-receive-pack-wo-head'
Junio C Hamano [Mon, 3 Aug 2015 18:01:31 +0000 (11:01 -0700)]
Merge branch 'jx/do-not-crash-receive-pack-wo-head'

An attempt to delete a ref by pushing into a repositorywhose HEAD
symbolic reference points at an unborn branch that cannot be
created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
points at refs/heads/a) failed.

* jx/do-not-crash-receive-pack-wo-head:
  receive-pack: crash when checking with non-exist HEAD

10 years agoMerge branch 'db/send-pack-user-signingkey'
Junio C Hamano [Mon, 3 Aug 2015 18:01:30 +0000 (11:01 -0700)]
Merge branch 'db/send-pack-user-signingkey'

The low-level "git send-pack" did not honor 'user.signingkey'
configuration variable when sending a signed-push.

* db/send-pack-user-signingkey:
  builtin/send-pack.c: respect user.signingkey

10 years agoMerge branch 'zb/userdiff-fountain'
Junio C Hamano [Mon, 3 Aug 2015 18:01:29 +0000 (11:01 -0700)]
Merge branch 'zb/userdiff-fountain'

New userdiff pattern definition for fountain screenwriting markup
format.

* zb/userdiff-fountain:
  userdiff: add support for Fountain documents

10 years agoMerge branch 'dt/refs-backend-preamble'
Junio C Hamano [Mon, 3 Aug 2015 18:01:29 +0000 (11:01 -0700)]
Merge branch 'dt/refs-backend-preamble'

In preparation for allowing different "backends" to store the refs
in a way different from the traditional "one ref per file in $GIT_DIR
or in a $GIT_DIR/packed-refs file" filesystem storage, reduce
direct filesystem access to ref-like things like CHERRY_PICK_HEAD
from scripts and programs.

* dt/refs-backend-preamble:
  git-stash: use update-ref --create-reflog instead of creating files
  update-ref and tag: add --create-reflog arg
  refs: add REF_FORCE_CREATE_REFLOG flag
  git-reflog: add exists command
  refs: new public ref function: safe_create_reflog
  refs: break out check for reflog autocreation
  refs.c: add err arguments to reflog functions

10 years agoMerge branch 'as/sparse-checkout-removal'
Junio C Hamano [Mon, 3 Aug 2015 18:01:28 +0000 (11:01 -0700)]
Merge branch 'as/sparse-checkout-removal'

"sparse checkout" misbehaved for a path that is excluded from the
checkout when switching between branches that differ at the path.

* as/sparse-checkout-removal:
  unpack-trees: don't update files with CE_WT_REMOVE set

10 years agoMerge branch 'jk/date-mode-format'
Junio C Hamano [Mon, 3 Aug 2015 18:01:27 +0000 (11:01 -0700)]
Merge branch 'jk/date-mode-format'

Teach "git log" and friends a new "--date=format:..." option to
format timestamps using system's strftime(3).

* jk/date-mode-format:
  strbuf: make strbuf_addftime more robust
  introduce "format" date-mode
  convert "enum date_mode" into a struct
  show-branch: use DATE_RELATIVE instead of magic number

10 years agoMerge branch 'pt/am-tests'
Junio C Hamano [Mon, 3 Aug 2015 18:01:26 +0000 (11:01 -0700)]
Merge branch 'pt/am-tests'

* pt/am-tests:
  t3901: test git-am encoding conversion
  t3418: non-interactive rebase --continue with rerere enabled
  t4150: tests for am --[no-]scissors
  t4150: am with post-applypatch hook
  t4150: am with pre-applypatch hook
  t4150: am with applypatch-msg hook
  t4150: am --resolved fails if index has unmerged entries
  t4150: am --resolved fails if index has no changes
  t4150: am refuses patches when paused
  t4151: am --abort will keep dirty index intact
  t4150: am fails if index is dirty
  t4150: am.messageid really adds the message id

10 years agoMerge branch 'sg/bash-prompt-untracked-optim'
Junio C Hamano [Mon, 3 Aug 2015 18:01:26 +0000 (11:01 -0700)]
Merge branch 'sg/bash-prompt-untracked-optim'

Optimize computation of untracked status indicator by bash prompt
script (in contrib/).

* sg/bash-prompt-untracked-optim:
  bash prompt: faster untracked status indicator with untracked directories
  bash prompt: test untracked files status indicator with untracked dirs

10 years agoMerge branch 'cb/uname-in-untracked'
Junio C Hamano [Mon, 3 Aug 2015 18:01:26 +0000 (11:01 -0700)]
Merge branch 'cb/uname-in-untracked'

An experimental "untracked cache" feature used uname(2) in a
slightly unportable way.

* cb/uname-in-untracked:
  untracked: fix detection of uname(2) failure

10 years agoMerge branch 'se/doc-checkout-ours-theirs'
Junio C Hamano [Mon, 3 Aug 2015 18:01:25 +0000 (11:01 -0700)]
Merge branch 'se/doc-checkout-ours-theirs'

A "rebase" replays changes of the local branch on top of something
else, as such they are placed in stage #3 and referred to as
"theirs", while the changes in the new base, typically a foreign
work, are placed in stage #2 and referred to as "ours".  Clarify
the "checkout --ours/--theirs".

* se/doc-checkout-ours-theirs:
  checkout: document subtlety around --ours/--theirs

10 years agoMerge branch 'ib/scripted-parse-opt-better-hint-string'
Junio C Hamano [Mon, 3 Aug 2015 18:01:24 +0000 (11:01 -0700)]
Merge branch 'ib/scripted-parse-opt-better-hint-string'

The "rev-parse --parseopt" mode parsed the option specification
and the argument hint in a strange way to allow '=' and other
special characters in the option name while forbidding them from
the argument hint.  This made it impossible to define an option
like "--pair <key>=<value>" with "pair=key=value" specification,
which instead would have defined a "--pair=key <value>" option.

* ib/scripted-parse-opt-better-hint-string:
  rev-parse --parseopt: allow [*=?!] in argument hints

10 years agoMerge branch 'mh/fast-import-optimize-current-from'
Junio C Hamano [Mon, 3 Aug 2015 18:01:24 +0000 (11:01 -0700)]
Merge branch 'mh/fast-import-optimize-current-from'

Often a fast-import stream builds a new commit on top of the
previous commit it built, and it often unconditionally emits a
"from" command to specify the first parent, which can be omitted in
such a case.  This caused fast-import to forget the tree of the
previous commit and then re-read it from scratch, which was
inefficient.  Optimize for this common case.

* mh/fast-import-optimize-current-from:
  fast-import: do less work when given "from" matches current branch head

10 years agoMerge branch 'kn/tag-doc-fix'
Junio C Hamano [Mon, 3 Aug 2015 18:01:23 +0000 (11:01 -0700)]
Merge branch 'kn/tag-doc-fix'

* kn/tag-doc-fix:
  Documentation/tag: remove double occurance of "<pattern>"

10 years agoMerge branch 'mh/fast-import-get-mark'
Junio C Hamano [Mon, 3 Aug 2015 18:01:23 +0000 (11:01 -0700)]
Merge branch 'mh/fast-import-get-mark'

"git fast-import" learned to respond to the get-mark command via
its cat-blob-fd interface.

* mh/fast-import-get-mark:
  fast-import: add a get-mark command

10 years agoMerge branch 'gr/rebase-i-drop-warn'
Junio C Hamano [Mon, 3 Aug 2015 18:01:22 +0000 (11:01 -0700)]
Merge branch 'gr/rebase-i-drop-warn'

Add "drop commit-object-name subject" command as another way to
skip replaying of a commit in "rebase -i", and then punish those
who do not use it (and instead just remove the lines) by throwing
a warning.

* gr/rebase-i-drop-warn:
  git rebase -i: add static check for commands and SHA-1
  git rebase -i: warn about removed commits
  git-rebase -i: add command "drop" to remove a commit

10 years agoMerge branch 'jc/commit-slab'
Junio C Hamano [Mon, 3 Aug 2015 18:01:21 +0000 (11:01 -0700)]
Merge branch 'jc/commit-slab'

Memory use reduction when commit-slab facility is used to annotate
sparsely (which is not recommended in the first place).

* jc/commit-slab:
  commit-slab: introduce slabname##_peek() function

10 years agoMerge branch 'dt/log-follow-config'
Junio C Hamano [Mon, 3 Aug 2015 18:01:20 +0000 (11:01 -0700)]
Merge branch 'dt/log-follow-config'

Add a new configuration variable to enable "--follow" automatically
when "git log" is run with one pathspec argument.

* dt/log-follow-config:
  log: add "log.follow" configuration variable

10 years agoMerge branch 'gp/status-rebase-i-info'
Junio C Hamano [Mon, 3 Aug 2015 18:01:19 +0000 (11:01 -0700)]
Merge branch 'gp/status-rebase-i-info'

Teach "git status" to show a more detailed information regarding
the "rebase -i" session in progress.

* gp/status-rebase-i-info:
  status: add new tests for status during rebase -i
  status: give more information during rebase -i
  status: differentiate interactive from non-interactive rebases
  status: factor two rebase-related messages together

10 years agoMerge branch 'jk/cat-file-batch-all'
Junio C Hamano [Mon, 3 Aug 2015 18:01:19 +0000 (11:01 -0700)]
Merge branch 'jk/cat-file-batch-all'

"cat-file" learned "--batch-all-objects" option to enumerate all
available objects in the repository more quickly than "rev-list
--all --objects" (the output includes unreachable objects, though).

* jk/cat-file-batch-all:
  cat-file: sort and de-dup output of --batch-all-objects
  cat-file: add --batch-all-objects option
  cat-file: split batch_one_object into two stages
  cat-file: stop returning value from batch_one_object
  cat-file: add --buffer option
  cat-file: move batch_options definition to top of file
  cat-file: minor style fix in options list

10 years agoMerge branch 'js/fsck-opt'
Junio C Hamano [Mon, 3 Aug 2015 18:01:18 +0000 (11:01 -0700)]
Merge branch 'js/fsck-opt'

Allow ignoring fsck errors on specific set of known-to-be-bad
objects, and also tweaking warning level of various kinds of non
critical breakages reported.

* js/fsck-opt:
  fsck: support ignoring objects in `git fsck` via fsck.skiplist
  fsck: git receive-pack: support excluding objects from fsck'ing
  fsck: introduce `git fsck --connectivity-only`
  fsck: support demoting errors to warnings
  fsck: document the new receive.fsck.<msg-id> options
  fsck: allow upgrading fsck warnings to errors
  fsck: optionally ignore specific fsck issues completely
  fsck: disallow demoting grave fsck errors to warnings
  fsck: add a simple test for receive.fsck.<msg-id>
  fsck: make fsck_tag() warn-friendly
  fsck: handle multiple authors in commits specially
  fsck: make fsck_commit() warn-friendly
  fsck: make fsck_ident() warn-friendly
  fsck: report the ID of the error/warning
  fsck (receive-pack): allow demoting errors to warnings
  fsck: offer a function to demote fsck errors to warnings
  fsck: provide a function to parse fsck message IDs
  fsck: introduce identifiers for fsck messages
  fsck: introduce fsck options

10 years agoMerge branch 'mh/init-delete-refs-api'
Junio C Hamano [Mon, 3 Aug 2015 18:01:17 +0000 (11:01 -0700)]
Merge branch 'mh/init-delete-refs-api'

Clean up refs API and make "git clone" less intimate with the
implementation detail.

* mh/init-delete-refs-api:
  delete_ref(): use the usual convention for old_sha1
  cmd_update_ref(): make logic more straightforward
  update_ref(): don't read old reference value before delete
  check_branch_commit(): make first parameter const
  refs.h: add some parameter names to function declarations
  refs: move the remaining ref module declarations to refs.h
  initial_ref_transaction_commit(): check for ref D/F conflicts
  initial_ref_transaction_commit(): check for duplicate refs
  refs: remove some functions from the module's public interface
  initial_ref_transaction_commit(): function for initial ref creation
  repack_without_refs(): make function private
  prune_refs(): use delete_refs()
  prune_remote(): use delete_refs()
  delete_refs(): bail early if the packed-refs file cannot be rewritten
  delete_refs(): make error message more generic
  delete_refs(): new function for the refs API
  delete_ref(): handle special case more explicitly
  remove_branches(): remove temporary
  delete_ref(): move declaration to refs.h

10 years agoMerge branch 'pt/pull-builtin'
Junio C Hamano [Mon, 3 Aug 2015 18:01:17 +0000 (11:01 -0700)]
Merge branch 'pt/pull-builtin'

Reimplement 'git pull' in C.

* pt/pull-builtin:
  pull: remove redirection to git-pull.sh
  pull --rebase: error on no merge candidate cases
  pull --rebase: exit early when the working directory is dirty
  pull: configure --rebase via branch.<name>.rebase or pull.rebase
  pull: teach git pull about --rebase
  pull: set reflog message
  pull: implement pulling into an unborn branch
  pull: fast-forward working tree if head is updated
  pull: check if in unresolved merge state
  pull: support pull.ff config
  pull: error on no merge candidates
  pull: pass git-fetch's options to git-fetch
  pull: pass git-merge's options to git-merge
  pull: pass verbosity, --progress flags to fetch and merge
  pull: implement fetch + merge
  pull: implement skeletal builtin pull
  argv-array: implement argv_array_pushv()
  parse-options-cb: implement parse_opt_passthru_argv()
  parse-options-cb: implement parse_opt_passthru()

10 years agoMerge branch 'jk/pkt-log-pack'
Junio C Hamano [Mon, 3 Aug 2015 18:01:16 +0000 (11:01 -0700)]
Merge branch 'jk/pkt-log-pack'

Enhance packet tracing machinery to allow capturing an incoming
pack data to a file for debugging.

* jk/pkt-log-pack:
  pkt-line: support tracing verbatim pack contents
  pkt-line: tighten sideband PACK check when tracing
  pkt-line: simplify starts_with checks in packet tracing

10 years agoMerge branch 'mr/rebase-i-customize-insn-sheet'
Junio C Hamano [Mon, 3 Aug 2015 18:01:16 +0000 (11:01 -0700)]
Merge branch 'mr/rebase-i-customize-insn-sheet'

"git rebase -i"'s list of todo is made configurable.

* mr/rebase-i-customize-insn-sheet:
  git-rebase--interactive.sh: add config option for custom instruction format

10 years agoMerge branch 'rl/send-email-aliases'
Junio C Hamano [Mon, 3 Aug 2015 18:01:15 +0000 (11:01 -0700)]
Merge branch 'rl/send-email-aliases'

"git send-email" now performs alias-expansion on names that are
given via --cccmd, etc.

This round comes with a lot more enhanced e-mail address parser,
which makes it a bit scary, but as long as it works as designed, it
makes it wonderful ;-).

* rl/send-email-aliases:
  send-email: suppress meaningless whitespaces in from field
  send-email: allow multiple emails using --cc, --to and --bcc
  send-email: consider quote as delimiter instead of character
  send-email: reduce dependencies impact on parse_address_line
  send-email: minor code refactoring
  send-email: allow use of aliases in the From field of --compose mode
  send-email: refactor address list process
  t9001-send-email: refactor header variable fields replacement
  send-email: allow aliases in patch header and command script outputs
  t9001-send-email: move script creation in a setup test

10 years agoMerge branch 'kb/i18n-doc'
Junio C Hamano [Mon, 3 Aug 2015 18:01:15 +0000 (11:01 -0700)]
Merge branch 'kb/i18n-doc'

* kb/i18n-doc:
  Documentation/i18n.txt: clarify character encoding support

10 years agoMerge branch 'nd/export-worktree'
Junio C Hamano [Mon, 3 Aug 2015 18:01:14 +0000 (11:01 -0700)]
Merge branch 'nd/export-worktree'

Running an aliased command from a subdirectory when the .git thing
in the working tree is a gitfile pointing elsewhere did not work.

* nd/export-worktree:
  setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR

10 years agoMerge branch 'ee/clean-remove-dirs'
Junio C Hamano [Mon, 3 Aug 2015 18:01:13 +0000 (11:01 -0700)]
Merge branch 'ee/clean-remove-dirs'

Replace "is this subdirectory a separate repository that should not
be touched?" check "git clean" does by checking if it has .git/HEAD
using the submodule-related code with a more optimized check.

* ee/clean-remove-dirs:
  read_gitfile_gently: fix use-after-free
  clean: improve performance when removing lots of directories
  p7300: add performance tests for clean
  t7300: add tests to document behavior of clean and nested git
  setup: sanity check file size in read_gitfile_gently
  setup: add gentle version of read_gitfile

10 years agoMerge branch 'cb/parse-magnitude'
Junio C Hamano [Mon, 3 Aug 2015 18:01:13 +0000 (11:01 -0700)]
Merge branch 'cb/parse-magnitude'

Move machinery to parse human-readable scaled numbers like 1k, 4M,
and 2G as an option parameter's value from pack-objects to
parse-options API, to make it available to other codepaths.

* cb/parse-magnitude:
  parse-options: move unsigned long option parsing out of pack-objects.c
  test-parse-options: update to handle negative ints

10 years agoMerge branch 'bc/gpg-verify-raw'
Junio C Hamano [Mon, 3 Aug 2015 18:01:12 +0000 (11:01 -0700)]
Merge branch 'bc/gpg-verify-raw'

"git verify-tag" and "git verify-commit" have been taught to share
more code, and then learned to optionally show the verification
message from the underlying GPG implementation.

* bc/gpg-verify-raw:
  verify-tag: add option to print raw gpg status information
  verify-commit: add option to print raw gpg status information
  gpg: centralize printing signature buffers
  gpg: centralize signature check
  verify-commit: add test for exit status on untrusted signature
  verify-tag: share code with verify-commit
  verify-tag: add tests

10 years agoMerge branch 'pt/am-foreign'
Junio C Hamano [Mon, 3 Aug 2015 18:01:12 +0000 (11:01 -0700)]
Merge branch 'pt/am-foreign'

Various enhancements around "git am" reading patches generated by
foreign SCM.

* pt/am-foreign:
  am: teach mercurial patch parser how to read from stdin
  am: use gmtime() to parse mercurial patch date
  t4150: test applying StGit series
  am: teach StGit patch parser how to read from stdin
  t4150: test applying StGit patch

10 years agoMerge branch 'kn/for-each-ref'
Junio C Hamano [Mon, 3 Aug 2015 18:01:10 +0000 (11:01 -0700)]
Merge branch 'kn/for-each-ref'

GSoC project to rebuild ref listing by branch and tag based on the
for-each-ref machinery.  This is its first part.

* kn/for-each-ref:
  ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
  for-each-ref: introduce filter_refs()
  ref-filter: move code from 'for-each-ref'
  ref-filter: add 'ref-filter.h'
  for-each-ref: rename variables called sort to sorting
  for-each-ref: rename some functions and make them public
  for-each-ref: introduce 'ref_array_clear()'
  for-each-ref: introduce new structures for better organisation
  for-each-ref: rename 'refinfo' to 'ref_array_item'
  for-each-ref: clean up code
  for-each-ref: extract helper functions out of grab_single_ref()

10 years agoMerge branch 'mh/replace-refs'
Junio C Hamano [Mon, 3 Aug 2015 18:01:10 +0000 (11:01 -0700)]
Merge branch 'mh/replace-refs'

Add an environment variable to tell Git to look into refs hierarchy
other than refs/replace/ for the object replacement data.

* mh/replace-refs:
  Allow to control where the replace refs are looked for

10 years agoSync with 2.4.8
Junio C Hamano [Mon, 3 Aug 2015 17:45:34 +0000 (10:45 -0700)]
Sync with 2.4.8

Signed-off-by: Junio C Hamano <redacted>
10 years agoGit 2.4.8
Junio C Hamano [Mon, 3 Aug 2015 17:40:37 +0000 (10:40 -0700)]
Git 2.4.8

Signed-off-by: Junio C Hamano <redacted>
10 years agoMerge branch 'js/rebase-i-clean-up-upon-continue-to-skip' into maint
Junio C Hamano [Mon, 3 Aug 2015 17:41:34 +0000 (10:41 -0700)]
Merge branch 'js/rebase-i-clean-up-upon-continue-to-skip' into maint

Abandoning an already applied change in "git rebase -i" with
"--continue" left CHERRY_PICK_HEAD and confused later steps.

* js/rebase-i-clean-up-upon-continue-to-skip:
  rebase -i: do not leave a CHERRY_PICK_HEAD file behind
  t3404: demonstrate CHERRY_PICK_HEAD bug

10 years agoMerge branch 'ss/clone-guess-dir-name-simplify' into maint
Junio C Hamano [Mon, 3 Aug 2015 17:41:33 +0000 (10:41 -0700)]
Merge branch 'ss/clone-guess-dir-name-simplify' into maint

Code simplification.

* ss/clone-guess-dir-name-simplify:
  clone: simplify string handling in guess_dir_name()

10 years agoMerge branch 'sg/completion-commit-cleanup' into maint
Junio C Hamano [Mon, 3 Aug 2015 17:41:33 +0000 (10:41 -0700)]
Merge branch 'sg/completion-commit-cleanup' into maint

* sg/completion-commit-cleanup:
  completion: teach 'scissors' mode to 'git commit --cleanup='

10 years agoMerge branch 'pt/am-abort-fix' into maint
Junio C Hamano [Mon, 3 Aug 2015 17:41:32 +0000 (10:41 -0700)]
Merge branch 'pt/am-abort-fix' into maint

Various fixes around "git am" that applies a patch to a history
that is not there yet.

* pt/am-abort-fix:
  am --abort: keep unrelated commits on unborn branch
  am --abort: support aborting to unborn branch
  am --abort: revert changes introduced by failed 3way merge
  am --skip: support skipping while on unborn branch
  am -3: support 3way merge on unborn branch
  am --skip: revert changes introduced by failed 3way merge

10 years agoMerge branch 'mh/reporting-broken-refs-from-for-each-ref' into maint
Junio C Hamano [Mon, 3 Aug 2015 17:41:31 +0000 (10:41 -0700)]
Merge branch 'mh/reporting-broken-refs-from-for-each-ref' into maint

"git for-each-ref" reported "missing object" for 0{40} when it
encounters a broken ref.  The lack of object whose name is 0{40} is
not the problem; the ref being broken is.

* mh/reporting-broken-refs-from-for-each-ref:
  read_loose_refs(): treat NULL_SHA1 loose references as broken
  read_loose_refs(): simplify function logic
  for-each-ref: report broken references correctly
  t6301: new tests of for-each-ref error handling

10 years agoMerge branch 'sg/commit-cleanup-scissors' into maint
Junio C Hamano [Mon, 3 Aug 2015 17:41:30 +0000 (10:41 -0700)]
Merge branch 'sg/commit-cleanup-scissors' into maint

"git commit --cleanup=scissors" was not careful enough to protect
against getting fooled by a line that looked like scissors.

* sg/commit-cleanup-scissors:
  commit: cope with scissors lines in commit message

10 years agofor-each-ref: add '--contains' option
Karthik Nayak [Tue, 7 Jul 2015 16:06:17 +0000 (21:36 +0530)]
for-each-ref: add '--contains' option

Add the '--contains' option provided by 'ref-filter'. The '--contains'
option lists only refs which contain the mentioned commit (HEAD if no
commit is explicitly given).

Add documentation and tests for the same.

Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoref-filter: implement '--contains' option
Karthik Nayak [Tue, 7 Jul 2015 16:06:16 +0000 (21:36 +0530)]
ref-filter: implement '--contains' option

'tag -l' and 'branch -l' have two different ways of finding
out if a certain ref contains a commit. Implement both these
methods in ref-filter and give the caller of ref-filter API
the option to pick which implementation to be used.

'branch -l' uses 'is_descendant_of()' from commit.c which is
left as the default implementation to be used.

'tag -l' uses a more specific algorithm since ffc4b80. This
implementation is used whenever the 'with_commit_tag_algo' bit
is set in 'struct ref_filter'.

Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoparse-options.h: add macros for '--contains' option
Karthik Nayak [Tue, 7 Jul 2015 16:06:15 +0000 (21:36 +0530)]
parse-options.h: add macros for '--contains' option

Add a macro for using the '--contains' option in parse-options.h
also include an optional '--with' option macro which performs the
same action as '--contains'.

Make tag.c and branch.c use this new macro.

Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoparse-option: rename parse_opt_with_commit()
Karthik Nayak [Tue, 7 Jul 2015 16:06:14 +0000 (21:36 +0530)]
parse-option: rename parse_opt_with_commit()

Rename parse_opt_with_commit() to parse_opt_commits() to show
that it can be used to obtain a list of commits and is not
constricted to usage of '--contains' option.

Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agofor-each-ref: add '--merged' and '--no-merged' options
Karthik Nayak [Tue, 7 Jul 2015 16:06:13 +0000 (21:36 +0530)]
for-each-ref: add '--merged' and '--no-merged' options

Add the '--merged' and '--no-merged' options provided by 'ref-filter'.
The '--merged' option lets the user to only list refs merged into the
named commit. The '--no-merged' option lets the user to only list refs
not merged into the named commit.

Add documentation and tests for the same.

Based-on-patch-by: Jeff King <redacted>
Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoref-filter: implement '--merged' and '--no-merged' options
Karthik Nayak [Tue, 7 Jul 2015 16:06:12 +0000 (21:36 +0530)]
ref-filter: implement '--merged' and '--no-merged' options

In 'branch -l' we have '--merged' option which only lists refs (branches)
merged into the named commit and '--no-merged' option which only lists
refs (branches) not merged into the named commit. Implement these two
options in ref-filter.{c,h} so that other commands can benefit from this.

Based-on-patch-by: Jeff King <redacted>
Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoref-filter: add parse_opt_merge_filter()
Karthik Nayak [Tue, 7 Jul 2015 16:06:11 +0000 (21:36 +0530)]
ref-filter: add parse_opt_merge_filter()

Add 'parse_opt_merge_filter()' to parse '--merged' and '--no-merged'
options and write macros for the same.

This is copied from 'builtin/branch.c' which will eventually be removed
when we port 'branch.c' to use ref-filter APIs.

Based-on-patch-by: Jeff King <redacted>
Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agofor-each-ref: add '--points-at' option
Karthik Nayak [Tue, 7 Jul 2015 16:06:10 +0000 (21:36 +0530)]
for-each-ref: add '--points-at' option

Add the '--points-at' option provided by 'ref-filter'. The
option lets the user to list only refs which points at the
given object.

Add documentation and tests for the same.

Based-on-patch-by: Jeff King <redacted>
Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoref-filter: implement '--points-at' option
Karthik Nayak [Tue, 7 Jul 2015 16:06:09 +0000 (21:36 +0530)]
ref-filter: implement '--points-at' option

In 'tag -l' we have '--points-at' option which lets users
list only tags of a given object. Implement this option in
'ref-filter.{c,h}' so that other commands can benefit from this.

This is duplicated from tag.c, we will eventually remove that
when we port tag.c to use ref-filter APIs.

Based-on-patch-by: Jeff King <redacted>
Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agotag: libify parse_opt_points_at()
Karthik Nayak [Tue, 7 Jul 2015 16:06:08 +0000 (21:36 +0530)]
tag: libify parse_opt_points_at()

Rename 'parse_opt_points_at()' to 'parse_opt_object_name()' and
move it from 'tag.c' to 'parse-options'. This now acts as a common
parse_opt function which accepts an objectname and stores it into
a sha1_array.

Based-on-patch-by: Jeff King <redacted>
Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agot6302: for-each-ref tests for ref-filter APIs
Karthik Nayak [Thu, 9 Jul 2015 06:03:21 +0000 (11:33 +0530)]
t6302: for-each-ref tests for ref-filter APIs

Add a test suite for testing the ref-filter APIs used
by for-each-ref. We just intialize the test suite for now.
More tests will be added in the following patches as more
options are added to for-each-ref.

Based-on-patch-by: Jeff King <redacted>
Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
Karthik Nayak [Sat, 13 Jun 2015 19:37:29 +0000 (01:07 +0530)]
ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname

This would remove the need of using a pointer to store refname.

Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agofor-each-ref: introduce filter_refs()
Karthik Nayak [Sat, 13 Jun 2015 19:37:28 +0000 (01:07 +0530)]
for-each-ref: introduce filter_refs()

Introduce filter_refs() which will act as an API for filtering
a set of refs. Based on the type of refs the user has requested,
we iterate through those refs and apply filters as per the
given ref_filter structure and finally store the filtered refs
in the ref_array structure.

Currently this will wrap around ref_filter_handler(). Hence,
ref_filter_handler is made file scope static.

As users of this API will no longer send a ref_filter_cbdata
structure directly, we make the elements of ref_filter_cbdata
pointers. We can now use the information given by the users
to obtain our own ref_filter_cbdata structure. Changes are made to
support the change in ref_filter_cbdata structure.

Make 'for-each-ref' use this API.

Helped-by: Junio C Hamano <redacted>
Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoref-filter: move code from 'for-each-ref'
Karthik Nayak [Sat, 13 Jun 2015 19:37:27 +0000 (01:07 +0530)]
ref-filter: move code from 'for-each-ref'

Move most of the code from 'for-each-ref' to 'ref-filter' to make
it publicly available to other commands, this is to unify the code
of 'tag -l', 'branch -l' and 'for-each-ref' so that they can share
their implementations with each other.

Add 'ref-filter' to the Makefile, this completes the movement of code
from 'for-each-ref' to 'ref-filter'.

Mentored-by: Christian Couder <redacted>
Mentored-by: Matthieu Moy <redacted>
Signed-off-by: Karthik Nayak <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agol10n: TEAMS: stash inactive zh_CN team members
Jiang Xin [Mon, 3 Aug 2015 16:33:16 +0000 (00:33 +0800)]
l10n: TEAMS: stash inactive zh_CN team members

Add Ray Chen as member of zh_CN l10n team member, and move other
inactive zh_CN l10n team members to the header of zh_CN.po.

Signed-off-by: Jiang Xin <redacted>
10 years agountracked-cache: support sparse checkout
David Turner [Fri, 31 Jul 2015 17:35:01 +0000 (13:35 -0400)]
untracked-cache: support sparse checkout

Remove a check that would disable the untracked cache for sparse
checkouts.  Add tests that ensure that the untracked cache works with
sparse checkouts -- specifically considering the case that a file
foo/bar is checked out, but foo/.gitignore is not.

Signed-off-by: David Turner <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agosequencer: replace write_cherry_pick_head with update_ref
David Turner [Fri, 31 Jul 2015 06:06:21 +0000 (02:06 -0400)]
sequencer: replace write_cherry_pick_head with update_ref

Now update_ref (via write_pseudoref) does almost exactly what
write_cherry_pick_head did, so we can remove write_cherry_pick_head
and just use update_ref.

Signed-off-by: David Turner <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agobisect: use update_ref
David Turner [Fri, 31 Jul 2015 06:06:20 +0000 (02:06 -0400)]
bisect: use update_ref

Instead of manually writing a pseudoref (in one case) and shelling out
to git update-ref (in another), use the update_ref function.  This
is much simpler.

Signed-off-by: David Turner <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agopseudorefs: create and use pseudoref update and delete functions
David Turner [Fri, 31 Jul 2015 06:06:19 +0000 (02:06 -0400)]
pseudorefs: create and use pseudoref update and delete functions

Pseudorefs should not be updated through the ref transaction
API, because alternate ref backends still need to store pseudorefs
in GIT_DIR (instead of wherever they store refs).  Instead,
change update_ref and delete_ref to call pseudoref-specific
functions.

Signed-off-by: David Turner <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agorefs: add ref_type function
David Turner [Fri, 31 Jul 2015 06:06:18 +0000 (02:06 -0400)]
refs: add ref_type function

Add a function ref_type, which categorizes refs as per-worktree,
pseudoref, or normal ref.

Later, we will use this in refs.c to treat pseudorefs specially.
Alternate ref backends may use it to treat both pseudorefs and
per-worktree refs differently.

Signed-off-by: David Turner <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agorefs: introduce pseudoref and per-worktree ref concepts
David Turner [Fri, 31 Jul 2015 06:06:17 +0000 (02:06 -0400)]
refs: introduce pseudoref and per-worktree ref concepts

Add glossary entries for both concepts.

Pseudorefs and per-worktree refs do not yet have special handling,
because the files refs backend already handles them correctly.  Later,
we will make the LMDB backend call out to the files backend to handle
per-worktree refs.

Signed-off-by: David Turner <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoadd: remove dead code
Stefan Beller [Fri, 31 Jul 2015 00:19:16 +0000 (17:19 -0700)]
add: remove dead code

Signed-off-by: Stefan Beller <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agopull.sh: quote $upload_pack when passing it to git-fetch
Matthieu Moy [Thu, 30 Jul 2015 20:40:03 +0000 (22:40 +0200)]
pull.sh: quote $upload_pack when passing it to git-fetch

The previous code broke for example

  git pull --upload-pack 'echo --foo'

Reported-by: Joey Hess <redacted>
Fix-suggested-by: Junio C Hamano <redacted>
Signed-off-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agol10n: zh_CN: Update Translation of "tag"
Ray Chen [Tue, 28 Jul 2015 04:52:28 +0000 (12:52 +0800)]
l10n: zh_CN: Update Translation of "tag"

- "tag" translated as "标签".
- "annotated tag" translated as "附注标签".
- "mergetag" translated as "合并标签".
- "tag name" translated as "标签名称".
- Relevant adjustments.

Signed-off-by: Ray Chen <redacted>
Signed-off-by: Jiang Xin <redacted>
10 years agoparse-options: align curly braces for all options
Stefan Beller [Wed, 29 Jul 2015 20:18:37 +0000 (13:18 -0700)]
parse-options: align curly braces for all options

Signed-off-by: Stefan Beller <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoget_remote_group(): use skip_prefix()
Michael Haggerty [Tue, 28 Jul 2015 21:08:21 +0000 (23:08 +0200)]
get_remote_group(): use skip_prefix()

Signed-off-by: Michael Haggerty <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoget_remote_group(): eliminate superfluous call to strcspn()
Michael Haggerty [Tue, 28 Jul 2015 21:08:20 +0000 (23:08 +0200)]
get_remote_group(): eliminate superfluous call to strcspn()

There is no need to call it if value is the empty string. This also
eliminates code duplication.

Signed-off-by: Michael Haggerty <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoget_remote_group(): rename local variable "space" to "wordlen"
Michael Haggerty [Tue, 28 Jul 2015 21:08:19 +0000 (23:08 +0200)]
get_remote_group(): rename local variable "space" to "wordlen"

Signed-off-by: Michael Haggerty <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoget_remote_group(): handle remotes with single-character names
Michael Haggerty [Tue, 28 Jul 2015 21:08:18 +0000 (23:08 +0200)]
get_remote_group(): handle remotes with single-character names

The code for splitting a whitespace-separated list of values in
"remotes.<name>" had an off-by-one error that caused it to skip over
remotes whose names consist of a single character.

Also remove unnecessary braces.

Signed-off-by: Michael Haggerty <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agounpack-trees: populate cache-tree on successful merge
Brian Degenhardt [Tue, 28 Jul 2015 19:30:40 +0000 (15:30 -0400)]
unpack-trees: populate cache-tree on successful merge

When we unpack trees into an existing index, we discard the old
index and replace it with the new, merged index.  Ensure that this
index has its cache-tree populated.  This will make subsequent git
status and commit commands faster.

Signed-off-by: Brian Degenhardt <redacted>
Signed-off-by: David Turner <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoDocumentation/config: mention "now" and "never" for 'expire' settings
Eric Sunshine [Tue, 28 Jul 2015 20:06:10 +0000 (16:06 -0400)]
Documentation/config: mention "now" and "never" for 'expire' settings

In addition to approxidate-style values ("2.months.ago", "yesterday"),
consumers of 'gc.*expire*' configuration variables also accept and
respect 'now' ("do it immediately") and 'never' ("suppress entirely").

Suggested-by: Michael Haggerty <redacted>
Signed-off-by: Eric Sunshine <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoDocumentation/git-tools: retire manually-maintained list
Eric Sunshine [Tue, 28 Jul 2015 20:06:15 +0000 (16:06 -0400)]
Documentation/git-tools: retire manually-maintained list

When Git was young, people looking for third-party Git-related tools
came to the Git project itself to find them, so it made sense to
maintain a list of tools here. These days, however, search engines fill
that role much more efficiently, so retire the manually-maintained
list.

The list of front-ends and tools on the Git wiki rates perhaps a distant
second to search engines, and may still have value, so retain a
reference to it.

Signed-off-by: Eric Sunshine <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoDocumentation/git-tools: drop references to defunct tools
Eric Sunshine [Tue, 28 Jul 2015 20:06:14 +0000 (16:06 -0400)]
Documentation/git-tools: drop references to defunct tools

Cogito -- unmaintained since late 2006[1]
pg -- URL dead; web searches reveal no information
quilt2git -- URL dead; web searches reveal no information
(h)gct -- URL dead; no repository activity since 2007[2]

[1]: http://git.or.cz/cogito/
[2]: http://repo.or.cz/w/hgct.git

Signed-off-by: Eric Sunshine <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoDocumentation/git-tools: fix item text formatting
Eric Sunshine [Tue, 28 Jul 2015 20:06:13 +0000 (16:06 -0400)]
Documentation/git-tools: fix item text formatting

Descriptive text for each tool item is incorrectly formatted using a
fixed width font. Fix formatting to use a variable width font by
unindenting the item text.

Signed-off-by: Eric Sunshine <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agoDocumentation/git-tools: improve discoverability of Git wiki
Eric Sunshine [Tue, 28 Jul 2015 20:06:12 +0000 (16:06 -0400)]
Documentation/git-tools: improve discoverability of Git wiki

These days, the best way to find Git-related tools is via a search
engine. The Git wiki may be a distant second, and git-tools.txt falls in
last place. Therefore, promote the Git wiki reference to the top of
git-tools.txt so the reader will encounter it first, rather than hiding
it away at the very bottom.

Signed-off-by: Eric Sunshine <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agodocs/config.txt: reorder hideRefs config
Jeff King [Tue, 28 Jul 2015 19:59:11 +0000 (15:59 -0400)]
docs/config.txt: reorder hideRefs config

The descriptions for receive.hideRefs and
uploadpack.hideRefs are largely the same, and then
transfer.hideRefs refers to both of them. Instead, let's
make transfer.hideRefs the "master" source, and refer to it
from the other sites (with appropriate program-specific
annotations).

This avoids duplication, and will make it easier to document
changes to the config option without having to copy and
paste the description in two places.

While we're at it, this fixes some bogus subject/verb
agreement in the original description.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agotests: remove some direct access to .git/logs
David Turner [Mon, 27 Jul 2015 22:57:08 +0000 (18:57 -0400)]
tests: remove some direct access to .git/logs

Alternate refs backends might store reflogs somewhere other than
.git/logs.  Change most test code that directly accesses .git/logs to
instead use git reflog commands.

There are still a few tests which need direct access to reflogs: to
check reflog permissions, to manually create reflogs from scratch, to
save/restore reflogs, to check the format of raw reflog data, and to
remove not just reflog contents, but the reflogs themselves. All cases
which don't need direct access have been modified.

Signed-off-by: David Turner <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agot/t7509: remove unnecessary manipulation of reflog
David Turner [Mon, 27 Jul 2015 22:57:07 +0000 (18:57 -0400)]
t/t7509: remove unnecessary manipulation of reflog

Remove unnecessary reflog manipulation.  The test does not rely in any
way on this reflog manipulation, and the case that the test
exercises is unrelated to reflogs.

Signed-off-by: David Turner <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agotypofix for index-format.txt
Thomas Ackermann [Tue, 28 Jul 2015 17:45:14 +0000 (19:45 +0200)]
typofix for index-format.txt

Signed-off-by: Thomas Ackermann <redacted>
Signed-off-by: Junio C Hamano <redacted>
10 years agol10n: zh_CN: Unify Translation of "packfile"
Ray Chen [Tue, 28 Jul 2015 05:26:41 +0000 (13:26 +0800)]
l10n: zh_CN: Unify Translation of "packfile"

Signed-off-by: Ray Chen <redacted>
git clone https://git.99rst.org/PROJECT