summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-03-13Merge branch 'jc/reflog-reverse-walk' into nd/branch-show-rebase-bisect-stateLibravatar Junio C Hamano3-77/+134
* jc/reflog-reverse-walk: reflog: add for_each_reflog_ent_reverse() API for_each_recent_reflog_ent(): simplify opening of a reflog file for_each_reflog_ent(): extract a helper to process a single entry
2013-03-08reflog: add for_each_reflog_ent_reverse() APILibravatar Junio C Hamano3-47/+105
"git checkout -" is a short-hand for "git checkout @{-1}" and the "@{nth}" notation for a negative number is to find nth previous checkout in the reflog of the HEAD to determine the name of the branch the user was on. We would want to find the nth most recent reflog entry that matches "checkout: moving from X to Y" for this. Unfortunately, reflog is implemented as an append-only file, and the API to iterate over its entries, for_each_reflog_ent(), reads the file in order, giving the entries from the oldest to newer. For the purpose of finding nth most recent one, this API forces us to record the last n entries in a rotating buffer and give the result out only after we read everything. To optimize for a common case of finding the nth most recent one for a small value of n, we also have a side API for_each_recent_reflog_ent() that starts reading near the end of the file, but it still has to read the entries in the "wrong" order. The implementation of understanding @{-1} uses this interface. This all becomes unnecessary if we add an API to let us iterate over reflog entries in the reverse order, from the newest to older. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-03-08for_each_recent_reflog_ent(): simplify opening of a reflog fileLibravatar Junio C Hamano1-3/+1
There is no reason to use a temporary variable logfile. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-03-08for_each_reflog_ent(): extract a helper to process a single entryLibravatar Junio C Hamano1-29/+30
Split the logic that takes a single line of reflog entry in a strbuf, parses the message, and calls the callback function out of the loop into a separate helper function. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-02-05status: show the branch name if possible in in-progress infoLibravatar Nguyễn Thái Ngọc Duy3-41/+142
The typical use-case is starting a rebase, do something else, come back the day after, run "git status" or make a new commit and wonder what in the world's going on. Which branch is being rebased is probably the most useful tidbit to help, but the target may help too. Ideally, I would have loved to see "rebasing master on origin/master", but the target ref name is not stored during rebase, so this patch writes "rebasing master on a78c8c98b" as a half-measure to remind future users of that potential improvement. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-02-01Update draft release notes to 1.8.2Libravatar Junio C Hamano1-1/+41
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-02-01Merge branch 'nd/edit-branch-desc-while-detached'Libravatar Junio C Hamano1-4/+4
Attempt to "branch --edit-description" an existing branch, while being on a detached HEAD, errored out. * nd/edit-branch-desc-while-detached: branch: no detached HEAD check when editing another branch's description
2013-02-01Merge branch 'jk/gc-auto-after-fetch'Libravatar Junio C Hamano2-0/+8
Help "fetch only" repositories that do not trigger "gc --auto" often enough. * jk/gc-auto-after-fetch: fetch-pack: avoid repeatedly re-scanning pack directory fetch: run gc --auto after fetching
2013-02-01Merge branch 'bc/git-p4-for-python-2.4'Libravatar Junio C Hamano3-11/+35
With small updates to remove dependency on newer features of Python, keep git-p4 usable with older Python. * bc/git-p4-for-python-2.4: INSTALL: git-p4 does not support Python 3 git-p4.py: support Python 2.4 git-p4.py: support Python 2.5
2013-02-01Merge branch 'jn/do-not-drop-username-when-reading-from-etc-mailname'Libravatar Junio C Hamano1-1/+5
We used to stuff "user@" and then append what we read from /etc/mailname to come up with a default e-mail ident, but a bug lost the "user@" part. This is to fix it. * jn/do-not-drop-username-when-reading-from-etc-mailname: ident: do not drop username when reading from /etc/mailname
2013-02-01Merge branch 'jk/cvsimport-does-not-work-with-cvsps3'Libravatar Junio C Hamano1-0/+6
Warn people that other tools are more recommendable over cvsimport+cvsps2 combo when doing a one-shot import, and cvsimport will not work with cvsps3. * jk/cvsimport-does-not-work-with-cvsps3: git-cvsimport.txt: cvsps-2 is deprecated
2013-02-01Merge branch 'jc/do-not-let-random-file-interfere-with-completion-tests'Libravatar Junio C Hamano2-2/+34
Scripts to test bash completion was inherently flaky as it was affected by whatever random things the user may have on $PATH. * jc/do-not-let-random-file-interfere-with-completion-tests: t9902: protect test from stray build artifacts
2013-02-01Merge branch 'as/test-cleanup'Libravatar Junio C Hamano1-20/+21
* as/test-cleanup: t7102 (reset): don't hardcode SHA-1 in expected outputs
2013-02-01Merge branch 'jc/no-git-config-in-clone'Libravatar Junio C Hamano1-9/+0
We stopped paying attention to $GIT_CONFIG environment that points at a single configuration file from any command other than "git config" quite a while ago, but "git clone" internally set, exported, and then unexported the variable during its operation unnecessarily. * jc/no-git-config-in-clone: clone: do not export and unexport GIT_CONFIG
2013-02-01Merge branch 'nd/fetch-depth-is-broken'Libravatar Junio C Hamano8-12/+85
"git fetch --depth" was broken in at least three ways. The resulting history was deeper than specified by one commit, it was unclear how to wipe the shallowness of the repository with the command, and documentation was misleading. * nd/fetch-depth-is-broken: fetch: elaborate --depth action upload-pack: fix off-by-one depth calculation in shallow clone fetch: add --unshallow for turning shallow repo into complete one
2013-01-30Merge git://ozlabs.org/~paulus/gitkLibravatar Junio C Hamano2-2/+16
* git://ozlabs.org/~paulus/gitk: gitk: Ignore gitk-wish buildproduct
2013-01-30INSTALL: git-p4 does not support Python 3Libravatar Junio C Hamano1-2/+3
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-30branch: no detached HEAD check when editing another branch's descriptionLibravatar Nguyễn Thái Ngọc Duy1-4/+4
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-30Merge branch 'rr/minimal-stat'Libravatar Junio C Hamano5-10/+28
Some reimplementations of Git does not write all the stat info back to the index due to their implementation limitations (e.g. jgit running on Java). A configuration option can tell Git to ignore changes to most of the stat fields and only pay attention to mtime and size, which these implementations can reliably update. This avoids excessive revalidation of contents. * rr/minimal-stat: Enable minimal stat checking
2013-01-30Merge branch 'nd/magic-pathspec-from-root'Libravatar Junio C Hamano3-3/+25
When giving arguments without "--" disambiguation, object names that come earlier on the command line must not be interpretable as pathspecs and pathspecs that come later on the command line must not be interpretable as object names. Tweak the disambiguation rule so that ":/" (no other string before or after) is always interpreted as a pathspec, to avoid having to say "git cmd -- :/". * nd/magic-pathspec-from-root: grep: avoid accepting ambiguous revision Update :/abc ambiguity check
2013-01-30Merge branch 'maint'Libravatar Junio C Hamano1-8/+7
* maint: README: update stale and/or incorrect information
2013-01-30Merge branch 'tb/t0050-maint' into maintLibravatar Junio C Hamano1-35/+17
Update tests that were expecting to fail due to a bug that was fixed earlier. * tb/t0050-maint: t0050: Use TAB for indentation t0050: honor CASE_INSENSITIVE_FS in add (with different case) t0050: known breakage vanished in merge (case change)
2013-01-30gitk: Ignore gitk-wish buildproductLibravatar Christian Couder2-2/+16
gitk, when bound into the git.git project tree, used to live at the root level, but in 62ba514 (Move gitk to its own subdirectory, 2007-11-17) it was moved to a subdirectory. The code used to track changes to TCLTK_PATH (which should cause gitk to be rebuilt to point at the new interpreter) was left in the main Makefile instead of being moved to the new Makefile that was created for the gitk project. Also add .gitignore file to list build artifacts for the gitk project. Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
2013-01-29Merge branch 'nd/fix-directory-attrs-off-by-one' into maintLibravatar Junio C Hamano1-20/+18
The attribute mechanism didn't allow limiting attributes to be applied to only a single directory itself with "path/" like the exclude mechanism does. The initial implementation of this that was merged to 'maint' and 1.8.1.1 had severe performance degradations. * nd/fix-directory-attrs-off-by-one: attr: avoid calling find_basename() twice per path attr: fix off-by-one directory component length calculation
2013-01-29Merge branch 'ph/rebase-preserve-all-merges' into maintLibravatar Junio C Hamano1-1/+6
"git rebase --preserve-merges" lost empty merges in recent versions of Git. * ph/rebase-preserve-all-merges: rebase --preserve-merges: keep all merge commits including empty ones
2013-01-29README: update stale and/or incorrect informationLibravatar Junio C Hamano1-8/+7
Ramkumar Ramachandra noticed that the old address for the marc archive no longer works. Update it to its marc.info address, and also refer to the gmane site. Remove the reference to "note from the maintainer", which is not usually followed by any useful discussion on status, direction nor tasks. Also replace the reference to "What's in git.git" with "What's cooking". Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-28Update draft release notes to 1.8.2Libravatar Junio C Hamano1-30/+12
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-28Sync with 1.8.1.2Libravatar Junio C Hamano1-0/+12
2013-01-28Git 1.8.1.2Libravatar Junio C Hamano2-1/+13
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-28Merge branch 'ss/help-htmlpath-config-doc' into maintLibravatar Junio C Hamano1-0/+6
* ss/help-htmlpath-config-doc: config.txt: Document help.htmlpath config parameter
2013-01-28Merge branch 'nd/attr-debug-fix' into maintLibravatar Junio C Hamano1-1/+1
* nd/attr-debug-fix: attr: make it build with DEBUG_ATTR again
2013-01-28Merge branch 'ds/completion-silence-in-tree-path-probe' into maintLibravatar Junio C Hamano1-1/+1
* ds/completion-silence-in-tree-path-probe: git-completion.bash: silence "not a valid object" errors
2013-01-28Merge branch 'jn/maint-trim-vim-contrib' into maintLibravatar Junio C Hamano1-13/+3
* jn/maint-trim-vim-contrib: contrib/vim: simplify instructions for old vim support
2013-01-28Merge branch 'pe/doc-email-env-is-trumped-by-config' into maintLibravatar Junio C Hamano1-2/+2
* pe/doc-email-env-is-trumped-by-config: git-commit-tree(1): correct description of defaults
2013-01-28Merge branch 'mk/complete-tcsh' into maintLibravatar Junio C Hamano1-12/+21
Command line completion for "tcsh" emitted an unwanted space after completing a single directory name. * mk/complete-tcsh: Prevent space after directories in tcsh completion
2013-01-28Merge branch 'ap/status-ignored-in-ignored-directory' into maintLibravatar Junio C Hamano3-22/+225
Output from "git status --ignored" did not work well when used with "--untracked". * ap/status-ignored-in-ignored-directory: status: always report ignored tracked directories git-status: Test --ignored behavior dir.c: Make git-status --ignored more consistent
2013-01-28Merge branch 'er/stop-recommending-parsecvs' into maintLibravatar Junio C Hamano1-4/+2
* er/stop-recommending-parsecvs: Remove the suggestion to use parsecvs, which is currently broken.
2013-01-28Merge branch 'mh/ceiling' into maintLibravatar Junio C Hamano11-165/+202
An element on GIT_CEILING_DIRECTORIES list that does not name the real path to a directory (i.e. a symbolic link) could have caused the GIT_DIR discovery logic to escape the ceiling. * mh/ceiling: string_list_longest_prefix(): remove function setup_git_directory_gently_1(): resolve symlinks in ceiling paths longest_ancestor_length(): require prefix list entries to be normalized longest_ancestor_length(): take a string_list argument for prefixes longest_ancestor_length(): use string_list_split() Introduce new function real_path_if_valid() real_path_internal(): add comment explaining use of cwd Introduce new static function real_path_internal()
2013-01-28Merge branch 'tb/t0050-maint'Libravatar Junio C Hamano1-35/+17
Update tests that were expecting to fail due to a bug that was fixed earlier. * tb/t0050-maint: t0050: Use TAB for indentation t0050: honor CASE_INSENSITIVE_FS in add (with different case) t0050: known breakage vanished in merge (case change)
2013-01-28Merge branch 'dl/am-hg-locale'Libravatar Junio C Hamano1-1/+1
Datestamp recorded in "Hg" format patch was reformatted incorrectly to an e-mail looking date using locale dependant strftime, causing patch application to fail. * dl/am-hg-locale: am: invoke perl's strftime in C locale
2013-01-28Merge branch 'jc/help'Libravatar Junio C Hamano2-18/+17
A header file that has the definition of a static array was included in two places, wasting the space. * jc/help: help: include <common-cmds.h> only in one file
2013-01-28Merge branch 'bc/fix-array-syntax-for-3.0-in-completion-bash'Libravatar Junio C Hamano1-1/+1
Fix use of an array notation that older versions of bash do not understand. * bc/fix-array-syntax-for-3.0-in-completion-bash: git-completion.bash: replace zsh notation that breaks bash 3.X
2013-01-26Merge branch 'jk/maint-gc-auto-after-fetch' into jk/gc-auto-after-fetchLibravatar Junio C Hamano2-0/+8
* jk/maint-gc-auto-after-fetch: fetch-pack: avoid repeatedly re-scanning pack directory fetch: run gc --auto after fetching
2013-01-26fetch-pack: avoid repeatedly re-scanning pack directoryLibravatar Jeff King1-0/+3
When we look up a sha1 object for reading via parse_object() => read_sha1_file() => read_object() callpath, we first check packfiles, and then loose objects. If we still haven't found it, we re-scan the list of packfiles in `objects/pack`. This final step ensures that we can co-exist with a simultaneous repack process which creates a new pack and then prunes the old object. This extra re-scan usually does not have a performance impact for two reasons: 1. If an object is missing, then typically the re-scan will find a new pack, then no more misses will occur. Or if it truly is missing, then our next step is usually to die(). 2. Re-scanning is cheap enough that we do not even notice. However, these do not always hold. The assumption in (1) is that the caller is expecting to find the object. This is usually the case, but the call to `parse_object` in `everything_local` does not follow this pattern. It is looking to see whether we have objects that the remote side is advertising, not something we expect to have. Therefore if we are fetching from a remote which has many refs pointing to objects we do not have, we may end up re-scanning the pack directory many times. Even with this extra re-scanning, the impact is often not noticeable due to (2); we just readdir() the packs directory and skip any packs that are already loaded. However, if there are a large number of packs, even enumerating the directory can be expensive, especially if we do it repeatedly. Having this many packs is a good sign the user should run `git gc`, but it would still be nice to avoid having to scan the directory at all. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-26fetch: run gc --auto after fetchingLibravatar Jeff King1-0/+5
We generally try to run "gc --auto" after any commands that might introduce a large number of new objects. An obvious place to do so is after running "fetch", which may introduce new loose objects or packs (depending on the size of the fetch). While an active developer repository will probably eventually trigger a "gc --auto" on another action (e.g., git-rebase), there are two good reasons why it is nicer to do it at fetch time: 1. Read-only repositories which track an upstream (e.g., a continuous integration server which fetches and builds, but never makes new commits) will accrue loose objects and small packs, but never coalesce them into a more efficient larger pack. 2. Fetching is often already perceived to be slow to the user, since they have to wait on the network. It's much more pleasant to include a potentially slow auto-gc as part of the already-long network fetch than in the middle of productive work with git-rebase or similar. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-26git-p4.py: support Python 2.4Libravatar Brandon Casey3-9/+31
Python 2.4 lacks the following features: subprocess.check_call struct.pack_into Take a cue from 460d1026 and provide an implementation of the CalledProcessError exception. Then replace the calls to subproccess.check_call with calls to subprocess.call that check the return status and raise a CalledProcessError exception if necessary. The struct.pack_into in t/9802 can be converted into a single struct.pack call which is available in Python 2.4. Signed-off-by: Brandon Casey <bcasey@nvidia.com> Acked-by: Pete Wyckoff <pw@padd.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-26git-p4.py: support Python 2.5Libravatar Brandon Casey2-2/+3
Python 2.5 and older do not accept None as the first argument to translate() and complain with: TypeError: expected a character buffer object As suggested by Pete Wyckoff, let's just replace the call to translate() with a regex search which should be more clear and more portable. This allows git-p4 to be used with Python 2.5. Signed-off-by: Brandon Casey <bcasey@nvidia.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-25Merge branch 'for-junio' of git://bogomips.org/git-svnLibravatar Junio C Hamano4-26/+25
* 'for-junio' of git://bogomips.org/git-svn: git-svn: Simplify calculation of GIT_DIR git-svn: cleanup sprintf usage for uppercasing hex
2013-01-25Update draft release notes to 1.8.2Libravatar Junio C Hamano1-3/+33
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-25Merge branch 'nd/retire-fnmatch'Libravatar Junio C Hamano7-62/+249
Replace our use of fnmatch(3) with a more feature-rich wildmatch. A handful patches at the bottom have been moved to nd/wildmatch to graduate as part of that branch, before this series solidifies. We may want to mark USE_WILDMATCH as an experimental curiosity a bit more clearly (i.e. should not be enabled in production environment, because it will make the behaviour between builds unpredictable). * nd/retire-fnmatch: Makefile: add USE_WILDMATCH to use wildmatch as fnmatch wildmatch: advance faster in <asterisk> + <literal> patterns wildmatch: make a special case for "*/" with FNM_PATHNAME test-wildmatch: add "perf" command to compare wildmatch and fnmatch wildmatch: support "no FNM_PATHNAME" mode wildmatch: make dowild() take arbitrary flags wildmatch: rename constants and update prototype