{"thread":{"id":"34410","subject":"What's cooking in git.git (Jul 2013, #04; Thu, 11)","startedAt":"2013-07-11T23:36:51Z","lastAt":"2013-09-30T23:23:50Z","messageCount":10,"participants":["Junio C Hamano","Stefan Beller","Felipe Contreras","Ramsay Jones","Jonathan Nieder","Jeff King"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"223118","messageId":"7vfvvkpt2k.fsf@alter.siamese.dyndns.org","threadId":"34410","inReplyTo":null,"subject":"What's cooking in git.git (Jul 2013, #04; Thu, 11)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2013-07-11T23:36:51Z","receivedAt":"2013-07-11T23:36:51Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Here are the topics that have been cooking.  Commits prefixed with\n'-' are only in 'pu' (proposed updates) while commits prefixed with\n'+' are in 'next'.\n\nYou can find the changes described here in the integration branches\nof the repositories listed at\n\n    http://git-blame.blogspot.com/p/git-public-repositories.html\n\n--------------------------------------------------\n[Graduated to \"master\"]\n\n* af/rebase-i-merge-options (2013-07-02) 1 commit\n  (merged to 'next' on 2013-07-08 at f411975)\n + Do not ignore merge options in interactive rebase\n\n \"git rebase -i\" now honors --strategy and -X options.\n\n\n* jc/maint-diff-core-safecrlf (2013-06-25) 1 commit\n  (merged to 'next' on 2013-07-03 at db8a2a6)\n + diff: demote core.safecrlf=true to core.safecrlf=warn\n\n \"git diff\" refused to even show difference when core.safecrlf is\n set to true (i.e. error out) and there are offending lines in the\n working tree files.\n\n\n* jc/t1512-fix (2013-07-01) 2 commits\n  (merged to 'next' on 2013-07-09 at a6c62bb)\n + get_short_sha1(): correctly disambiguate type-limited abbreviation\n + t1512: correct leftover constants from earlier edition\n\n A test that should have failed but didn't revealed a bug that needs\n to be corrected.\n\n\n* jc/triangle-push-fixup (2013-06-24) 5 commits\n  (merged to 'next' on 2013-06-26 at 73cbb69)\n + t/t5528-push-default: test pushdefault workflows\n + t/t5528-push-default: generalize test_push_*\n + push: change `simple` to accommodate triangular workflows\n + config doc: rewrite push.default section\n + t/t5528-push-default: remove redundant test_config lines\n\n Earlier remote.pushdefault (and per-branch branch.*.pushremote)\n were introduced as an additional mechanism to choose what\n repository to push into when \"git push\" did not say it from the\n command line, to help people who push to a repository that is\n different from where they fetch from.  This attempts to finish that\n topic by teaching the default mechanism to choose branch in the\n remote repository to be updated by such a push.\n\n The 'current', 'matching' and 'nothing' modes (specified by the\n push.default configuration variable) extend to such a \"triangular\"\n workflow naturally, but 'upstream' and 'simple' have to be updated.\n\n . 'upstream' is about pushing back to update the branch in the\n remote repository that the current branch fetches from and\n integrates with, it errors out in a triangular workflow.\n\n . 'simple' is meant to help new people by avoiding mistakes, and\n will be the safe default in Git 2.0.  In a non-triangular\n workflow, it will continue to act as a cross between 'upstream'\n and 'current' in that it pushes to the current branch's\n @{upstream} only when it is set to the same name as the current\n branch (e.g. your 'master' forks from the 'master' from the\n central repository).  In a triangular workflow, this series\n tentatively defines it as the same as 'current', but we may have\n to tighten it to avoid surprises in some way.\n\n\n* jg/status-config (2013-06-24) 4 commits\n  (merged to 'next' on 2013-07-03 at 6ac1ada)\n + status/commit: make sure --porcelain is not affected by user-facing config\n + commit: make it work with status.short\n + status: introduce status.branch to enable --branch by default\n + status: introduce status.short to enable --short by default\n\n \"git status\" learned status.branch and status.short configuration\n variables to use --branch and --short options by default (override\n with --no-branch and --no-short options from the command line).\n\n The bottom two has been graduated to 'master' but then reverted.\n The tip two are quick attempts to fix the fallout.  The one for\n status.short looks correct; the other one, while it is correct,\n is unfortunately overly complex in order not to introduce an\n unnecessary regression.\n\n\n* jk/bash-completion (2013-06-30) 2 commits\n  (merged to 'next' on 2013-07-01 at 6daca44)\n + completion: learn about --man-path\n + completion: handle unstuck form of base git options\n\n\n* mh/maint-lockfile-overflow (2013-07-07) 1 commit\n  (merged to 'next' on 2013-07-09 at e1a0eac)\n + lockfile: fix buffer overflow in path handling\n\n Will merge later to 'maint'.\n\n\n* pb/stash-refuse-to-kill (2013-07-01) 2 commits\n  (merged to 'next' on 2013-07-05 at 78ecc59)\n + git stash: avoid data loss when \"git stash save\" kills a directory\n + treat_directory(): do not declare submodules to be untracked\n\n \"git stash save\" is not just about \"saving\" the local changes, but\n also is to restore the working tree state to that of HEAD. If you\n changed a non-directory into a directory in the local change, you\n may have untracked files in that directory, which have to be killed\n while doing so, unless you run it with --include-untracked.  Teach\n the command to detect and error out before spreading the damage.\n\n This needed a small fix to \"ls-files --killed\".\n\n\n* rr/rebase-checkout-reflog (2013-06-17) 5 commits\n  (merged to 'next' on 2013-07-01 at 27cfd27)\n + checkout: respect GIT_REFLOG_ACTION\n  (merged to 'next' on 2013-06-27 at 4d99efa)\n + status: do not depend on rebase reflog messages\n + t/t2021-checkout-last: \"checkout -\" should work after a rebase finishes\n + wt-status: remove unused field in grab_1st_switch_cbdata\n + t7512: test \"detached from\" as well\n (this branch is used by rr/rebase-reflog-message-reword.)\n\n Invocations of \"git checkout\" used internally by \"git rebase\" were\n counted as \"checkout\", and affected later \"git checkout -\" to the\n the user to an unexpected place.\n\n The \"bugfix\" bits of the series is here.  The follow-up part to\n reword reflog messages for steps in \"rebase\" are split to another\n topic.\n\n\n* tr/test-v-and-v-subtest-only (2013-07-08) 1 commit\n  (merged to 'next' on 2013-07-08 at 933d477)\n + t0000: do not use export X=Y\n\n Finishing touches to a topics that is already in master for the\n upcoming release.\n\n--------------------------------------------------\n[New Topics]\n\n* jk/gcc-function-attributes (2013-07-09) 2 commits\n - use \"sentinel\" function attribute for variadic lists\n - add missing \"format\" function attributes\n (this branch is used by jk/gcc-function-attributes-more.)\n\n Use the function attributes extension to catch mistakes in use of\n our own variadic functions that use NULL sentinel at the end\n (i.e. like execl(3)) and format strings (i.e. like printf(3)).\n\n Will merge to 'next'.\n\n\n* jk/gcc-function-attributes-more (2013-07-09) 2 commits\n . (squash???) workaround empty format string warning which we agreed is silly\n . wt-status: use \"format\" function attribute for status_printf\n (this branch uses jk/gcc-function-attributes.)\n\n The continuation of jk/gcc-function-attributes, but the code\n involved uses an equivalent of printf(\"\"), which triggers an\n warning.\n\n I am inclined to remove the \"fixup\" workaround at the tip that\n turns them into a silly equivalent of printf(\"%s\", \"\") and tell\n users who use -Werror to also use -Wno-format-zero-length.\n\n\n* km/http-curl-config-per-url (2013-07-11) 1 commit\n - config: add support for http.<url>.* settings\n\n Allows custom curl configuration per URL when talking over http.\n\n Partial matching code was hard to grok, and requested for\n code clarification.\n\n--------------------------------------------------\n[Stalled]\n\n* rr/send-email-ssl-verify (2013-07-06) 6 commits\n - SQUASH??? update to support SSL_ca_file as well as SSL_ca_path\n - SQUASH??? send-email: cover both smtps and starttls cases\n - fixup! send-email: squelch warning from Net::SMTP::SSL\n - SQUASH??? send-email giving default value to ssl-cert-path with ||= assignment\n - send-email: introduce sendemail.smtpsslcertpath\n - send-email: squelch warning from Net::SMTP::SSL\n\n The issue seems a lot deeper than the initial attempt and needs\n somebody to sit down and sort out to get the version dependencies\n and lazy loading right.\n\n\n* rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits\n - ### DONTMERGE: needs better explanation on what config they need\n - pack-refs.c: Add missing call to git_config()\n - show-ref.c: Add missing call to git_config()\n\n The changes themselves are probably good, but it is unclear what\n basic setting needs to be read for which exact operation.\n\n Waiting for clarification.\n $gmane/228294\n\n\n* jh/shorten-refname (2013-05-07) 4 commits\n - t1514: refname shortening is done after dereferencing symbolic refs\n - shorten_unambiguous_ref(): Fix shortening refs/remotes/origin/HEAD to origin\n - t1514: Demonstrate failure to correctly shorten \"refs/remotes/origin/HEAD\"\n - t1514: Add tests of shortening refnames in strict/loose mode\n\n When remotes/origin/HEAD is not a symbolic ref, \"rev-parse\n --abbrev-ref remotes/origin/HEAD\" ought to show \"origin\", not\n \"origin/HEAD\", which is fixed with this series (if it is a symbolic\n ref that points at remotes/origin/something, then it should show\n \"origin/something\" and it already does).\n\n Expecting a reroll, as an early part of a larger series.\n $gmane/225137\n\n\n* jl/submodule-mv (2013-04-23) 5 commits\n - submodule.c: duplicate real_path's return value\n - rm: delete .gitmodules entry of submodules removed from the work tree\n - Teach mv to update the path entry in .gitmodules for moved submodules\n - Teach mv to move submodules using a gitfile\n - Teach mv to move submodules together with their work trees\n\n \"git mv A B\" when moving a submodule A does \"the right thing\",\n inclusing relocating its working tree and adjusting the paths in\n the .gitmodules file.\n\n Waiting for a reroll.\n $gmane/226294\n\n\n* jk/list-objects-sans-blobs (2013-06-06) 4 commits\n . archive: ignore blob objects when checking reachability\n . list-objects: optimize \"revs->blob_objects = 0\" case\n . upload-archive: restrict remote objects with reachability check\n . clear parsed flag when we free tree buffers\n\n Attempt to allow \"archive --remote=$there $arbitrary_sha1\" while\n keeping the reachability safety.\n\n Seems to break some tests in a trivial and obvious way.\n\n\n* mg/more-textconv (2013-05-10) 7 commits\n - grep: honor --textconv for the case rev:path\n - grep: allow to use textconv filters\n - t7008: demonstrate behavior of grep with textconv\n - cat-file: do not die on --textconv without textconv filters\n - show: honor --textconv for blobs\n - diff_opt: track whether flags have been set explicitly\n - t4030: demonstrate behavior of show with textconv\n\n Make \"git grep\" and \"git show\" pay attention to --textconv when\n dealing with blob objects.\n\n I thought this was pretty well designed and executed, but it seems\n there are some doubts on the list; kicked back to 'pu'.\n\n\n* mh/multimail (2013-04-21) 1 commit\n - git-multimail: a replacement for post-receive-email\n\n Waiting for the initial history to pull from.\n $gmane/223564\n\n\n* jc/format-patch (2013-04-22) 2 commits\n - format-patch: --inline-single\n - format-patch: rename \"no_inline\" field\n\n A new option to send a single patch to the standard output to be\n appended at the bottom of a message.  I personally have no need for\n this, but it was easy enough to cobble together.  Tests, docs and\n stripping out more MIMEy stuff are left as exercises to interested\n parties.\n\n Not ready for inclusion.\n\n Will discard unless we hear from anybody who is interested in\n tying its loose ends.\n\n\n* jk/gitweb-utf8 (2013-04-08) 4 commits\n - gitweb: Fix broken blob action parameters on blob/commitdiff pages\n - gitweb: Don't append ';js=(0|1)' to external links\n - gitweb: Make feed title valid utf8\n - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch\n\n Various fixes to gitweb.\n\n Drew Northup volunteered to take a look into this.\n $gmane/226216\n\n\n* jc/show-branch (2013-06-07) 5 commits\n - show-branch: use commit slab to represent bitflags of arbitrary width\n - show-branch.c: remove \"all_mask\"\n - show-branch.c: abstract out \"flags\" operation\n - show-branch.c: lift all_mask/all_revs to a global static\n - show-branch.c: update comment style\n\n Waiting for the final step to lift the hard-limit before sending it out.\n\n--------------------------------------------------\n[Cooking]\n\n* hv/config-from-blob (2013-07-11) 5 commits\n - do not die when error in config parsing of buf occurs\n - teach config --blob option to parse config from database\n - config: make parsing stack struct independent from actual data source\n - config: drop cf validity check in get_next_char()\n - config: factor out config file stack management\n\n Rerolled.\n\n\n* bc/push-match-many-refs (2013-07-08) 1 commit\n  (merged to 'next' on 2013-07-11 at df4d56d)\n + remote.c: avoid O(m*n) behavior in match_push_refs\n\n Pushing to repositories with many refs employed O(m*n) algorithm\n where n is the number of refs on the receiving end.\n\n Will merge to 'master'.\n\n\n* ft/diff-rename-default-score-is-half (2013-07-05) 1 commit\n  (merged to 'next' on 2013-07-09 at 6a6b57e)\n + diff-options: document default similarity index\n\n Will merge to 'master'.\n\n\n* jc/name-rev-exact-ref (2013-07-09) 3 commits\n  (merged to 'next' on 2013-07-11 at fd5b30c)\n + describe: use argv-array\n + name-rev: allow converting the exact object name at the tip of a ref\n + name-ref: factor out name shortening logic from name_ref()\n\n Corrects the longstanding sloppiness in the implementation of\n name-rev that conflated \"we take commit-ish\" and \"differences\n between tags and commits do not matter\".\n\n Will merge to 'master'.\n\n\n* jk/in-pack-size-measurement (2013-07-11) 10 commits\n - pack-revindex: radix-sort the revindex\n - pack-revindex: use unsigned to store number of objects\n - cat-file: split --batch input lines on whitespace\n - cat-file: add %(objectsize:disk) format atom\n - cat-file: add --batch-check=<format>\n - cat-file: refactor --batch option parsing\n - cat-file: teach --batch to stream blob objects\n - t1006: modernize output comparisons\n - teach sha1_object_info_extended a \"disk_size\" query\n - zero-initialize object_info structs\n\n Allow on-disk footprint of objects in packfiles (often they are a\n lot smaller than their true size, when expressed as deltas).\n\n Will merge to 'next'.\n\n\n* jk/maint-clone-shared-no-connectivity-validation (2013-07-08) 1 commit\n  (merged to 'next' on 2013-07-11 at 8183412)\n + clone: drop connectivity check for local clones\n (this branch is used by jk/clone-shared-no-connectivity-validation.)\n\n \"git clone -s/-l\" is a filesystem level copy and does not offer any\n protection against source repository being corrupt.  While the\n connectivity validation checks commits and trees being readable, it\n made the otherwise instantaneous local modes of clone much more\n expensive, without protecting blob data from bitflips.\n\n Will merge to 'master'.\n\n\n* jk/maint-config-multi-order (2013-07-07) 1 commit\n  (merged to 'next' on 2013-07-09 at 0db1db9)\n + git-config(1): clarify precedence of multiple values\n\n Will merge to 'master'.\n\n\n* jk/pull-to-integrate (2013-07-08) 2 commits\n  (merged to 'next' on 2013-07-09 at 2ecac24)\n + pull: change the description to \"integrate\" changes\n + push: avoid suggesting \"merging\" remote changes\n\n Will merge to 'master'.\n\n\n* km/svn-1.8-serf-only (2013-07-07) 2 commits\n - git-svn: allow git-svn fetching to work using serf\n - Git.pm: add new temp_is_locked function\n\n Subversion 1.8.0 that was recently released breaks older subversion\n clients coming over http/https in various ways.\n\n Will merge to 'next'.\n\n\n* rr/name-rev-stdin-doc (2013-07-07) 1 commit\n  (merged to 'next' on 2013-07-09 at 7cfbff6)\n + name-rev doc: rewrite --stdin paragraph\n\n Will merge to 'master'.\n\n\n* rs/pickaxe-simplify (2013-07-07) 1 commit\n  (merged to 'next' on 2013-07-11 at c5972f7)\n + diffcore-pickaxe: simplify has_changes and contains\n\n Will merge to 'master'.\n\n\n* tr/merge-recursive-index-only (2013-07-07) 3 commits\n - merge-recursive: -Xindex-only to leave worktree unchanged\n - merge-recursive: untangle double meaning of o->call_depth\n - merge-recursive: remove dead conditional in update_stages()\n\n\n* tr/test-lint-no-export-assignment-in-shell (2013-07-08) 2 commits\n  (merged to 'next' on 2013-07-09 at 6f10ea2)\n + test-lint: detect 'export FOO=bar'\n + t9902: fix 'test A == B' to use = operator\n\n Will merge to 'master'.\n\n\n* es/overlapping-range-set (2013-07-09) 2 commits\n  (merged to 'next' on 2013-07-11 at 3df5a94)\n + range_set: fix coalescing bug when range is a subset of another\n + t4211: fix broken test when one -L range is subset of another\n\n Will merge to 'master'.\n\n\n* jc/push-cas (2013-07-11) 6 commits\n - t5533: test \"push --lockref\"\n - push --lockref: tie it all together\n - push --lockref: implement logic to populate old_sha1_expect[]\n - remote.c: add command line option parser for \"--lockref\"\n - builtin/push.c: use OPT_BOOL, not OPT_BOOLEAN\n - cache.h: move remote/connect API out of it\n\n Allow a safer \"rewind of the remote tip\" push than blind \"--force\",\n by requiring that the overwritten remote ref to be unchanged since\n the new history to replace it was prepared.\n\n The machinery is more or less ready.  The \"--force\" option is again\n the big red button to override any safety, thanks to J6t's sanity\n (the original round allowed --lockref to defeat --force).\n\n Waiting for comments.\n\n\n* jc/remote-http-argv-array (2013-07-09) 1 commit\n  (merged to 'next' on 2013-07-11 at 7fbe8bd)\n + remote-http: use argv-array\n\n Will merge to 'master'.\n\n\n* nd/const-struct-cache-entry (2013-07-09) 1 commit\n - Convert \"struct cache_entry *\" to \"const ...\" wherever possible\n\n Will merge to 'next'.\n\n\n* jk/fetch-pack-many-refs (2013-07-02) 3 commits\n  (merged to 'next' on 2013-07-09 at a53b7c7)\n + fetch-pack: avoid quadratic behavior in rev_list_push\n + commit.c: make compare_commits_by_commit_date global\n + fetch-pack: avoid quadratic list insertion in mark_complete\n\n Fetching between repositories with many refs employed O(n^2)\n algorithm to match up the common objects, which has been corrected.\n\n Will merge to 'master'.\n\n\n* jk/format-patch-from (2013-07-03) 2 commits\n  (merged to 'next' on 2013-07-09 at 6ed86d5)\n + teach format-patch to place other authors into in-body \"From\"\n + pretty.c: drop const-ness from pretty_print_context\n\n \"git format-patch\" learned \"--from[=whom]\" option, which sets the\n \"From: \" header to the specified person (or the person who runs the\n command, if \"=whom\" part is missing) and move the original author\n information to an in-body From: header as necessary.\n\n Will merge to 'master'.\n\n\n* ms/remote-tracking-branches-in-doc (2013-07-03) 1 commit\n  (merged to 'next' on 2013-07-09 at 411a8bd)\n + Change \"remote tracking\" to \"remote-tracking\"\n\n Will merge to 'master'.\n\n\n* tf/gitweb-extra-breadcrumbs (2013-07-04) 1 commit\n  (merged to 'next' on 2013-07-09 at 525331b)\n + gitweb: allow extra breadcrumbs to prefix the trail\n\n An Gitweb installation that is a part of larger site can optionally\n show extra links that point at the levels higher than the Gitweb\n pages itself in the link hierarchy of pages.\n\n Will merge to 'master'.\n\n\n* bc/commit-invalid-utf8 (2013-07-09) 3 commits\n  (merged to 'next' on 2013-07-11 at a2ee572)\n + commit: reject non-characters\n + commit: reject overlong UTF-8 sequences\n + commit: reject invalid UTF-8 codepoints\n\n Tighten up autodetection of UTF-8 encoded strings.\n\n Will merge to 'master'.\n\n\n* bc/send-email-use-port-as-separate-param (2013-07-04) 1 commit\n  (merged to 'next' on 2013-07-09 at a569eb5)\n + send-email: provide port separately from hostname\n\n Will merge to 'master'.\n\n\n* ml/cygwin-does-not-have-fifo (2013-07-05) 1 commit\n  (merged to 'next' on 2013-07-09 at 7d6849d)\n + test-lib.sh - cygwin does not have usable FIFOs\n\n Will merge to 'master'.\n\n\n* es/contacts (2013-07-03) 3 commits\n - contrib: contacts: interpret committish akin to format-patch\n - contrib: contacts: add ability to parse from committish\n - contrib: add git-contacts helper\n\n A helper to read from a set of format-patch output files or a range\n of commits and find those who may have insights to the code that\n the changes touch by running a series of \"git blame\" commands.\n\n Still needs to add mailmap support and other niceties but the\n basics already look sound, and the enhancements can be done\n in-tree. Assuming that \"git contact\" is something we may want to\n have as a member of the official set of commands someday, that is.\n\n Will merge to 'next'.\n\n\n* cp/submodule-custom-update (2013-07-03) 1 commit\n  (merged to 'next' on 2013-07-09 at 3d27516)\n + submodule update: allow custom command to update submodule working tree\n\n In addition to the choice from \"rebase, merge, or checkout-detach\",\n allow a custom command to be used in \"submodule update\" to update\n the working tree of submodules.\n\n Will merge to 'master'.\n\n\n* mv/merge-ff-tristate (2013-07-02) 1 commit\n  (merged to 'next' on 2013-07-09 at c32b95d)\n + merge: handle --ff/--no-ff/--ff-only as a tri-state option\n\n The configuration variable \"merge.ff\" was cleary a tri-state to\n choose one from \"favor fast-forward when possible\", \"always create\n a merge even when the history could fast-forward\" and \"do not\n create any merge, only update when the history fast-forwards\", but\n the command line parser did not implement the usual convention of\n \"last one wins, and command line overrides the configuration\"\n correctly.\n\n Will merge to 'master'.\n\n\n* rr/rebase-reflog-message-reword (2013-06-23) 2 commits\n  (merged to 'next' on 2013-07-11 at 59921e0)\n + rebase -i: use a better reflog message\n + rebase: use a better reflog message\n\n \"git rebase [-i]\" used to leave just \"rebase\" as its reflog message\n for some operations. This rewords them to be more informative.\n\n Will merge to 'master'.\n\n\n* bp/mediawiki-preview (2013-07-08) 7 commits\n - git-remote-mediawiki: add preview subcommand into git mw\n - git-remote-mediawiki: add git-mw command\n - git-remote-mediawiki: factoring code between git-remote-mediawiki and Git::Mediawiki\n - git-remote-mediawiki: update tests to run with the new bin-wrapper\n - git-remote-mediawiki: add a git bin-wrapper for developement\n - wrap-for-bin: make bin-wrappers chainable\n - git-remote-mediawiki: introduction of Git::Mediawiki.pm\n\n Add a command to allow previewing the contents locally before\n pushing it out, when working with a MediaWiki remote.\n\n I personally do not think this belongs to Git.  If you are working\n on a set of AsciiDoc source files, you sure do want to locally\n format to preview what you will be pushing out, and if you are\n working on a set of C or Java source files, you do want to test it\n before pushing it out, too.  That kind of thing belongs to your\n build script, not to your SCM.\n\n But I'll let it pass, as this is only a contrib/ thing.\n\n Will merge to 'next'.\n\n\n* fg/submodule-clone-depth (2013-07-03) 1 commit\n  (merged to 'next' on 2013-07-09 at ab156f3)\n + Add --depth to submodule update/add\n\n Allow shallow-cloning of submodules with \"git submodule update\".\n\n Will merge to 'master'.\n\n\n* jc/pull-training-wheel (2013-06-27) 1 commit\n - pull: require choice between rebase/merge on non-fast-forward pull\n\n Make \"git pull\" refuse with \"it does not fast forward; choose between\n 'pull --merge' and 'pull --rebase'\".\n\n John Keeping seems to want to restrict this to \"git pull\" without\n any other argument. I personally do not have a strong opinion\n either way, but I'm inclined to take such a patch to loosen the new\n logic with other people's support.  Hint, hint...\n\n\n* as/log-output-encoding-in-user-format (2013-07-05) 11 commits\n  (merged to 'next' on 2013-07-08 at 2e1bdd9)\n + t4205 (log-pretty-formats): avoid using `sed`\n + t6006 (rev-list-format): add tests for \"%b\" and \"%s\" for the case i18n.commitEncoding is not set\n + t4205, t6006, t7102: make functions better readable\n + t4205 (log-pretty-formats): revert back single quotes\n  (merged to 'next' on 2013-07-05 at d2c99e5)\n + t4041, t4205, t6006, t7102: use iso8859-1 rather than iso-8859-1\n  (merged to 'next' on 2013-07-01 at 3318aa8)\n + t4205: replace .\\+ with ..* in sed commands\n  (merged to 'next' on 2013-06-28 at 4063330)\n + pretty: --format output should honor logOutputEncoding\n + pretty: Add failing tests: --format output should honor logOutputEncoding\n + t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs\n + t7102 (reset): don't hardcode SHA-1 in expected outputs\n + t6006 (rev-list-format): don't hardcode SHA-1 in expected outputs\n\n \"log --format=\" did not honor i18n.logoutputencoding configuration\n and this attempts to fix it.\n\n Will merge to 'master'.\n\n\n* jk/fast-import-empty-ls (2013-06-23) 4 commits\n - fast-import: allow moving the root tree\n - fast-import: allow ls or filecopy of the root tree\n - fast-import: set valid mode on root tree in \"ls\"\n - t9300: document fast-import empty path issues\n\n Waiting for reviews.\n $gmane/228741\n\n\n* rj/cygwin-clarify-use-of-cheating-lstat (2013-07-11) 1 commit\n - cygwin: Add fast_lstat() and fast_fstat() functions\n\n Turns quite a many uses of lstat() into fast_lstat() to mark\n callsites that allow \"a faster but cheating and incorrect variant\".\n Defining fast_lstat() to be the same as lstat(), is fine from\n correctness point of view, but it can be replaced with an\n alternative implementation that more quickly grabs only the part of\n the stat information that matter (e.g. cygwin).  The places where\n we _do_ require a fully correct lstat() are left as lstat().\n\n The damage this patch makes to the the core codepath on systems may\n be rather large from readability's point of view, though.\n\n\n* jc/reflog-doc (2013-06-19) 1 commit\n - setup_reflog_action: document the rules for using GIT_REFLOG_ACTION\n\n Document rules to use GIT_REFLOG_ACTION variable in the scripted\n Porcelain.  git-rebase--interactive locally violates this, but it\n is a leaf user that does not call out to or dot-sources other\n scripts, so fixing it is not all that urgent.\n\n\n* mh/ref-races-optim-invalidate-cached (2013-06-20) 1 commit\n - refs: do not invalidate the packed-refs cache unnecessarily\n\n This requires the platform lstat() to be correct to avoid false\n negatives.\n\n\n* jx/clean-interactive (2013-06-26) 16 commits\n - test: run testcases with POSIX absolute paths on Windows\n - test: add t7301 for git-clean--interactive\n - git-clean: add documentation for interactive git-clean\n - git-clean: add ask each interactive action\n - git-clean: add select by numbers interactive action\n - git-clean: add filter by pattern interactive action\n - git-clean: use a git-add-interactive compatible UI\n - git-clean: add colors to interactive git-clean\n - git-clean: show items of del_list in columns\n - git-clean: add support for -i/--interactive\n  (merged to 'next' on 2013-06-26 at f7be2d8)\n + git-clean: refactor git-clean into two phases\n + write_name{_quoted_relative,}(): remove redundant parameters\n + quote_path_relative(): remove redundant parameter\n + quote.c: substitute path_relative with relative_path\n + path.c: refactor relative_path(), not only strip prefix\n + test: add test cases for relative_path\n\n Add \"interactive\" mode to \"git clean\".\n\n The early part to refactor relative path related helper functions\n looked sensible.\n\n Will merge to 'next'.\n\n\n* jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit\n - git add: -u/-A now affects the entire working tree\n\n Will cook in 'next' until Git 2.0.\n\n\n* jc/core-checkstat-2.0 (2013-05-06) 1 commit\n - core.statinfo: remove as promised in Git 2.0\n\n Will cook in 'next' until Git 2.0.\n\n\n* jc/push-2.0-default-to-simple (2013-06-18) 1 commit\n - push: switch default from \"matching\" to \"simple\"\n\n Will cook in 'next' until Git 2.0.\n\n\n* jc/add-2.0-ignore-removal (2013-04-22) 1 commit\n - git add <pathspec>... defaults to \"-A\"\n\n Updated endgame for \"git add <pathspec>\" that defaults to \"--all\"\n aka \"--no-ignore-removal\".\n\n Will cook in 'next' until Git 2.0.\n"},{"id":"228453","messageId":"1380456534-7582-1-git-send-email-stefanbeller@googlemail.com","threadId":"34410","inReplyTo":"7vfvvkpt2k.fsf@alter.siamese.dyndns.org","subject":"[PATCH] Makefile: suppress false positive warnings of empty format string.","fromName":"Stefan Beller","fromEmail":"stefanbeller@googlemail.com","sentAt":"2013-09-29T12:08:54Z","receivedAt":"2013-09-29T12:08:54Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"Signed-off-by: Stefan Beller <stefanbeller@googlemail.com>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex de3d72c..60afa51 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -349,7 +349,7 @@ GIT-VERSION-FILE: FORCE\n \n # CFLAGS and LDFLAGS are for the users to override from the command line.\n \n-CFLAGS = -g -O2 -Wall\n+CFLAGS = -g -O2 -Wall -Wno-format-zero-length\n LDFLAGS =\n ALL_CFLAGS = $(CPPFLAGS) $(CFLAGS)\n ALL_LDFLAGS = $(LDFLAGS)\n-- \n1.8.4.474.g128a96c\n"},{"id":"228454","messageId":"CAMP44s069BUJiv1K3a2nkwT1A8fo=Vn0+8WFePHqBg_PBx_17g@mail.gmail.com","threadId":"34410","inReplyTo":"1380456534-7582-1-git-send-email-stefanbeller@googlemail.com","subject":"Re: [PATCH] Makefile: suppress false positive warnings of empty format string.","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2013-09-29T15:07:25Z","receivedAt":"2013-09-29T15:07:25Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"On Sun, Sep 29, 2013 at 7:08 AM, Stefan Beller\n<stefanbeller@googlemail.com> wrote:\n> Signed-off-by: Stefan Beller <stefanbeller@googlemail.com>\n> ---\n>  Makefile | 2 +-\n>  1 file changed, 1 insertion(+), 1 deletion(-)\n>\n> diff --git a/Makefile b/Makefile\n> index de3d72c..60afa51 100644\n> --- a/Makefile\n> +++ b/Makefile\n> @@ -349,7 +349,7 @@ GIT-VERSION-FILE: FORCE\n>\n>  # CFLAGS and LDFLAGS are for the users to override from the command line.\n>\n> -CFLAGS = -g -O2 -Wall\n> +CFLAGS = -g -O2 -Wall -Wno-format-zero-length\n\nOh yes please.\n\nHowever, somebody mentioned that this might break compilers other than\ngcc, but perhaps we can do what Linux does:\n\ncc-disable-warning = $(call try-run,\\\n$(CC) $(CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o \"$$TMP\",-Wno-$(strip $(1)))\n\nCFLAGS = -g -O2 -Wall $(call cc-disable-warning,format-zero-length,)\n\n-- \nFelipe Contreras\n"},{"id":"228455","messageId":"5248460A.40005@ramsay1.demon.co.uk","threadId":"34410","inReplyTo":"CAMP44s069BUJiv1K3a2nkwT1A8fo=Vn0+8WFePHqBg_PBx_17g@mail.gmail.com","subject":"Re: [PATCH] Makefile: suppress false positive warnings of empty format string.","fromName":"Ramsay Jones","fromEmail":"ramsay@ramsay1.demon.co.uk","sentAt":"2013-09-29T15:23:54Z","receivedAt":"2013-09-29T15:23:54Z","isPatch":true,"sender":{"key":"ramsay@ramsayjones.plus.com","avatar":"https://avatars.githubusercontent.com/u/33702710?v=4"},"body":"On 29/09/13 16:07, Felipe Contreras wrote:\n> On Sun, Sep 29, 2013 at 7:08 AM, Stefan Beller\n> <stefanbeller@googlemail.com> wrote:\n>> Signed-off-by: Stefan Beller <stefanbeller@googlemail.com>\n>> ---\n>>  Makefile | 2 +-\n>>  1 file changed, 1 insertion(+), 1 deletion(-)\n>>\n>> diff --git a/Makefile b/Makefile\n>> index de3d72c..60afa51 100644\n>> --- a/Makefile\n>> +++ b/Makefile\n>> @@ -349,7 +349,7 @@ GIT-VERSION-FILE: FORCE\n>>\n>>  # CFLAGS and LDFLAGS are for the users to override from the command line.\n>>\n>> -CFLAGS = -g -O2 -Wall\n>> +CFLAGS = -g -O2 -Wall -Wno-format-zero-length\n> \n> Oh yes please.\n> \n> However, somebody mentioned that this might break compilers other than\n> gcc, but perhaps we can do what Linux does:\n\nI simply added:\n\n    CFLAGS+=-Wno-format-zero-length\n\nto my config.mak file. I had originally intended to do so conditionally,\ndepending on the compiler being gcc, but I found that clang and tcc just\nignored it ...\n\n> cc-disable-warning = $(call try-run,\\\n> $(CC) $(CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o \"$$TMP\",-Wno-$(strip $(1)))\n> \n> CFLAGS = -g -O2 -Wall $(call cc-disable-warning,format-zero-length,)\n\nATB,\nRamsay Jones\n"},{"id":"228458","messageId":"20130929190017.GA2482@elie.Belkin","threadId":"34410","inReplyTo":"1380456534-7582-1-git-send-email-stefanbeller@googlemail.com","subject":"Re: [PATCH] Makefile: suppress false positive warnings of empty format string.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2013-09-29T19:00:17Z","receivedAt":"2013-09-29T19:00:17Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Hi,\n\nStefan Beller wrote:\n\n> --- a/Makefile\n> +++ b/Makefile\n> @@ -349,7 +349,7 @@ GIT-VERSION-FILE: FORCE\n>  \n>  # CFLAGS and LDFLAGS are for the users to override from the command line.\n>  \n> -CFLAGS = -g -O2 -Wall\n> +CFLAGS = -g -O2 -Wall -Wno-format-zero-length\n\nThanks for taking this on.  Two thoughts:\n\n 1) As Felipe mentioned, this isn't portable.  Would it make sense to\n    make it conditional on the value of $(CC) or the output of\n    \"$(CC) --version\"?\n\n 2) I don't understand the value of -Wformat-zero-length at all.  What\n    bug is it meant to prevent?  Do you know if anyone has asked the\n    GCC maintainers to disable it from the default set of warnings in\n    -Wall, which would give us a bug number to point to?\n\n 3) Since we don't enable -Werror by default (which is really good ---\n    use of -Werror can be a fine development tool but is a terrible\n    default), the warning does not actually do much harm.  When it\n    becomes harmful is when someone turns on -Werror for static\n    analysis purposes and is unable to move forward from there.  Do we\n    document suggested pedantic compiler flags anywhere other than the\n    todo:Make script?  Should we?\n\n    I suspect such a documentation fix would have more impact, since it\n    could encourage people to experiment with flags and to check their\n    code strictly even when warnings are not portable, without\n    significantly slowing down the normal build.\n\n    For reference, todo:Make suggests the following flags:\n\n\t-Wpointer-arith -Woverflow -Wunused \\\n\t-Wno-pointer-to-int-cast -Werror \\\n\t-Wold-style-definition std=c99 -O2 \\\n\t-Wall -Wdeclaration-after-statement -Wno-format-zero-length -g\n\nHope that helps,\nJonathan\n"},{"id":"228478","messageId":"20130930201429.GA14433@sigill.intra.peff.net","threadId":"34410","inReplyTo":"20130929190017.GA2482@elie.Belkin","subject":"Re: [PATCH] Makefile: suppress false positive warnings of empty format string.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2013-09-30T20:14:29Z","receivedAt":"2013-09-30T20:14:29Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Sun, Sep 29, 2013 at 12:00:17PM -0700, Jonathan Nieder wrote:\n\n> > --- a/Makefile\n> > +++ b/Makefile\n> > @@ -349,7 +349,7 @@ GIT-VERSION-FILE: FORCE\n> >  \n> >  # CFLAGS and LDFLAGS are for the users to override from the command line.\n> >  \n> > -CFLAGS = -g -O2 -Wall\n> > +CFLAGS = -g -O2 -Wall -Wno-format-zero-length\n> \n> Thanks for taking this on.  Two thoughts:\n> \n>  1) As Felipe mentioned, this isn't portable.  Would it make sense to\n>     make it conditional on the value of $(CC) or the output of\n>     \"$(CC) --version\"?\n\nI'm not sure checking just \"$(CC)\" would help. Our default is \"cc\",\nwhich encompasses quite a wide variety of compilers, gcc and otherwise.\n\nTo be honest, I'm surprised that \"-Wall\" doesn't create problems for\nolder \"cc\" implementations. We've had patches for compiling with\nantique SUNWspro and MIPSpro compilers, and I sort of assumed that those\ndon't handle \"-Wall\". But maybe they do. Or maybe people doing that just\nset CFLAGS themselves.\n\nI think the original discussion ended with \"well, maybe it's not too bad\nfor people to just turn on -Wno-format-zero-length\". But if it is\ncreating a cognitive burden on people (it's not hard to do, but you have\nto figure out that you need to do it), and especially if we are looking\nat workarounds like version-detecting gcc, I think we'd be better off to\nsimply mark up the few callsites. Workarounds are here:\n\n  http://article.gmane.org/gmane.comp.version-control.git/230026\n\nand here:\n\n  http://article.gmane.org/gmane.comp.version-control.git/230027\n\n>  2) I don't understand the value of -Wformat-zero-length at all.  What\n>     bug is it meant to prevent?  Do you know if anyone has asked the\n>     GCC maintainers to disable it from the default set of warnings in\n>     -Wall, which would give us a bug number to point to?\n\nI don't think there is an open bug anywhere.  When this came up\ninitially, I searched for other reports, but mostly found a handful of\nother people running into the same situation and adding\n-Wno-format-zero-length to their projects.\n\nAs for the value of it, I think it is basically to detect that:\n\n  printf(\"\");\n\nis a dead-code noop (bearing in mind that the \"\" may also be non-obvious\nwhen reading the code due to preprocessing), and may indicate some kind\nof logic error.  That's reasonable to warn about; the compiler knows\nthat stdio formatting functions with an empty format are noops.\n\nBut where we run into trouble is that the warning assumes that other\nformatting functions are also noops in that case, which is not\nnecessarily true. They might have side effects, or the empty string\nmight be formatted with extra decoration (adding a newline, wrapping the\nempty string in quotes, etc).\n\nSo I do not think the correct solution (from gcc's perspective) would be\nto turn off -Wformat-zero-length by default. It would rather be to\nenhance the annotation for the format attribute to separate the two\ncases, and to annotate printf() and friends with some kind of\n\"pure-format\" attribute.\n\n>  3) Since we don't enable -Werror by default (which is really good ---\n>     use of -Werror can be a fine development tool but is a terrible\n>     default), the warning does not actually do much harm.\n\nYeah, I think the world is a better place if every developer of git\nshould compiles with -Werror, but it is a terrible default for consumers\nof the code.\n\n>     becomes harmful is when someone turns on -Werror for static\n>     analysis purposes and is unable to move forward from there.  Do we\n>     document suggested pedantic compiler flags anywhere other than the\n>     todo:Make script?  Should we?\n\nIt should probably be somewhere in the actual git.git history, as very\nfew people look at the todo branch. I guess INSTALL or CodingGuidelines\nwould be the most appropriate place.\n\n-Peff\n"},{"id":"228481","messageId":"20130930212636.GY9464@google.com","threadId":"34410","inReplyTo":"20130930201429.GA14433@sigill.intra.peff.net","subject":"Re: [PATCH] Makefile: suppress false positive warnings of empty format string.","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2013-09-30T21:26:36Z","receivedAt":"2013-09-30T21:26:36Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Jeff King wrote:\n\n>                                            I think we'd be better off to\n> simply mark up the few callsites. Workarounds are here:\n>\n>   http://article.gmane.org/gmane.comp.version-control.git/230026\n\nYeah, that looks okay (ugly but tolerable).  It's tempting to do\nsomething like\n\n\t-\tstatus_printf_ln(s, GIT_COLOR_NORMAL, \"\");\n\t+\tstatus_nl(s, GIT_COLOR_NORMAL);\n\nand\n\n\t-\tstatus_printf(s, color(WT_STATUS_HEADER, s), \"\");\n\t+\tstatus_start_line(s, color(WT_STATUS_HEADER, s));\n\nto make the intent clearer.  Sane?\n\nJonathan\n"},{"id":"228482","messageId":"20130930213432.GA19498@sigill.intra.peff.net","threadId":"34410","inReplyTo":"20130930212636.GY9464@google.com","subject":"Re: [PATCH] Makefile: suppress false positive warnings of empty format string.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2013-09-30T21:34:32Z","receivedAt":"2013-09-30T21:34:32Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Sep 30, 2013 at 02:26:36PM -0700, Jonathan Nieder wrote:\n\n> Jeff King wrote:\n> \n> >                                            I think we'd be better off to\n> > simply mark up the few callsites. Workarounds are here:\n> >\n> >   http://article.gmane.org/gmane.comp.version-control.git/230026\n> \n> Yeah, that looks okay (ugly but tolerable).  It's tempting to do\n> something like\n> \n> \t-\tstatus_printf_ln(s, GIT_COLOR_NORMAL, \"\");\n> \t+\tstatus_nl(s, GIT_COLOR_NORMAL);\n> \n> and\n> \n> \t-\tstatus_printf(s, color(WT_STATUS_HEADER, s), \"\");\n> \t+\tstatus_start_line(s, color(WT_STATUS_HEADER, s));\n> \n> to make the intent clearer.  Sane?\n\nYeah, I hinted at adding wrappers like this in the earlier thread but\ndidn't actually try it.  I think the approach is reasonable, as I doubt\nthe wrappers should require too much refactoring.\n\n-Peff\n"},{"id":"228484","messageId":"5249EF59.4080607@googlemail.com","threadId":"34410","inReplyTo":"20130930201429.GA14433@sigill.intra.peff.net","subject":"Re: [PATCH] Makefile: suppress false positive warnings of empty format string.","fromName":"Stefan Beller","fromEmail":"stefanbeller@googlemail.com","sentAt":"2013-09-30T21:38:33Z","receivedAt":"2013-09-30T21:38:33Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On 09/30/2013 10:14 PM, Jeff King wrote:\n> On Sun, Sep 29, 2013 at 12:00:17PM -0700, Jonathan Nieder wrote:\n> \n>>> --- a/Makefile\n>>> +++ b/Makefile\n>>> @@ -349,7 +349,7 @@ GIT-VERSION-FILE: FORCE\n>>>  \n>>>  # CFLAGS and LDFLAGS are for the users to override from the command line.\n>>>  \n>>> -CFLAGS = -g -O2 -Wall\n>>> +CFLAGS = -g -O2 -Wall -Wno-format-zero-length\n>>\n>> Thanks for taking this on.  Two thoughts:\n>>\n>>  1) As Felipe mentioned, this isn't portable.  Would it make sense to\n>>     make it conditional on the value of $(CC) or the output of\n>>     \"$(CC) --version\"?\n> \n> I'm not sure checking just \"$(CC)\" would help. Our default is \"cc\",\n> which encompasses quite a wide variety of compilers, gcc and otherwise.\n> \n> To be honest, I'm surprised that \"-Wall\" doesn't create problems for\n> older \"cc\" implementations. We've had patches for compiling with\n> antique SUNWspro and MIPSpro compilers, and I sort of assumed that those\n> don't handle \"-Wall\". But maybe they do. Or maybe people doing that just\n> set CFLAGS themselves.\n\nWell actually I do think people are encouraged to play around with their\nCFLAGS as much as they like. I do add link time optimisation usually.\n\nHowever I do have the strong opinion that any serious project should\ncompile without any warning/error with the standard compilers of\nthe current time. That's why I started an attempt again to have\n-Wno-format-zero-length in there by default. Most of the people (I\nassume so) are using gcc. So it should build fine there without any\nwarnings.\n\nSure it should build without errors as well on other architectures, so I\ndo understand the issue to check if we're really\nusing gcc and can omit this flag if using another compiler.\n\n\n> \n> I think the original discussion ended with \"well, maybe it's not too bad\n> for people to just turn on -Wno-format-zero-length\". But if it is\n> creating a cognitive burden on people (it's not hard to do, but you have\n> to figure out that you need to do it), and especially if we are looking\n> at workarounds like version-detecting gcc, I think we'd be better off to\n> simply mark up the few callsites. Workarounds are here:\n> \n>   http://article.gmane.org/gmane.comp.version-control.git/230026\n> \n> and here:\n> \n>   http://article.gmane.org/gmane.comp.version-control.git/230027\n\nand here\nhttp://thread.gmane.org/gmane.comp.version-control.git/230806\n\n> \n>>  2) I don't understand the value of -Wformat-zero-length at all.  What\n>>     bug is it meant to prevent?  Do you know if anyone has asked the\n>>     GCC maintainers to disable it from the default set of warnings in\n>>     -Wall, which would give us a bug number to point to?\n> \n> I don't think there is an open bug anywhere.  When this came up\n> initially, I searched for other reports, but mostly found a handful of\n> other people running into the same situation and adding\n> -Wno-format-zero-length to their projects.\n> \n> As for the value of it, I think it is basically to detect that:\n> \n>   printf(\"\");\n> \n> is a dead-code noop (bearing in mind that the \"\" may also be non-obvious\n> when reading the code due to preprocessing), and may indicate some kind\n> of logic error.  That's reasonable to warn about; the compiler knows\n> that stdio formatting functions with an empty format are noops.\n> \n> But where we run into trouble is that the warning assumes that other\n> formatting functions are also noops in that case, which is not\n> necessarily true. They might have side effects, or the empty string\n> might be formatted with extra decoration (adding a newline, wrapping the\n> empty string in quotes, etc).\n> \n> So I do not think the correct solution (from gcc's perspective) would be\n> to turn off -Wformat-zero-length by default. It would rather be to\n> enhance the annotation for the format attribute to separate the two\n> cases, and to annotate printf() and friends with some kind of\n> \"pure-format\" attribute.\n\nI do agree. :)\n\n> \n>>  3) Since we don't enable -Werror by default (which is really good ---\n>>     use of -Werror can be a fine development tool but is a terrible\n>>     default), the warning does not actually do much harm.\n> \n> Yeah, I think the world is a better place if every developer of git\n> should compiles with -Werror, but it is a terrible default for consumers\n> of the code.\n> \n>>     becomes harmful is when someone turns on -Werror for static\n>>     analysis purposes and is unable to move forward from there.  Do we\n>>     document suggested pedantic compiler flags anywhere other than the\n>>     todo:Make script?  Should we?\n> \n> It should probably be somewhere in the actual git.git history, as very\n> few people look at the todo branch. I guess INSTALL or CodingGuidelines\n> would be the most appropriate place.\n> \n> -Peff\n> \n\n\n"},{"id":"228489","messageId":"20130930232349.GB23218@sigill.intra.peff.net","threadId":"34410","inReplyTo":"5249EF59.4080607@googlemail.com","subject":"Re: [PATCH] Makefile: suppress false positive warnings of empty format string.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2013-09-30T23:23:50Z","receivedAt":"2013-09-30T23:23:50Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Sep 30, 2013 at 11:38:33PM +0200, Stefan Beller wrote:\n\n> > To be honest, I'm surprised that \"-Wall\" doesn't create problems for\n> > older \"cc\" implementations. We've had patches for compiling with\n> > antique SUNWspro and MIPSpro compilers, and I sort of assumed that those\n> > don't handle \"-Wall\". But maybe they do. Or maybe people doing that just\n> > set CFLAGS themselves.\n> \n> Well actually I do think people are encouraged to play around with their\n> CFLAGS as much as they like. I do add link time optimisation usually.\n\nOh, absolutely. I didn't mean to give the impression that you should not\ntweak CFLAGS. That's what it's there for. I just meant that I do not\nrecall seeing complaints from people on such compilers, so either it\nactually works, or they are savvy enough to tweak CFLAGS without making\na complaint. Or they no longer exist. The patches I'm thinking of were\nfrom 2008, and the compilers and systems were old then.\n\n> However I do have the strong opinion that any serious project should\n> compile without any warning/error with the standard compilers of\n> the current time. That's why I started an attempt again to have\n> -Wno-format-zero-length in there by default. Most of the people (I\n> assume so) are using gcc. So it should build fine there without any\n> warnings.\n\nYeah, I'd agree it is a good goal.\n\n> Sure it should build without errors as well on other architectures, so\n> I do understand the issue to check if we're really using gcc and can\n> omit this flag if using another compiler.\n\nRight, agreed.\n\n> and here\n> http://thread.gmane.org/gmane.comp.version-control.git/230806\n\nThanks, I didn't recall that one.\n\nI still think if we are going to start doing gcc auto-detection in the\nMakefile, it is slightly less ugly to just tweak the few callsites to\nprevent the warning in the first place. I think gcc is being silly to\nwarn about, but it is the path of least resistance and maintenance.\n\n-Peff\n"}]}