695009b | Patrick Steinhardt | 22 February 2016, 11:23:32 UTC | init-db: die on config errors when initializing empty repo When creating an empty repository with `git init-db` we do not check for error codes returned by `git_config_set` functions. This may cause the user to end up with an inconsistent repository without any indication for the user. Fix this problem by dying early with an error message when we are unable to write the configuration files to disk. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 22 February 2016, 18:23:54 UTC |
2ee35c4 | Patrick Steinhardt | 22 February 2016, 11:23:31 UTC | clone: die on config error in cmd_clone The clone command does not check for error codes returned by `git_config_set` functions. This may cause the user to end up with an inconsistent repository without any indication with what went wrong. Fix this problem by dying with an error message when we are unable to write the configuration files to disk. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 22 February 2016, 18:23:53 UTC |
c397deb | Patrick Steinhardt | 22 February 2016, 11:23:30 UTC | remote: die on config error when manipulating remotes When manipulating remotes we try to set various configuration values without checking if the values were persisted correctly, possibly leaving the remote in an inconsistent state. Fix this issue by dying early and notifying the user about the error. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 22 February 2016, 18:23:53 UTC |
ab5e4b6 | Patrick Steinhardt | 22 February 2016, 11:23:29 UTC | remote: die on config error when setting/adding branches When we add or set new branches (e.g. by `git remote add -f` or `git remote set-branches`) we do not check for error codes when writing the branches to the configuration file. When persisting the configuration failed we are left with a remote that has none or not all of the branches that should have been set without notifying the user. Fix this issue by dying early on configuration error. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 22 February 2016, 18:23:53 UTC |
45ebdcc | Patrick Steinhardt | 22 February 2016, 11:23:28 UTC | remote: die on config error when setting URL When invoking `git-remote --set-url` we do not check the return value when writing the actual new URL to the configuration file, pretending to the user that the configuration has been set while it was in fact not persisted. Fix this problem by dying early when setting the config fails. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 22 February 2016, 18:23:52 UTC |
15b92fc | Patrick Steinhardt | 22 February 2016, 11:23:27 UTC | submodule--helper: die on config error when cloning module When setting the 'core.worktree' option for a newly cloned submodule we ignore the return value of `git_config_set_in_file`. As this leaves the submodule in an inconsistent state, we instead want to inform the user that something has gone wrong by printing an error and aborting the program. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 22 February 2016, 18:23:52 UTC |
1a90dfe | Patrick Steinhardt | 22 February 2016, 11:23:26 UTC | submodule: die on config error when linking modules When trying to connect a submodule with its corresponding repository in '.git/modules' we try to set the core.worktree setting in the submodule, which may fail due to an error encountered in `git_config_set_in_file`. The function is used in the git-mv command when trying to move a submodule to another location. We already die when renaming a file fails but do not pay attention to the case where updating the connection between submodule and its repository fails. As this leaves the repository in an inconsistent state, as well, abort the program by dying early and presenting the failure to the user. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 22 February 2016, 18:23:52 UTC |
bd25f89 | Patrick Steinhardt | 22 February 2016, 11:23:25 UTC | branch: die on config error when editing branch description Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 22 February 2016, 18:23:52 UTC |
b81842c | Patrick Steinhardt | 22 February 2016, 11:23:24 UTC | branch: die on config error when unsetting upstream When we try to unset upstream configurations we do not check return codes for the `git_config_set` functions. As those may indicate that we were unable to unset the respective configuration we may exit successfully without any error message while in fact the upstream configuration was not unset. Fix this by dying with an error message when we cannot unset the configuration. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 22 February 2016, 18:23:45 UTC |
27852b2 | Patrick Steinhardt | 22 February 2016, 11:23:23 UTC | branch: report errors in tracking branch setup When setting up a new tracking branch fails due to issues with the configuration file we do not report any errors to the user and pretend setting the tracking branch succeeded. Setting up the tracking branch is handled by the `install_branch_config` function. We do not want to simply die there as the function is not only invoked when explicitly setting upstream information with `git branch --set-upstream-to=`, but also by `git push --set-upstream` and `git clone`. While it is reasonable to die in the explict first case, we would lose information in the latter two cases, so we only print the error message but continue the program as usual. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 22 February 2016, 18:23:30 UTC |
b4c8aba | Patrick Steinhardt | 16 February 2016, 12:56:28 UTC | config: introduce set_or_die wrappers A lot of call-sites for the existing family of `git_config_set` functions do not check for errors that may occur, e.g. when the configuration file is locked. In many cases we simply want to die when such a situation arises. Introduce wrappers that will cause the program to die in those cases. These wrappers are temporary only to ease the transition to let `git_config_set` die by default. They will be removed later on when `git_config_set` itself has been replaced by `git_config_set_gently`. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 16 February 2016, 22:14:14 UTC |
a08595f | Junio C Hamano | 05 February 2016, 22:53:52 UTC | Git 2.7.1 Signed-off-by: Junio C Hamano <gitster@pobox.com> | 05 February 2016, 22:54:56 UTC |
5276be8 | Junio C Hamano | 05 February 2016, 22:54:22 UTC | Merge branch 'lv/add-doc-working-tree' into maint * lv/add-doc-working-tree: git-add doc: do not say working directory when you mean working tree | 05 February 2016, 22:54:23 UTC |
2db7d79 | Junio C Hamano | 05 February 2016, 22:54:21 UTC | Merge branch 'ss/clone-depth-single-doc' into maint Documentation for "git fetch --depth" has been updated for clarity. * ss/clone-depth-single-doc: docs: clarify that --depth for git-fetch works with newly initialized repos docs: say "commits" in the --depth option wording for git-clone docs: clarify that passing --depth to git-clone implies --single-branch | 05 February 2016, 22:54:22 UTC |
0298675 | Junio C Hamano | 05 February 2016, 22:54:20 UTC | Merge branch 'sg/t6050-failing-editor-test-fix' into maint * sg/t6050-failing-editor-test-fix: t6050-replace: make failing editor test more robust | 05 February 2016, 22:54:21 UTC |
01517bd | Junio C Hamano | 05 February 2016, 22:54:19 UTC | Merge branch 'ew/for-each-ref-doc' into maint * ew/for-each-ref-doc: for-each-ref: document `creatordate` and `creator` fields | 05 February 2016, 22:54:20 UTC |
353f685 | Junio C Hamano | 05 February 2016, 22:54:18 UTC | Merge branch 'ss/user-manual' into maint Drop a few old "todo" items by deciding that the change one of them suggests is not such a good idea, and doing the change the other one suggested to do. * ss/user-manual: user-manual: add addition gitweb information user-manual: add section documenting shallow clones glossary: define the term shallow clone user-manual: remove temporary branch entry from todo list | 05 February 2016, 22:54:19 UTC |
e2d7739 | Junio C Hamano | 05 February 2016, 22:54:17 UTC | Merge branch 'jk/ref-cache-non-repository-optim' into maint The underlying machinery used by "ls-files -o" and other commands have been taught not to create empty submodule ref cache for a directory that is not a submodule. This removes a ton of wasted CPU cycles. * jk/ref-cache-non-repository-optim: resolve_gitlink_ref: ignore non-repository paths clean: make is_git_repository a public function | 05 February 2016, 22:54:17 UTC |
07be1da | Junio C Hamano | 05 February 2016, 22:54:17 UTC | Merge branch 'js/dirname-basename' into maint dirname() emulation has been added, as Msys2 lacks it. * js/dirname-basename: mingw: avoid linking to the C library's isalpha() t0060: loosen overly strict expectations t0060: verify that basename() and dirname() work as expected compat/basename.c: provide a dirname() compatibility function compat/basename: make basename() conform to POSIX Refactor skipping DOS drive prefixes | 05 February 2016, 22:54:17 UTC |
081363d | Junio C Hamano | 05 February 2016, 22:54:17 UTC | Merge branch 'tb/complete-word-diff-regex' into maint * tb/complete-word-diff-regex: completion: complete "diff --word-diff-regex=" | 05 February 2016, 22:54:17 UTC |
0a8748d | Junio C Hamano | 05 February 2016, 22:54:16 UTC | Merge branch 'pw/completion-stash' into maint * pw/completion-stash: completion: update completion arguments for stash | 05 February 2016, 22:54:16 UTC |
39abb2e | Junio C Hamano | 05 February 2016, 22:54:16 UTC | Merge branch 'pw/completion-show-branch' into maint * pw/completion-show-branch: completion: complete show-branch "--date-order" | 05 February 2016, 22:54:16 UTC |
d509fa4 | Junio C Hamano | 05 February 2016, 22:54:16 UTC | Merge branch 'jk/completion-rebase' into maint * jk/completion-rebase: completion: add missing git-rebase options | 05 February 2016, 22:54:16 UTC |
02dab5d | Junio C Hamano | 05 February 2016, 22:54:15 UTC | Merge branch 'nd/diff-with-path-params' into maint A few options of "git diff" did not work well when the command was run from a subdirectory. * nd/diff-with-path-params: diff: make -O and --output work in subdirectory diff-no-index: do not take a redundant prefix argument | 05 February 2016, 22:54:15 UTC |
6a65bdc | Junio C Hamano | 05 February 2016, 22:54:15 UTC | Merge branch 'dw/subtree-split-do-not-drop-merge' into maint The "split" subcommand of "git subtree" (in contrib/) incorrectly skipped merges when it shouldn't, which was corrected. * dw/subtree-split-do-not-drop-merge: contrib/subtree: fix "subtree split" skipped-merge bug | 05 February 2016, 22:54:15 UTC |
0244713 | Junio C Hamano | 05 February 2016, 22:54:15 UTC | Merge branch 'ew/svn-1.9.0-auth' into maint * ew/svn-1.9.0-auth: git-svn: fix auth parameter handling on SVN 1.9.0+ | 05 February 2016, 22:54:15 UTC |
88ec75d | Junio C Hamano | 05 February 2016, 22:54:15 UTC | Merge branch 'jk/list-tag-2.7-regression' into maint "git tag" started listing a tag "foo" as "tags/foo" when a branch named "foo" exists in the same repository; remove this unnecessary disambiguation, which is a regression introduced in v2.7.0. * jk/list-tag-2.7-regression: tag: do not show ambiguous tag names as "tags/foo" t6300: use test_atom for some un-modern tests | 05 February 2016, 22:54:15 UTC |
913c2c7 | Junio C Hamano | 05 February 2016, 22:54:14 UTC | Merge branch 'jk/sanity' into maint The description for SANITY prerequisite the test suite uses has been clarified both in the comment and in the implementation. * jk/sanity: test-lib: clarify and tighten SANITY | 05 February 2016, 22:54:14 UTC |
16f5e26 | Junio C Hamano | 05 February 2016, 22:54:13 UTC | Merge branch 'jk/filter-branch-no-index' into maint A recent optimization to filter-branch in v2.7.0 introduced a regression when --prune-empty filter is used, which has been corrected. * jk/filter-branch-no-index: filter-branch: resolve $commit^{tree} in no-index case | 05 February 2016, 22:54:13 UTC |
f748e69 | Junio C Hamano | 05 February 2016, 22:54:13 UTC | Merge branch 'js/close-packs-before-gc' into maint Many codepaths that run "gc --auto" before exiting kept packfiles mapped and left the file descriptors to them open, which was not friendly to systems that cannot remove files that are open. They now close the packs before doing so. * js/close-packs-before-gc: receive-pack: release pack files before garbage-collecting merge: release pack files before garbage-collecting am: release pack files before garbage-collecting fetch: release pack files before garbage-collecting | 05 February 2016, 22:54:13 UTC |
b11a3ba | Junio C Hamano | 05 February 2016, 22:54:13 UTC | Merge branch 'jk/ok-to-fail-gc-auto-in-rebase' into maint "git rebase", unlike all other callers of "gc --auto", did not ignore the exit code from "gc --auto". * jk/ok-to-fail-gc-auto-in-rebase: rebase: ignore failures from "gc --auto" | 05 February 2016, 22:54:13 UTC |
15f4096 | Junio C Hamano | 05 February 2016, 22:54:12 UTC | Merge branch 'ho/gitweb-squelch-undef-warning' into maint Asking gitweb for a nonexistent commit left a warning in the server log. Somebody may want to follow this up with a new test, perhaps? IIRC, we do test that no Perl warnings are given to the server log, so this should have been caught if our test coverage were good. * ho/gitweb-squelch-undef-warning: gitweb: squelch "uninitialized value" warning | 05 February 2016, 22:54:12 UTC |
da07df3 | Junio C Hamano | 05 February 2016, 22:54:11 UTC | Merge branch 'js/fopen-harder' into maint Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR (e.g. COMMIT_EDITMSG) that is meant to be left after the command is done. This however did not work well if the repository is set to be shared with core.sharedRepository and the umask of the previous user is tighter. They have been made to work better by calling unlink(2) and retrying after fopen(3) fails with EPERM. * js/fopen-harder: Handle more file writes correctly in shared repos commit: allow editing the commit message even in shared repos | 05 February 2016, 22:54:11 UTC |
9496acc | Junio C Hamano | 05 February 2016, 22:54:11 UTC | Merge branch 'nd/exclusion-regression-fix' into maint The ignore mechanism saw a few regressions around untracked file listing and sparse checkout selection areas in 2.7.0; the change that is responsible for the regression has been reverted. * nd/exclusion-regression-fix: Revert "dir.c: don't exclude whole dir prematurely if neg pattern may match" | 05 February 2016, 22:54:11 UTC |
90b9986 | Junio C Hamano | 05 February 2016, 22:54:10 UTC | Merge branch 'dk/reflog-walk-with-non-commit' into maint "git reflog" incorrectly assumed that all objects that used to be at the tip of a ref must be commits, which caused it to segfault. * dk/reflog-walk-with-non-commit: reflog-walk: don't segfault on non-commit sha1's in the reflog | 05 February 2016, 22:54:10 UTC |
7aae9ba | Junio C Hamano | 05 February 2016, 22:54:09 UTC | Merge branch 'dw/signoff-doc' into maint The documentation has been updated to hint the connection between the '--signoff' option and DCO. * dw/signoff-doc: Expand documentation describing --signoff | 05 February 2016, 22:54:09 UTC |
6e29ac2 | Junio C Hamano | 05 February 2016, 22:54:09 UTC | Merge branch 'jk/clang-pedantic' into maint A few unportable C construct have been spotted by clang compiler and have been fixed. * jk/clang-pedantic: bswap: add NO_UNALIGNED_LOADS define avoid shifting signed integers 31 bits | 05 February 2016, 22:54:09 UTC |
25b1166 | Junio C Hamano | 05 February 2016, 22:54:09 UTC | Merge branch 'ew/send-email-mutt-alias-fix' into maint "git send-email" was confused by escaped quotes stored in the alias files saved by "mutt", which has been corrected. * ew/send-email-mutt-alias-fix: git-send-email: do not double-escape quotes from mutt | 05 February 2016, 22:54:09 UTC |
af3e464 | Junio C Hamano | 05 February 2016, 22:54:08 UTC | Merge branch 'nd/dir-exclude-cleanup' into maint The "exclude_list" structure has the usual "alloc, nr" pair of fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot to reset 'alloc' to 0 when it cleared 'nr' to discard the managed array. * nd/dir-exclude-cleanup: dir.c: clean the entire struct in clear_exclude_list() | 05 February 2016, 22:54:08 UTC |
d699834 | Junio C Hamano | 05 February 2016, 22:54:07 UTC | Merge branch 'nd/stop-setenv-work-tree' into maint An earlier change in 2.5.x-era broke users' hooks and aliases by exporting GIT_WORK_TREE to point at the root of the working tree, interfering when they tried to use a different working tree without setting GIT_WORK_TREE environment themselves. * nd/stop-setenv-work-tree: Revert "setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR" | 05 February 2016, 22:54:07 UTC |
0b66415 | Eric Wong | 16 January 2016, 10:17:19 UTC | git-svn: fix auth parameter handling on SVN 1.9.0+ For users with "store-passwords = no" set in the "[auth]" section of their ~/.subversion/config, SVN 1.9.0+ would fail with the following message when attempting to call svn_auth_set_parameter: Value is not a string (or undef) at Git/SVN/Ra.pm Ironically, this breakage was caused by r1553823 in subversion: "Make svn_auth_set_parameter() usable from Perl bindings." Since 2007 (602015e0e6ec), git-svn has used a workaround to make svn_auth_set_parameter usable internally. However this workaround breaks under SVN 1.9+, which deals properly with the type mapping and fails to recognize our workaround. For pre-1.9.0 SVN, we continue to use the existing workaround for the lack of proper type mapping in the bindings. Tested under subversion 1.6.17 and 1.9.3. I've also verified r1553823 was not backported to SVN 1.8.x: BRANCH=http://svn.apache.org/repos/asf/subversion/branches/1.8.x svn log -v $BRANCH/subversion/bindings/swig/core.i ref: https://bugs.debian.org/797705 Cc: 797705@bugs.debian.org Reported-by: Thierry Vignaud <thierry.vignaud@gmail.com> Signed-off-by: Eric Wong <normalperson@yhbt.net> Tested-by: Thierry Vignaud <thierry.vignaud@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 27 January 2016, 06:30:02 UTC |
0571979 | Jeff King | 26 January 2016, 03:00:05 UTC | tag: do not show ambiguous tag names as "tags/foo" Since b7cc53e9 (tag.c: use 'ref-filter' APIs, 2015-07-11), git-tag has started showing tags with ambiguous names (i.e., when both "heads/foo" and "tags/foo" exists) as "tags/foo" instead of just "foo". This is both: - pointless; the output of "git tag" includes only refs/tags, so we know that "foo" means the one in "refs/tags". and - ambiguous; in the original output, we know that the line "foo" means that "refs/tags/foo" exists. In the new output, it is unclear whether we mean "refs/tags/foo" or "refs/tags/tags/foo". The reason this happens is that commit b7cc53e9 switched git-tag to use ref-filter's "%(refname:short)" output formatting, which was adapted from for-each-ref. This more general code does not know that we care only about tags, and uses shorten_unambiguous_ref to get the short-name. We need to tell it that we care only about "refs/tags/", and it should shorten with respect to that value. In theory, the ref-filter code could figure this out by us passing FILTER_REFS_TAGS. But there are two complications there: 1. The handling of refname:short is deep in formatting code that does not even have our ref_filter struct, let alone the arguments to the filter_ref struct. 2. In git v2.7.0, we expose the formatting language to the user. If we follow this path, it will mean that "%(refname:short)" behaves differently for "tag" versus "for-each-ref" (including "for-each-ref refs/tags/"), which can lead to confusion. Instead, let's add a new modifier to the formatting language, "strip", to remove a specific set of prefix components. This fixes "git tag", and lets users invoke the same behavior from their own custom formats (for "tag" or "for-each-ref") while leaving ":short" with its same consistent meaning in all places. We introduce a test in t7004 for "git tag", which fails without this patch. We also add a similar test in t3203 for "git branch", which does not actually fail. But since it is likely that "branch" will eventually use the same formatting code, the test helps defend against future regressions. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 26 January 2016, 21:34:10 UTC |
d7d4ca8 | Paul Wagland | 26 January 2016, 09:37:19 UTC | completion: update completion arguments for stash Add --all and --include-untracked to the git stash save completions. Add --quiet to the git stash drop completions. Update git stash branch so that the first argument expands out to the possible branch names, and the other arguments expand to the stash names. Signed-off-by: Paul Wagland <paul@kungfoocoder.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 26 January 2016, 18:37:11 UTC |
f7c2e1a | Paul Wagland | 23 January 2016, 01:25:54 UTC | completion: complete show-branch "--date-order" Signed-off-by: Paul Wagland <paul@kungfoocoder.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 January 2016, 23:15:26 UTC |
fa4b5e3 | John Keeping | 21 January 2016, 20:52:24 UTC | completion: add missing git-rebase options This adds the --no-* variants where those are documented in git-rebase(1). Signed-off-by: John Keeping <john@keeping.me.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 January 2016, 23:13:54 UTC |
e7d5ce8 | Johannes Sixt | 25 January 2016, 21:47:56 UTC | mingw: avoid linking to the C library's isalpha() The implementation of mingw_skip_dos_drive_prefix() calls isalpha() via has_dos_drive_prefix(). Since the definition occurs long before isalpha() is defined in git-compat-util.h, my build environment reports: CC alloc.o In file included from git-compat-util.h:186, from cache.h:4, from alloc.c:12: compat/mingw.h: In function 'mingw_skip_dos_drive_prefix': compat/mingw.h:365: warning: implicit declaration of function 'isalpha' Dscho does not see a similar warning in his build and suspects that ctype.h is included somehow behind the scenes. This implies that his build links to the C library's isalpha() and does not use git's isalpha(). To fix both the warning in my build and the inconsistency in Dscho's build, move the function definition to mingw.c. Then it picks up git's isalpha() because git-compat-util.h is included at the top of the file. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 January 2016, 22:04:14 UTC |
1d094db | Jeff King | 24 January 2016, 23:08:18 UTC | t6300: use test_atom for some un-modern tests Because this script has to test so many formatters, we have the nice "test_atom" helper, but we don't use it consistently. Let's do so. This is shorter, gets rid of some tests that have their "expected" setup outside of a test_expect_success block, and lets us organize the changes better (e.g., putting "refname:short" near "refname"). We also expand the "%(push)" tests a little to match the "%(upstream)" ones. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 January 2016, 20:33:45 UTC |
a2d5156 | Jeff King | 22 January 2016, 22:29:30 UTC | resolve_gitlink_ref: ignore non-repository paths When we want to look up a submodule ref, we use get_ref_cache(path) to find or auto-create its ref cache. But if we feed a path that isn't actually a git repository, we blindly create the ref cache, and then may die deeper in the code when we try to access it. This is a problem because many callers speculatively feed us a path that looks vaguely like a repository, and expect us to tell them when it is not. This patch teaches resolve_gitlink_ref to reject non-repository paths without creating a ref_cache. This avoids the die(), and also performs better if you have a large number of these faux-submodule directories (because the ref_cache lookup is linear, under the assumption that there won't be a large number of submodules). To accomplish this, we also break get_ref_cache into two pieces: the lookup and auto-creation (the latter is lumped into create_ref_cache). This lets us first cheaply ask our cache "is it a submodule we know about?" If so, we can avoid repeating our filesystem lookup. So lookups of real submodules are not penalized; they examine the submodule's .git directory only once. The test in t3000 demonstrates a case where this improves correctness (we used to just die). The new perf case in p7300 shows off the speed improvement in an admittedly pathological repository: Test HEAD^ HEAD ---------------------------------------------------------------- 7300.4: ls-files -o 66.97(66.15+0.87) 0.33(0.08+0.24) -99.5% Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 January 2016, 19:42:13 UTC |
ffd036b | Jeff King | 22 January 2016, 22:27:33 UTC | clean: make is_git_repository a public function We have always had is_git_directory(), for looking at a specific directory to see if it contains a git repo. In 0179ca7 (clean: improve performance when removing lots of directories, 2015-06-15), we added is_git_repository() which checks for a non-bare repository by looking at its ".git" entry. However, the fix in 0179ca7 needs to be applied other places, too. Let's make this new helper globally available. We need to give it a better name, though, to avoid confusion with is_git_directory(). This patch does that, documents both functions with a comment to reduce confusion, and removes the clean-specific references in the comments. Based-on-a-patch-by: Andreas Krey <a.krey@gmx.de> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 January 2016, 19:41:53 UTC |
a97262c | Duy Nguyen | 21 January 2016, 11:48:44 UTC | diff: make -O and --output work in subdirectory Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 January 2016, 18:45:13 UTC |
e5f7a5d | Nguyễn Thái Ngọc Duy | 20 January 2016, 11:06:02 UTC | diff-no-index: do not take a redundant prefix argument Prefix is already set up in "revs". The same prefix should be used for all options parsing. So kill the last argument. This patch does not actually change anything because the only caller does use the same prefix for init_revisions() and diff_no_index(). Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 January 2016, 18:45:11 UTC |
bd02e97 | Lars Vogel | 21 January 2016, 10:09:15 UTC | git-add doc: do not say working directory when you mean working tree The usage of working directory is inconsistent in the git add help. Also http://git-scm.com/docs/git-clone speaks only about working tree. Remaining entry found by "git grep -B1 '^directory' git-add.txt" really relates to a directory. Signed-off-by: Lars Vogel <Lars.Vogel@vogella.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 January 2016, 17:06:35 UTC |
e6414b4 | Thomas Braun | 20 January 2016, 17:34:58 UTC | completion: complete "diff --word-diff-regex=" Signed-off-by: Thomas Braun <thomas.braun@virtuell-zuhause.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 January 2016, 00:18:02 UTC |
933cfeb | Dave Ware | 15 January 2016, 00:41:43 UTC | contrib/subtree: fix "subtree split" skipped-merge bug 'git subtree split' can incorrectly skip a merge even when both parents act on the subtree, provided the merge results in a tree identical to one of the parents. Fix by copying the merge if at least one parent is non-identical, and the non-identical parent is not an ancestor of the identical parent. Also, add a test case which checks that a descendant remains a descendent on the subtree in this case. Signed-off-by: Dave Ware <davidw@realtimegenomics.com> Reviewed-by: David A. Greene <greened@obbligato.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 January 2016, 22:53:18 UTC |
1dc413e | Jeff King | 19 January 2016, 22:07:22 UTC | filter-branch: resolve $commit^{tree} in no-index case Commit 348d4f2 (filter-branch: skip index read/write when possible, 2015-11-06) taught filter-branch to optimize out the final "git write-tree" when we know we haven't touched the tree with any of our filters. It does by simply putting the literal text "$commit^{tree}" into the "$tree" variable, avoiding a useless rev-parse call. However, when we pass this to git_commit_non_empty_tree(), it gets confused; it resolves "$commit^{tree}" itself, and compares our string to the 40-hex sha1, which obviously doesn't match. As a result, "--prune-empty" (or any custom filter using git_commit_non_empty_tree) will fail to drop an empty commit (when filter-branch is used without a tree or index filter). Let's resolve $tree to the 40-hex ourselves, so that git_commit_non_empty_tree can work. Unfortunately, this is a bit slower due to the extra process overhead: $ cd t/perf && ./run 348d4f2 HEAD p7000-filter-branch.sh [...] Test 348d4f2 HEAD -------------------------------------------------------------- 7000.2: noop filter 3.76(0.24+0.26) 4.54(0.28+0.24) +20.7% We could try to make git_commit_non_empty_tree more clever. However, the value of $tree here is technically user-visible. The user can provide arbitrary shell code at this stage, which could itself have a similar assumption to what is in git_commit_non_empty_tree. So the conservative choice to fix this regression is to take the 20% hit and give the pre-348d4f2 behavior. We still end up much faster than before the optimization: $ cd t/perf && ./run 348d4f2^ HEAD p7000-filter-branch.sh [...] Test 348d4f2^ HEAD -------------------------------------------------------------- 7000.2: noop filter 9.51(4.32+0.40) 4.51(0.28+0.23) -52.6% Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 19 January 2016, 22:20:56 UTC |
719c3da | Junio C Hamano | 19 January 2016, 22:09:37 UTC | test-lib: clarify and tighten SANITY f400e51c (test-lib.sh: set prerequisite SANITY by testing what we really need, 2015-01-27) improved the way SANITY prerequisite was determined, but made the resulting code (incorrectly) imply that SANITY is all about effects of permission bits of the containing directory has on the files contained in it by the comment it added, its log message and the actual tests. State what SANITY is about more clearly in the comment, and test that a file whose permission bits says should be unreadble truly cannot be read. Signed-off-by: Junio C Hamano <gitster@pobox.com> | 19 January 2016, 22:18:20 UTC |
371471c | Johannes Schindelin | 14 January 2016, 06:48:27 UTC | t0060: loosen overly strict expectations The dirname() tests file were developed and tested on only the five platforms available to the developer at the time, namely: Linux (both 32 and 64bit), Windows XP 32-bit (MSVC), MinGW 32-bit and Cygwin 32-bit. http://pubs.opengroup.org/onlinepubs/9699919799/functions/basename.html (i.e. the POSIX spec) says, in part: If the string pointed to by path consists entirely of the '/' character, basename() shall return a pointer to the string "/". If the string pointed to by path is exactly "//", it is implementation-defined whether "/" or "//" is returned. The thinking behind testing precise, OS-dependent output values was to document that different setups produce different values. However, as the test failures on MacOSX illustrated eloquently: hardcoding pretty much each and every setup's expectations is pretty fragile. This is not limited to the "//" vs "/" case, of course, other inputs are also allowed to produce multiple outputs by the POSIX specs. So let's just test for all allowed values and be done with it. This still documents that Git cannot rely on one particular output value in those cases, so the intention of the original tests is still met. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 15 January 2016, 17:26:20 UTC |
8c24f5b | Jeff King | 13 January 2016, 18:47:18 UTC | rebase: ignore failures from "gc --auto" After rebasing, we call "gc --auto" to clean up if we created a lot of loose objects. However, we do so inside an &&-chain. If "gc --auto" fails (e.g., because a previous background gc blocked us by leaving "gc.log" in place), then: 1. We will fail to clean up the state directory, leaving the user stuck in the rebase forever (even "git am --abort" doesn't work, because it calls "gc --auto"!). 2. In some cases, we may return a bogus exit code from rebase, indicating failure when everything except the auto-gc succeeded. We can fix this by ignoring the exit code of "gc --auto". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 13 January 2016, 20:04:53 UTC |
d562102 | Johannes Schindelin | 13 January 2016, 17:20:26 UTC | receive-pack: release pack files before garbage-collecting Before auto-gc'ing, we need to make sure that the pack files are released in case they need to be repacked and garbage-collected. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 13 January 2016, 19:36:28 UTC |
dcacb1b | Johannes Schindelin | 13 January 2016, 17:20:21 UTC | merge: release pack files before garbage-collecting Before auto-gc'ing, we need to make sure that the pack files are released in case they need to be repacked and garbage-collected. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 13 January 2016, 19:36:28 UTC |
df617b5 | Johannes Schindelin | 13 January 2016, 17:20:16 UTC | am: release pack files before garbage-collecting Before auto-gc'ing, we need to make sure that the pack files are released in case they need to be repacked and garbage-collected. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 13 January 2016, 19:36:28 UTC |
0898c96 | Johannes Schindelin | 13 January 2016, 17:20:11 UTC | fetch: release pack files before garbage-collecting Before auto-gc'ing, we need to make sure that the pack files are released in case they need to be repacked and garbage-collected. This fixes https://github.com/git-for-windows/git/issues/500 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 13 January 2016, 19:36:27 UTC |
1b0b6dd | Junio C Hamano | 12 January 2016, 23:05:05 UTC | Merge branch 'maint' of git://github.com/git-l10n/git-po into maint * 'maint' of git://github.com/git-l10n/git-po: l10n: ko.po: Add Korean translation | 12 January 2016, 23:05:05 UTC |
a9eb90a | Øyvind A. Holm | 12 January 2016, 03:31:56 UTC | gitweb: squelch "uninitialized value" warning git_object() chomps $type that is read from "cat-file -t", but it does so before checking if $type is defined, resulting in a Perl warning in the server error log: gitweb.cgi: Use of uninitialized value $type in scalar chomp at [...]/gitweb.cgi line 7579., referer: [...] when trying to access a non-existing commit, for example: http://HOST/?p=PROJECT.git;a=commit;h=NON_EXISTING_COMMIT Check the value in $type before chomping. This will cause us to call href with its action parameter set to undef when formulating the URL to redirect to, but that is harmless, as the function treats a parameter that set to undef as if it does not exist. Signed-off-by: Øyvind A. Holm <sunny@sunbase.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 12 January 2016, 21:21:15 UTC |
7d1aaa6 | Johannes Schindelin | 12 January 2016, 07:57:57 UTC | t0060: verify that basename() and dirname() work as expected Unfortunately, some libgen implementations yield outcomes different from what Git expects. For example, mingw-w64-crt provides a basename() function, that shortens `path0/` to `path`! So let's verify that the basename() and dirname() functions we use conform to what Git expects. Derived-from-code-by: Ramsay Jones <ramsay@ramsayjones.plus.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 12 January 2016, 18:41:34 UTC |
824682a | Johannes Schindelin | 12 January 2016, 07:57:36 UTC | compat/basename.c: provide a dirname() compatibility function When there is no `libgen.h` to our disposal, we miss the `dirname()` function. Earlier we added basename() compatibility function for the same reason at e1c06886 (compat: add a basename() compatibility function, 2009-05-31). So far, we only had one user of that function: credential-cache--daemon (which was only compiled when Unix sockets are available, anyway). But now we also have `builtin/am.c` as user, so we need it. Since `dirname()` is a sibling of `basename()`, we simply put our very own `gitdirname()` implementation next to `gitbasename()` and use it if `NO_LIBGEN_H` has been set. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 12 January 2016, 18:40:54 UTC |
61725be | Johannes Schindelin | 12 January 2016, 07:57:30 UTC | compat/basename: make basename() conform to POSIX According to POSIX, basename("/path/") should return "path", not "path/". Likewise, basename(NULL) and basename("") should both return "." to conform. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 12 January 2016, 18:40:27 UTC |
2f36eed | Johannes Schindelin | 12 January 2016, 07:57:22 UTC | Refactor skipping DOS drive prefixes Junio noticed that there is an implicit assumption in pretty much all the code calling has_dos_drive_prefix(): it forces all of its callsites to hardcode the knowledge that the DOS drive prefix is always two bytes long. While this assumption is pretty safe, we can still make the code more readable and less error-prone by introducing a function that skips the DOS drive prefix safely. While at it, we change the has_dos_drive_prefix() return value: it now returns the number of bytes to be skipped if there is a DOS drive prefix. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 12 January 2016, 18:39:40 UTC |
ea56518 | Johannes Schindelin | 11 January 2016, 18:35:54 UTC | Handle more file writes correctly in shared repos In shared repositories, we have to be careful when writing files whose permissions do not allow users other than the owner to write them. In particular, we force the marks file of fast-export and the FETCH_HEAD when fetching to be rewritten from scratch. This commit does not touch other calls to fopen() that want to write files: - commands that write to working tree files (core.sharedRepository does not affect permission bits of working tree files), e.g. .rej file created by "apply --reject", result of applying a previous conflict resolution by "rerere", "git merge-file". - git am, when splitting mails (git-am correctly cleans up its directory after finishing, so there is no need to share those files between users) - git submodule clone, when writing the .git file, because the file will not be overwritten - git_terminal_prompt() in compat/terminal.c, because it is not writing to a file at all - git diff --output, because the output file is clearly not intended to be shared between the users of the current repository - git fast-import, when writing a crash report, because the reports' file names are unique due to an embedded process ID - mailinfo() in mailinfo.c, because the output is clearly not intended to be shared between the users of the current repository - check_or_regenerate_marks() in remote-testsvn.c, because this is only used for Git's internal testing - git fsck, when writing lost&found blobs (this should probably be changed, but left as a low-hanging fruit for future contributors). Note that this patch does not touch callers of write_file() and write_file_gently(), which would benefit from the same scrutiny as to usage in shared repositories. Most notable users are branch, daemon, submodule & worktree, and a worrisome call in transport.c when updating one ref (which ignores the shared flag). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 11 January 2016, 22:04:29 UTC |
60253a6 | Sebastian Schuberth | 08 January 2016, 09:32:52 UTC | docs: clarify that --depth for git-fetch works with newly initialized repos The original wording sounded as if --depth could only be used to deepen or shorten the history of existing repos. However, that is not the case. In a workflow like $ git init $ git remote add origin https://github.com/git/git.git $ git fetch --depth=1 The newly initialized repo is properly created as a shallow repo. Signed-off-by: Junio C Hamano <gitster@pobox.com> | 08 January 2016, 20:40:12 UTC |
fc14281 | Sebastian Schuberth | 08 January 2016, 09:18:21 UTC | docs: say "commits" in the --depth option wording for git-clone It is not wrong to talk about "revisions" here, but in this context revisions are always commits, and that is how we already name it in the git-fetch docs. So align the docs by always referring to "commits". Signed-off-by: Junio C Hamano <gitster@pobox.com> | 08 January 2016, 20:39:58 UTC |
8c72236 | Nguyễn Thái Ngọc Duy | 08 January 2016, 12:05:25 UTC | Revert "dir.c: don't exclude whole dir prematurely if neg pattern may match" This reverts commit 57534ee77d22e725d971ee89c77dc6aad61c573f. The feature added in that commit requires that patterns behave the same way from anywhere. But some patterns can behave differently depending on current "working" directory. The conditions to catch and avoid these patterns are too loose. The untracked listing[1] and sparse-checkout selection[2] can become incorrect as a result. [1] http://article.gmane.org/gmane.comp.version-control.git/283520 [2] http://article.gmane.org/gmane.comp.version-control.git/283532 Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 08 January 2016, 19:24:14 UTC |
79d7582 | Johannes Schindelin | 06 January 2016, 13:09:43 UTC | commit: allow editing the commit message even in shared repos It was pointed out by Yaroslav Halchenko that the file containing the commit message is writable only by the owner, which means that we have to rewrite it from scratch in a shared repository. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 07 January 2016, 21:52:55 UTC |
28a1b56 | Sebastian Schuberth | 06 January 2016, 13:06:47 UTC | docs: clarify that passing --depth to git-clone implies --single-branch It is confusing to document how --depth behaves as part of the --single-branch docs. Better move that part to the --depth docs, saying that it implies --single-branch by default. Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 07 January 2016, 19:45:19 UTC |
b2c150d | David A. Wheeler | 05 January 2016, 19:20:26 UTC | Expand documentation describing --signoff Modify various document (man page) files to explain in more detail what --signoff means. This was inspired by https://lwn.net/Articles/669976/ where paulj noted, "adding [the] '-s' argument to [a] git commit doesn't really mean you have even heard of the DCO...". Extending git's documentation will make it easier to argue that developers understood --signoff when they use it. Signed-off-by: David A. Wheeler <dwheeler@dwheeler.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 05 January 2016, 21:42:39 UTC |
aecad37 | Dennis Kaarsemaker | 05 January 2016, 21:12:10 UTC | reflog-walk: don't segfault on non-commit sha1's in the reflog git reflog (ab)uses the log machinery to display its list of log entries. To do so it must fake commit parent information for the log walker. For refs in refs/heads this is no problem, as they should only ever point to commits. Tags and other refs however can point to anything, thus their reflog may contain non-commit objects. To avoid segfaulting, we check whether reflog entries are commits before feeding them to the log walker and skip any non-commits. This means that git reflog output will be incomplete for such refs, but that's one step up from segfaulting. A more complete solution would be to decouple git reflog from the log walker machinery. Signed-off-by: Dennis Kaarsemaker <dennis@kaarsemaker.net> Helped-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Helped-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 05 January 2016, 21:41:06 UTC |
36fc7d8 | SZEDER Gábor | 05 January 2016, 10:33:30 UTC | t6050-replace: make failing editor test more robust 'git replace --edit' should error out when the invoked editor fails, but the test checking this behavior would not notice if this weren't the case. The test in question, ever since it was added in 85f98fc037ae (replace: add tests for --edit, 2014-05-17), has simulated a failing editor in an unconventional way: test_must_fail env GIT_EDITOR='./fakeeditor;false' git replace --edit I presume the reason for this unconventional editor was the fact that 'git replace --edit' requires the edited object to be different from the original, but a mere 'false' as editor would leave the object unchanged and 'git replace --edit' would error out anyway complaining about the new and the original object files being the same. Running 'fakeeditor' before 'false' was supposed to ensure that the object file is modified and thus 'git replace --edit' errors out because of the failed editor. However, this editor doesn't actually modify the edited object, because start_command() turns this editor into: /bin/sh -c './fakeeditor;false "$@"' './fakeeditor;false' \ '.../.git/REPLACE_EDITOBJ' This means that the test's fakeeditor script doesn't even get the path of the object to be edited as argument, triggering error messages from the commands executed inside the script ('sed' and 'mv'), and ultimately leaving the object file unchanged. If a patch were to remove the die() from the error path after launch_editor(), the test would not catch it, because 'git replace' would continue execution past launch_editor() and would error out a bit later due to the unchanged edited object. Though 'git replace' would error out for the wrong reason, this would satisfy 'test_must_fail' just as well, and the test would succeed leaving the undesired change unnoticed. Create a proper failing fake editor script for this test to ensure that the edited object is in fact modified and 'git replace --edit' won't error out because the new and original object files are the same. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 05 January 2016, 17:50:39 UTC |
e914ef0 | Eric Wong | 05 January 2016, 03:51:57 UTC | for-each-ref: document `creatordate` and `creator` fields These were introduced back in 2006 at 3175aa1ec28c but never documented. Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 05 January 2016, 17:44:19 UTC |
7548842 | Junio C Hamano | 04 January 2016, 22:08:04 UTC | Git 2.7 Signed-off-by: Junio C Hamano <gitster@pobox.com> | 04 January 2016, 22:08:04 UTC |
3e9226a | Junio C Hamano | 04 January 2016, 22:06:59 UTC | Sync with 2.6.5 | 04 January 2016, 22:06:59 UTC |
833e482 | Junio C Hamano | 04 January 2016, 22:06:00 UTC | Git 2.6.5 Signed-off-by: Junio C Hamano <gitster@pobox.com> | 04 January 2016, 22:06:00 UTC |
e3073cf | Junio C Hamano | 04 January 2016, 22:03:07 UTC | Merge branch 'jk/pending-keep-tag-name' into maint History traversal with "git log --source" that starts with an annotated tag failed to report the tag as "source", due to an old regression in the command line parser back in v2.2 days. * jk/pending-keep-tag-name: revision.c: propagate tag names from pending array | 04 January 2016, 22:03:08 UTC |
e002527 | Junio C Hamano | 04 January 2016, 22:02:58 UTC | Merge branch 'jk/symbolic-ref-maint' into maint "git symbolic-ref" forgot to report a failure with its exit status. * jk/symbolic-ref-maint: t1401: test reflog creation for git-symbolic-ref symbolic-ref: propagate error code from create_symref() | 04 January 2016, 22:02:58 UTC |
e54d0f5 | Junio C Hamano | 04 January 2016, 22:02:57 UTC | Merge branch 'jk/ident-loosen-getpwuid' into maint When getpwuid() on the system returned NULL (e.g. the user is not in the /etc/passwd file or other uid-to-name mappings), the codepath to find who the user is to record it in the reflog barfed and died. Loosen the check in this codepath, which already accepts questionable ident string (e.g. host part of the e-mail address is obviously bogus), and in general when we operate fmt_ident() function in non-strict mode. * jk/ident-loosen-getpwuid: ident: loosen getpwuid error in non-strict mode ident: keep a flag for bogus default_email ident: make xgetpwuid_self() a static local helper | 04 January 2016, 22:02:57 UTC |
06b5c93 | Junio C Hamano | 04 January 2016, 22:02:55 UTC | Merge branch 'jk/send-email-ssl-errors' into maint Improve error reporting when SMTP TLS fails. * jk/send-email-ssl-errors: send-email: enable SSL level 1 debug output | 04 January 2016, 22:02:55 UTC |
34872f0 | Junio C Hamano | 04 January 2016, 22:02:45 UTC | Merge branch 'sg/completion-no-column' into maint The completion script (in contrib/) used to list "git column" (which is not an end-user facing command) as one of the choices * sg/completion-no-column: completion: remove 'git column' from porcelain commands | 04 January 2016, 22:02:47 UTC |
2c510f2 | Eric Wong | 04 January 2016, 20:53:30 UTC | git-send-email: do not double-escape quotes from mutt mutt saves aliases with escaped quotes in the form of: alias dot \"Dot U. Sir\" <somebody@example.org> When we pass through our sanitize_address routine, we end up with double-escaping: To: "\\\"Dot U. Sir\\\" <somebody@example.org> Remove the escaping in mutt only for now, as I am not sure if other mailers can do this or if this is better fixed in sanitize_address. Cc: Remi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr> Cc: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 04 January 2016, 21:35:40 UTC |
a0df2e5 | Jeff King | 29 December 2015, 06:36:00 UTC | bswap: add NO_UNALIGNED_LOADS define The byte-swapping code automatically decides, based on the platform, whether it is sensible to cast and do a potentially unaligned ntohl(), or to pick individual bytes out of an array. It can be handy to override this decision, though, when turning on compiler flags that will complain about unaligned loads (such as -fsanitize=undefined). This patch adds a macro check to make this possible. There's no nice Makefile knob here; this is for prodding at Git's internals, and anybody using it can set "-DNO_UNALIGNED_LOADS" in the same place they are setting up "-fsanitize". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 04 January 2016, 17:51:33 UTC |
9a93c66 | Jeff King | 29 December 2015, 06:35:46 UTC | avoid shifting signed integers 31 bits We sometimes use 32-bit unsigned integers as bit-fields. It's fine to access the MSB, because it's unsigned. However, doing so as "1 << 31" is wrong, because the constant "1" is a signed int, and we shift into the sign bit, causing undefined behavior. We can fix this by using "1U" as the constant. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 04 January 2016, 17:51:16 UTC |
c6cd266 | Changwoo Ryu | 03 January 2016, 10:07:29 UTC | l10n: ko.po: Add Korean translation Signed-off-by: Changwoo Ryu <cwryu@debian.org> Signed-off-by: Hyunjun Kim <yoloseem@users.noreply.github.com> | 03 January 2016, 10:07:29 UTC |
5863990 | Junio C Hamano | 02 January 2016, 19:31:43 UTC | Merge tag 'l10n-2.7.0-rnd2+de' of git://github.com/git-l10n/git-po l10n-2.7.0-rnd2+de * tag 'l10n-2.7.0-rnd2+de' of git://github.com/git-l10n/git-po: l10n: de.po: translate 68 new messages l10n: de.po: improve some translations | 02 January 2016, 19:31:43 UTC |
99487cf | Stephen P. Smith | 30 December 2015, 23:25:20 UTC | user-manual: add addition gitweb information Rework the section on gitweb to add information about the cgi script and the instaweb command. Signed-off-by: Stephen P. Smith <ischis2@cox.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 30 December 2015, 23:27:04 UTC |
9cfde9e | Stephen P. Smith | 30 December 2015, 00:03:50 UTC | user-manual: add section documenting shallow clones Signed-off-by: Stephen P. Smith <ischis2@cox.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 30 December 2015, 19:44:56 UTC |
bac5874 | Stephen P. Smith | 29 December 2015, 18:54:35 UTC | glossary: define the term shallow clone There are several places in the documentation that the term shallow clone is used. Defining the term enables its use elsewhere with a known definition. Signed-off-by: Stephen P. Smith <ischis2@cox.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 29 December 2015, 19:18:36 UTC |
02103b3 | Ralf Thielow | 22 December 2015, 17:08:06 UTC | l10n: de.po: translate 68 new messages Translate 68 new messages came from git.pot update in f4f2c8f (l10n: git.pot: v2.7.0 round 1 (66 new, 29 removed)) and 2c0ca05 (l10n: git.pot: v2.7.0 round 2 (2 new, 2 removed)). Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com> Acked-by: Matthias Rüster <matthias.ruester@gmail.com> | 29 December 2015, 18:53:17 UTC |
503b1ef | Ralf Thielow | 29 October 2015, 21:18:32 UTC | l10n: de.po: improve some translations Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com> Acked-by: Phillip Sz <phillip.szelat@gmail.com> | 29 December 2015, 18:53:17 UTC |
28274d0 | Junio C Hamano | 28 December 2015, 22:00:52 UTC | Git 2.7-rc3 Signed-off-by: Junio C Hamano <gitster@pobox.com> | 28 December 2015, 22:00:52 UTC |
aecb997 | Junio C Hamano | 28 December 2015, 21:58:57 UTC | Merge branch 'sh/p4-multi-depot' "git p4" when interacting with multiple depots at the same time used to incorrectly drop changes. * sh/p4-multi-depot: git-p4: reduce number of server queries for fetches git-p4: support multiple depot paths in p4 submit git-p4: failing test case for skipping changes with multiple depots | 28 December 2015, 21:58:58 UTC |
7195733 | Junio C Hamano | 28 December 2015, 21:58:03 UTC | Merge branch 'jk/pending-keep-tag-name' History traversal with "git log --source" that starts with an annotated tag failed to report the tag as "source", due to an old regression in the command line parser back in v2.2 days. * jk/pending-keep-tag-name: revision.c: propagate tag names from pending array | 28 December 2015, 21:58:04 UTC |
e929264 | Junio C Hamano | 28 December 2015, 21:57:24 UTC | Merge branch 'jk/symbolic-ref-maint' "git symbolic-ref" forgot to report a failure with its exit status. * jk/symbolic-ref-maint: t1401: test reflog creation for git-symbolic-ref symbolic-ref: propagate error code from create_symref() | 28 December 2015, 21:57:24 UTC |