summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2011-08-19want_color: automatically fallback to color.uiLibravatar Jeff King9-44/+6
All of the "do we want color" flags default to -1 to indicate that we don't have any color configured. This value is handled in one of two ways: 1. In porcelain, we check early on whether the value is still -1 after reading the config, and set it to the value of color.ui (which defaults to 0). 2. In plumbing, it stays untouched as -1, and want_color defaults it to off. This works fine, but means that every porcelain has to check and reassign its color flag. Now that want_color gives us a place to put this check in a single spot, we can do that, simplifying the calling code. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-19diff: don't load color config in plumbingLibravatar Jeff King3-3/+16
The diff config callback is split into two functions: one which loads "ui" config, and one which loads "basic" config. The former chains to the latter, as the diff UI config is a superset of the plumbing config. The color.diff variable is only loaded in the UI config. However, the basic config actually chains to git_color_default_config, which loads color.ui. This doesn't actually cause any bugs, because the plumbing diff code does not actually look at the value of color.ui. However, it is somewhat nonsensical, and it makes it difficult to refactor the color code. It probably came about because there is no git_color_config to load only color config, but rather just git_color_default_config, which loads color config and chains to git_default_config. This patch splits out the color-specific portion of git_color_default_config so that the diff UI config can call it directly. This is perhaps better explained by the chaining of callbacks. Before we had: git_diff_ui_config -> git_diff_basic_config -> git_color_default_config -> git_default_config Now we have: git_diff_ui_config -> git_color_config -> git_diff_basic_config -> git_default_config Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-19config: refactor get_colorbool functionLibravatar Jeff King1-2/+3
For "git config --get-colorbool color.foo", we use a custom callback that looks not only for the key that the user gave us, but also for "diff.color" (for backwards compatibility) and "color.ui" (as a fallback). For the former, we use a custom variable to store the diff.color value. For the latter, though, we store it in the main "git_use_color_default" variable, turning on color.ui for any other parts of git that respect this value. In practice, this doesn't cause any bugs, because git-config runs without caring about git_use_color_default, and then exits. But it crosses module boundaries in an unusual and confusing way, and it makes refactoring color handling harder than it needs to be. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-19color: delay auto-color decision until point of useLibravatar Jeff King11-19/+59
When we read a color value either from a config file or from the command line, we use git_config_colorbool to convert it from the tristate always/never/auto into a single yes/no boolean value. This has some timing implications with respect to starting a pager. If we start (or decide not to start) the pager before checking the colorbool, everything is fine. Either isatty(1) will give us the right information, or we will properly check for pager_in_use(). However, if we decide to start a pager after we have checked the colorbool, things are not so simple. If stdout is a tty, then we will have already decided to use color. However, the user may also have configured color.pager not to use color with the pager. In this case, we need to actually turn off color. Unfortunately, the pager code has no idea which color variables were turned on (and there are many of them throughout the code, and they may even have been manipulated after the colorbool selection by something like "--color" on the command line). This bug can be seen any time a pager is started after config and command line options are checked. This has affected "git diff" since 89d07f7 (diff: don't run pager if user asked for a diff style exit code, 2007-08-12). It has also affect the log family since 1fda91b (Fix 'git log' early pager startup error case, 2010-08-24). This patch splits the notion of parsing a colorbool and actually checking the configuration. The "use_color" variables now have an additional possible value, GIT_COLOR_AUTO. Users of the variable should use the new "want_color()" wrapper, which will lazily determine and cache the auto-color decision. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-18git_config_colorbool: refactor stdout_is_tty handlingLibravatar Jeff King9-29/+27
Usually this function figures out for itself whether stdout is a tty. However, it has an extra parameter just to allow git-config to override the auto-detection for its --get-colorbool option. Instead of an extra parameter, let's just use a global variable. This makes calling easier in the common case, and will make refactoring the colorbool code much simpler. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-18diff: refactor COLOR_DIFF from a flag into an intLibravatar Jeff King7-34/+29
This lets us store more than just a bit flag for whether we want color; we can also store whether we want automatic colors. This can be useful for making the automatic-color decision closer to the point of use. This mostly just involves replacing DIFF_OPT_* calls with manipulations of the flag. The biggest exception is that calls to DIFF_OPT_TST must check for "o->use_color > 0", which lets an "unknown" value (i.e., the default) stay at "no color". In the previous code, a value of "-1" was not propagated at all. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-18setup_pager: set GIT_PAGER_IN_USELibravatar Jeff King2-7/+12
We have always set a global "spawned_pager" variable when we start the pager. This lets us make the auto-color decision later in the program as as "we are outputting to a terminal, or to a pager which can handle colors". Commit 6e9af86 added support for the GIT_PAGER_IN_USE environment variable. An external program calling git (e.g., git-svn) could set this variable to indicate that it had already started the pager, and that the decision about auto-coloring should take that into account. However, 6e9af86 failed to do the reverse, which is to tell external programs when git itself has started the pager. Thus a git command implemented as an external script that has the pager turned on (e.g., "git -p stash show") would not realize it was going to a pager, and would suppress colors. This patch remedies that; we always set GIT_PAGER_IN_USE when we start the pager, and the value is respected by both this program and any spawned children. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-18t7006: use test_config helpersLibravatar Jeff King1-21/+18
In some cases, this is just making the test script a little shorter and easier to read. However, there are several places where we didn't take proper precautions against polluting downstream tests with our config; this fixes them, too. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-18test-lib: add helper functions for configLibravatar Jeff King1-0/+18
There are a few common tasks when working with configuration variables in tests; this patch aims to make them a little easier to write and less error-prone. When setting a variable, you should typically make sure to clean it up after the test is finished, so as not to pollute other tests. Like: test_when_finished 'git config --unset foo.bar' && git config foo.bar baz This patch lets you just write: test_config foo.bar baz When clearing a variable that does not exist, git-config will report a specific non-zero error code. Meaning that tests which call "git config --unset" often either rely on the prior tests having actually set it, or must use test_might_fail. With this patch, the previous: test_might_fail git config --unset foo.bar becomes: test_unconfig foo.bar Not only is this easier to type, but it is more robust; it will correctly detect errors from git-config besides "key was not set". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-18t7006: modernize calls to unsetLibravatar Jeff King1-2/+2
These tests break &&-chaining to deal with broken "unset" implementations. Instead, they should just use sane_unset. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-17checkout-index: remove obsolete commentLibravatar Nguyễn Thái Ngọc Duy1-32/+0
The first paragraph about flag order is no longer true and is mentioned in git-checkout-index.txt. The rest is also mentioned in git-checkout-index.txt. Remove it and keep uptodate document in one place. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-16Prepare for 1.7.6.1Libravatar Junio C Hamano2-1/+53
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-16Merge branch 'jk/tag-list-multiple-patterns' into maintLibravatar Junio C Hamano3-12/+28
* jk/tag-list-multiple-patterns: tag: accept multiple patterns for --list
2011-08-16Merge branch 'jl/submodule-update-quiet' into maintLibravatar Junio C Hamano2-4/+11
* jl/submodule-update-quiet: submodule: update and add must honor --quiet flag
2011-08-16Merge branch 'jl/submodule-add-relurl-wo-upstream' into maintLibravatar Junio C Hamano3-11/+15
* jl/submodule-add-relurl-wo-upstream: submodule add: clean up duplicated code submodule add: allow relative repository path even when no url is set submodule add: test failure when url is not configured in superproject Conflicts: git-submodule.sh
2011-08-16Merge branch 'oa/pull-reflog' into maintLibravatar Junio C Hamano1-1/+1
* oa/pull-reflog: pull: remove extra space from reflog message
2011-08-16Merge branch 'js/ls-tree-error' into maintLibravatar Junio C Hamano2-3/+25
* js/ls-tree-error: Ensure git ls-tree exits with a non-zero exit code if read_tree_recursive fails. Add a test to check that git ls-tree sets non-zero exit code on error.
2011-08-16Merge branch 'jk/fast-export-quote-path' into maintLibravatar Junio C Hamano2-8/+51
* jk/fast-export-quote-path: fast-export: quote paths in output
2011-08-16Merge branch 'jc/checkout-reflog-fix' into maintLibravatar Junio C Hamano1-2/+5
* jc/checkout-reflog-fix: checkout: do not write bogus reflog entry out
2011-08-16Merge branch 'jc/maint-reset-unmerged-path' into maintLibravatar Junio C Hamano3-2/+18
* jc/maint-reset-unmerged-path: reset [<commit>] paths...: do not mishandle unmerged paths
2011-08-16Merge branch 'mz/doc-rebase-abort' into maintLibravatar Junio C Hamano2-7/+11
* mz/doc-rebase-abort: rebase: clarify "restore the original branch"
2011-08-16Merge branch 'bw/log-all-ref-updates-doc' into maintLibravatar Junio C Hamano2-3/+6
* bw/log-all-ref-updates-doc: Documentation: clearly specify what refs are honored by core.logAllRefUpdates
2011-08-16Merge branch 'js/maint-add-path-stat-pwd' into maintLibravatar Junio C Hamano1-1/+2
* js/maint-add-path-stat-pwd: get_pwd_cwd(): Do not trust st_dev/st_ino blindly
2011-08-16Merge branch 'ms/help-unknown' into maintLibravatar Junio C Hamano1-0/+12
* ms/help-unknown: help_unknown_cmd: do not propose an "unknown" cmd
2011-08-16Merge branch 'mz/doc-synopsis-verse' into maintLibravatar Junio C Hamano93-6/+92
* mz/doc-synopsis-verse: Documentation: use [verse] for SYNOPSIS sections
2011-08-16Merge branch 'jn/mime-type-with-params' into maintLibravatar Junio C Hamano1-1/+10
* jn/mime-type-with-params: gitweb: Serve */*+xml 'blob_plain' as text/plain with $prevent_xss gitweb: Serve text/* 'blob_plain' as text/plain with $prevent_xss
2011-08-16Merge branch 'jc/submodule-sync-no-auto-vivify' into maintLibravatar Junio C Hamano3-30/+47
* jc/submodule-sync-no-auto-vivify: submodule add: always initialize .git/config entry submodule sync: do not auto-vivify uninteresting submodule
2011-08-16Merge branch 'jc/zlib-wrap' into maintLibravatar Junio C Hamano15-124/+321
* jc/zlib-wrap: zlib: allow feeding more than 4GB in one go zlib: zlib can only process 4GB at a time zlib: wrap deflateBound() too zlib: wrap deflate side of the API zlib: wrap inflateInit2 used to accept only for gzip format zlib: wrap remaining calls to direct inflate/inflateEnd zlib wrapper: refactor error message formatter
2011-08-16Merge branch 'fk/relink-upon-ldflags-update' into maintLibravatar Junio C Hamano2-8/+18
* fk/relink-upon-ldflags-update: Makefile: Track changes to LDFLAGS and relink when necessary
2011-08-16Merge branch 'bc/submodule-foreach-stdin-fix-1.7.4' into maintLibravatar Junio C Hamano2-1/+23
* bc/submodule-foreach-stdin-fix-1.7.4: git-submodule.sh: preserve stdin for the command spawned by foreach t/t7407: demonstrate that the command called by 'submodule foreach' loses stdin
2011-08-16Merge branch 'aw/rebase-i-p' into maintLibravatar Junio C Hamano4-5/+30
* aw/rebase-i-p: rebase -i -p: include non-first-parent commits in todo list
2011-08-16Merge branch 'jc/diff-index-quick-exit-early' into maintLibravatar Junio C Hamano3-2/+10
* jc/diff-index-quick-exit-early: diff-index --quiet: learn the "stop feeding the backend early" logic Conflicts: unpack-trees.h
2011-08-16Merge branch 'jk/combine-diff-binary-etc' into maintLibravatar Junio C Hamano5-83/+376
* jk/combine-diff-binary-etc: combine-diff: respect textconv attributes refactor get_textconv to not require diff_filespec combine-diff: handle binary files as binary combine-diff: calculate mode_differs earlier combine-diff: split header printing into its own function
2011-08-16am: refresh the index at start and --resolvedLibravatar Jeff King1-0/+2
If a file is unchanged but stat-dirty, we may erroneously fail to apply patches, thinking that they conflict with a dirty working tree. This patch adds a call to "update-index --refresh". It comes as late as possible, so that we don't bother with it for thinks like "git rebase --abort", or when mbox-splitting fails. However, it does come before we actually start applying patches, meaning we will only call it once when we start applying patches (or any time we return to "am" after having resolved conflicts), and not once per patch. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-08filter-branch: Export variable `workdir' for --commit-filterLibravatar Michael Witten1-1/+1
According to `git help filter-branch': --commit-filter <command> ... You can use the _map_ convenience function in this filter, and other convenience functions, too... ... However, it turns out that `map' hasn't been usable because it depends on the variable `workdir', which is not propogated to the environment of the shell that runs the commit-filter <command> because the shell is created via a simple-command rather than a compound-command subshell: @SHELL_PATH@ -c "$filter_commit" "git commit-tree" \ $(git write-tree) $parentstr < ../message > ../map/$commit || die "could not write rewritten commit" One solution is simply to export `workdir'. However, it seems rather heavy-handed to export `workdir' to the environments of all commands, so instead this commit exports `workdir' for only the duration of the shell command in question: workdir=$workdir @SHELL_PATH@ -c "$filter_commit" "git commit-tree" \ $(git write-tree) $parentstr < ../message > ../map/$commit || die "could not write rewritten commit" Signed-off-by: Michael Witten <mfwitten@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-08Documentation/Makefile: add *.pdf to `clean' targetLibravatar Emilio G. Cota1-0/+1
user-manual.pdf is not removed by `make clean'; fix it. Signed-off-by: Emilio G. Cota <cota@braap.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-08Documentation: ignore *.pdf filesLibravatar Emilio G. Cota1-0/+1
user-manual.pdf is generated by the build and therefore should be ignored by git. Signed-off-by: Emilio G. Cota <cota@braap.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-05fast-export: quote paths in outputLibravatar Jeff King2-8/+51
Many pathnames in a fast-import stream need to be quoted. In particular: 1. Pathnames at the end of an "M" or "D" line need quoting if they contain a LF or start with double-quote. 2. Pathnames on a "C" or "R" line need quoting as above, but also if they contain spaces. For (1), we weren't quoting at all. For (2), we put double-quotes around the paths to handle spaces, but ignored the possibility that they would need further quoting. This patch checks whether each pathname needs c-style quoting, and uses it. This is slightly overkill for (1), which doesn't actually need to quote many characters that vanilla c-style quoting does. However, it shouldn't hurt, as any implementation needs to be ready to handle quoted strings anyway. In addition to adding a test, we have to tweak a test which blindly assumed that case (2) would always use double-quotes, whether it needed to or not. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-03add gitignore entry to description about how to write a builtinLibravatar Heiko Voigt1-0/+2
If the author forgets the gitignore entry the built result will show up as new file in the git working directory. Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-03gitattributes: Reword "attribute macro" to "macro attribute"Libravatar Michael Haggerty1-9/+9
The new wording makes it clearer that such a beast is an attribute in addition to being a macro (as opposed to being only a macro that is used for attributes). Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-03gitattributes: Clarify discussion of attribute macrosLibravatar Michael Haggerty1-5/+8
In particular, make it clear that attribute macros are themselves recorded as attributes in addition to setting other attributes. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-01pull: remove extra space from reflog messageLibravatar Ori Avtalion1-1/+1
When executing "git pull" with no arguments, the reflog message was: "pull : Fast-forward" Signed-off-by: Ori Avtalion <ori@avtalion.name> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-01Merge branch 'nk/ref-doc' into maintLibravatar Junio C Hamano4-30/+34
* nk/ref-doc: glossary: clarify description of HEAD glossary: update description of head and ref glossary: update description of "tag" git.txt: de-emphasize the implementation detail of a ref check-ref-format doc: de-emphasize the implementation detail of a ref git-remote.txt: avoid sounding as if loose refs are the only ones in the world git-remote.txt: fix wrong remote refspec
2011-08-01Merge branch 'jl/maint-fetch-recursive-fix' into maintLibravatar Junio C Hamano2-8/+9
* jl/maint-fetch-recursive-fix: fetch: Also fetch submodules in subdirectories in on-demand mode
2011-08-01Merge branch 'jc/maint-cygwin-trust-executable-bit-default' into maintLibravatar Junio C Hamano1-1/+1
* jc/maint-cygwin-trust-executable-bit-default: cygwin: trust executable bit by default
2011-08-01Merge branch 'jc/legacy-loose-object' into maintLibravatar Junio C Hamano1-29/+33
* jc/legacy-loose-object: sha1_file.c: "legacy" is really the current format
2011-08-01Merge branch 'an/shallow-doc' into maintLibravatar Junio C Hamano1-29/+74
* an/shallow-doc: Document the underlying protocol used by shallow repositories and --depth commands. Fix documentation of fetch-pack that implies that the client can disconnect after sending wants.
2011-08-01Merge branch 'jc/maint-1.7.3-checkout-describe' into maintLibravatar Junio C Hamano4-1/+19
* jc/maint-1.7.3-checkout-describe: checkout -b <name>: correctly detect existing branch
2011-08-01connect: correctly number ipv6 network adapterLibravatar Erik Faye-Lund1-1/+1
In ba50532, the variable 'cnt' was added to both the IPv6 and the IPv4 version of git_tcp_connect_sock, intended to identify which network adapter the connection failed on. But in the IPv6 version, the variable was never increased, leaving it constantly at zero. This behaviour isn't very useful, so let's fix it by increasing the variable at every loop-iteration. Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-07-31Break down no-lstat() condition checks in verify_uptodate()Libravatar Nguyễn Thái Ngọc Duy1-2/+13
Make it easier to grok under what conditions we can skip lstat(). While at there, shorten ie_match_stat() line for the sake of my eyes. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>