{"thread":{"id":"20795","subject":"What's cooking in git.git (Aug 2009, #06; Sun, 30)","startedAt":"2009-08-31T07:03:53Z","lastAt":"2009-09-02T18:16:01Z","messageCount":16,"participants":["Junio C Hamano","Johan Herland","Matthieu Moy","Jeff King","Peter Krefting","Jakub Narebski","Nick Edelen","Johannes Schindelin","Peter Harris"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"122167","messageId":"7viqg48nxi.fsf@alter.siamese.dyndns.org","threadId":"20795","inReplyTo":null,"subject":"What's cooking in git.git (Aug 2009, #06; Sun, 30)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-08-31T07:03:53Z","receivedAt":"2009-08-31T07:03:53Z","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 '-' are\nonly in 'pu' while commits prefixed with '+' are in 'next'.  The ones\nmarked with '.' do not appear in any of the integration branches, but I am\nstill holding onto them.\n\nAfter the 1.6.5 cycle, the next release will be 1.7.0, and we will push\nout the planned \"push safety\" change.  1.7.0 would be a good time to\nintroduce \"justifiable\" changes that are not strictly backward compatible.\n\nDuring 1.6.5 cycle, 'next' will hold topics meant for 1.6.5 and 1.7.0.\n\n--------------------------------------------------\n[Graduated to \"master\"]\n\n* wl/insta-mongoose (2009-08-21) 1 commit\n  (merged to 'next' on 2009-08-25 at da1d566)\n + Add support for the Mongoose web server.\n\n* as/maint-graph-interesting-fix (2009-08-21) 2 commits.\n  (merged to 'next' on 2009-08-25 at 9d5e215)\n + Add tests for rev-list --graph with options that simplify history\n + graph API: fix bug in graph_is_interesting()\n\n* jc/maint-unpack-objects-strict (2009-08-13) 1 commit.\n  (merged to 'next' on 2009-08-23 at 38eb750)\n + Fix \"unpack-objects --strict\"\n\n* jh/submodule-foreach (2009-08-20) 9 commits\n  (merged to 'next' on 2009-08-20 at 671bea4)\n + git clone: Add --recursive to automatically checkout (nested) submodules\n + t7407: Use 'rev-parse --short' rather than bash's substring expansion notation\n  (merged to 'next' on 2009-08-18 at f4a881d)\n + git submodule status: Add --recursive to recurse into nested submodules\n + git submodule update: Introduce --recursive to update nested submodules\n + git submodule foreach: Add --recursive to recurse into nested submodules\n + git submodule foreach: test access to submodule name as '$name'\n + Add selftest for 'git submodule foreach'\n + git submodule: Cleanup usage string and add option parsing to cmd_foreach()\n + git submodule foreach: Provide access to submodule name, as '$name'\n\n* lt/block-sha1 (2009-08-17) 4 commits\n  (merged to 'next' on 2009-08-18 at 67a1ce8)\n + remove ARM and Mozilla SHA1 implementations\n + block-sha1: guard gcc extensions with __GNUC__\n + make sure byte swapping is optimal for git\n + block-sha1: make the size member first in the context struct\n\n* np/maint-1.6.3-deepen (2009-08-24) 1 commit.\n  (merged to 'next' on 2009-08-25 at 8e383d4)\n + fix simple deepening of a repo\n\n* jk/maint-1.6.3-checkout-unborn (2009-08-24) 1 commit.\n  (merged to 'next' on 2009-08-25 at 5f29625)\n + checkout: do not imply \"-f\" on unborn branches\n\n* mm/reset-report (2009-08-21) 2 commits\n  (merged to 'next' on 2009-08-25 at f2a4424)\n + reset: make the reminder output consistent with \"checkout\"\n + Rename REFRESH_SAY_CHANGED to REFRESH_IN_PORCELAIN.\n\n* jc/shortstatus (2009-08-15) 11 commits\n  (merged to 'next' on 2009-08-15 at 7e40766)\n + git commit --dry-run -v: show diff in color when asked\n + Documentation/git-commit.txt: describe --dry-run\n  (merged to 'next' on 2009-08-12 at 53bda17)\n + wt-status: collect untracked files in a separate \"collect\" phase\n + Make git_status_config() file scope static to builtin-commit.c\n + wt-status: move wt_status_colors[] into wt_status structure\n + wt-status: move many global settings to wt_status structure\n + commit: --dry-run\n  (merged to 'next' on 2009-08-06 at fe8cb94)\n + status: show worktree status of conflicted paths separately\n + wt-status.c: rework the way changes to the index and work tree are summarized\n + diff-index: keep the original index intact\n + diff-index: report unmerged new entries\n (this branch is used by jc/1.7.0-status.)\n\n--------------------------------------------------\n[New Topics]\n\n* jc/upload-pack-hook (2009-08-28) 2 commits\n - upload-pack: feed \"kind [clone|fetch]\" to post-upload-pack hook\n - upload-pack: add a trigger for post-upload-pack hook\n\nI do not know if the distinction between fetching some but not all refs\nand fetching full set of refs into an empty repository is something worth\nmaking, so in that sense the tip commit is somewhat iffy.\n\nOne reason this series makes me somewhat uneasy is that Tom, the original\nstarter of the discussion went dark after sending a proposed patch.  Maybe\nhe has been too busy, but I have been hoping that GitHub as a stakeholder\nhas somebody who monitors the list when he is not available.\n\nDoes anybody from GitHub have any input?  Is there something that needs to\nbe improved to fill GitHub's needs?  Does GitHub want to stick to its own\nfork, and were all these discussions for improvements unwanted?\n\n* jk/clone-b (2009-08-26) 1 commit\n  (merged to 'next' on 2009-08-30 at 10a68d1)\n + clone: add --branch option to select a different HEAD\n\n* pk/import-dirs (2009-08-24) 1 commit\n - Add script for importing bits-and-pieces to Git.\n\nThis version makes me suspect that the author might regret the choice of\nthe import format that does not allow escaping of paths, nor does not\nallow leading blanks for readability without changing semantics, both of\nwhich make it somewhat limiting and error prone.  These issues will be\nhard to rectify without breaking the backward compatibility, for a tool\nthat could otherwise turn out to be useful.\n\nAs a contrib/ material, I probably shouldn't be too worried about these\nissues, but I am keeping this out of 'next' for now, just in case the\nauthor chooses to polish the usability of the tool for general audience.\n\nIt is a different story if the submission was just throwing out a one-time\nhack in the open in the hope that some other people might find it useful,\nbut without any intention of maintaining it.  But then I do not have a\nstrong reason to keep this in my tree, either.  The mailing list archive\nis a more suitable storage media for such a patch.\n\n--------------------------------------------------\n[Stalled]\n\n* jh/notes (2009-08-27) 12 commits.\n - Add '%N'-format for pretty-printing commit notes\n - Add flags to get_commit_notes() to control the format of the note string\n - notes.c: Implement simple memory pooling of leaf nodes\n - Selftests verifying semantics when loading notes trees with various fanouts\n - Teach the notes lookup code to parse notes trees with various fanout schemes\n - t3302-notes-index-expensive: Speed up create_repo()\n - fast-import: Add support for importing commit notes\n - Teach \"-m <msg>\" and \"-F <file>\" to \"git notes edit\"\n - Add an expensive test for git-notes\n - Speed up git notes lookup\n - Add a script to edit/inspect notes\n - Introduce commit notes\n\nI heard the cvs-helper series depends on this one.  It seems that the\nfan-out strategy is being rethought?\n\n* js/stash-dwim (2009-07-27) 1 commit.\n  (merged to 'next' on 2009-08-16 at 67896c4)\n + Make 'git stash -k' a short form for 'git stash save --keep-index'\n (this branch is used by tr/reset-checkout-patch.)\n\n* tr/reset-checkout-patch (2009-08-27) 9 commits.\n  (merged to 'next' on 2009-08-27 at d314281)\n + Make test case number unique\n  (merged to 'next' on 2009-08-18 at e465bb3)\n + tests: disable interactive hunk selection tests if perl is not available\n  (merged to 'next' on 2009-08-16 at 67896c4)\n + DWIM 'git stash save -p' for 'git stash -p'\n + Implement 'git stash save --patch'\n + Implement 'git checkout --patch'\n + Implement 'git reset --patch'\n + builtin-add: refactor the meat of interactive_add()\n + Add a small patch-mode testing library\n + git-apply--interactive: Refactor patch mode code\n (this branch uses js/stash-dwim.)\n\nThere was a discussion on better DWIMmery for the above two topics to (1)\nforbid \"git stash save --anything-with-dash\" and (2) redirect with any\noption \"git stash --opt\" to \"git stash save --opt\", to keep it flexible\nand safe at the same time.  I think it is a sane thing to do, but nothing\nhas happened lately.\n\n* db/vcs-helper (2009-08-09) 17 commits\n - Allow helpers to request marks for fast-import\n - Allow helpers to report in \"list\" command that the ref is unchanged\n - Add support for \"import\" helper command\n - transport-helper_init(): fix a memory leak in error path\n - Add a config option for remotes to specify a foreign vcs\n - Allow programs to not depend on remotes having urls\n - Allow fetch to modify refs\n - Use a function to determine whether a remote is valid\n - Use a clearer style to issue commands to remote helpers\n  (merged to 'next' on 2009-08-07 at f3533ba)\n + Makefile: install hardlinks for git-remote-<scheme> supported by libcurl if possible\n + Makefile: do not link three copies of git-remote-* programs\n + Makefile: git-http-fetch does not need expat\n  (merged to 'next' on 2009-08-06 at 15da79d)\n + http-fetch: Fix Makefile dependancies\n + Add transport native helper executables to .gitignore\n  (merged to 'next' on 2009-08-05 at 33d491e)\n + git-http-fetch: not a builtin\n + Use an external program to implement fetching with curl\n + Add support for external programs for handling native fetches\n (this branch is used by jh/cvs-helper.)\n\nWe had a few messages on what the list consensus was with this series.  My\nimpression, after going back to the archive, is that there wasn't.\n\n* jn/gitweb-blame (2009-08-06) 3 commits\n - gitweb: Create links leading to 'blame_incremental' using JavaScript\n - gitweb: Incremental blame (WIP)\n - gitweb: Add optional \"time to generate page\" info in footer\n\nAjax-y blame WIP\n\n--------------------------------------------------\n[Cooking]\n\n* je/send-email-no-subject (2009-08-05) 1 commit\n  (merged to 'next' on 2009-08-30 at b6455c2)\n + send-email: confirm on empty mail subjects\n\nThe existing tests to covers the positive case (i.e. as long as the user\nsays \"yes\" to the \"do you really want to send this message that lacks\nsubject\", the message is sent) of this feature, but the feature itself\nneeds its own test to verify the negative case (i.e. does it correctly\nstop if the user says \"no\"?)\n\n* lt/approxidate (2009-08-30) 6 commits\n  (merged to 'next' on 2009-08-30 at e016e3d)\n + fix approxidate parsing of relative months and years\n + tests: add date printing and parsing tests\n + refactor test-date interface\n + Add date formatting and parsing functions relative to a given time\n  (merged to 'next' on 2009-08-26 at 62853f9)\n + Further 'approxidate' improvements\n + Improve on 'approxidate'\n\nFixes a few \"reasonably formatted but thus-far misparsed\" date strings.\nWith tests by Peff, this should be ready for -rc0.\n\n* mr/gitweb-snapshot (2009-08-25) 3 commits\n  (merged to 'next' on 2009-08-30 at e4edd0b)\n + gitweb: add t9501 tests for checking HTTP status codes\n + gitweb: split test suite into library and tests\n + gitweb: improve snapshot error handling\n\n* jc/mailinfo-scissors (2009-08-26) 5 commits\n  (merged to 'next' on 2009-08-30 at 5fc6248)\n + mailinfo.scissors: new configuration\n + am/mailinfo: Disable scissors processing by default\n + Documentation: describe the scissors mark support of \"git am\"\n + Teach mailinfo to ignore everything before -- >8 -- mark\n + builtin-mailinfo.c: fix confusing internal API to mailinfo()\n\nI didn't pick up the patch to simplify the definition of scissors. I do\nnot have strong opinion on it either way, but the list would hopefully\ndecide it before too long.\n\n* tf/diff-whitespace-incomplete-line (2009-08-23) 2 commits.\n  (merged to 'next' on 2009-08-26 at 4fc7784)\n + xutils: Fix xdl_recmatch() on incomplete lines\n + xutils: Fix hashing an incomplete line with whitespaces at the end\n\nWill merge.\n\n* cc/sequencer-rebase-i (2009-08-28) 15 commits\n - rebase -i: use \"git sequencer--helper --cherry-pick\"\n - sequencer: add \"--cherry-pick\" option to \"git sequencer--helper\"\n - sequencer: add \"do_commit()\" and related functions working on \"next_commit\"\n - pick: libify \"pick_help_msg()\"\n - revert: libify cherry-pick and revert functionnality\n - rebase -i: use \"git sequencer--helper --fast-forward\"\n - sequencer: let \"git sequencer--helper\" callers set \"allow_dirty\"\n - sequencer: add \"--fast-forward\" option to \"git sequencer--helper\"\n - sequencer: add \"do_fast_forward()\" to perform a fast forward\n - rebase -i: use \"git sequencer--helper --reset-hard\"\n - sequencer: add \"--reset-hard\" option to \"git sequencer--helper\"\n - sequencer: add \"reset_almost_hard()\" and related functions\n - rebase -i: use \"git sequencer--helper --make-patch\"\n - sequencer: add \"make_patch\" function to save a patch\n - sequencer: add \"builtin-sequencer--helper.c\"\n\nMigrating \"rebase -i\" bit by bit to C.\n\n* jh/cvs-helper (2009-08-18) 7 commits\n - More fixes to the git-remote-cvs installation procedure\n - Fix the Makefile-generated path to the git_remote_cvs package in git-remote-cvs\n - Add simple selftests of git-remote-cvs functionality\n - git-remote-cvs: Remote helper program for CVS repositories\n - 2/2: Add Python support library for CVS remote helper\n - 1/2: Add Python support library for CVS remote helper\n - Basic build infrastructure for Python scripts\n (this branch uses db/vcs-helper.)\n\nBuilds on db/vcs-helper (which is stalled, so this cannot move further at\nthe moment).  There is a re-roll planned, so I did not pick up test fixes\nfrom Brandon myself.\n\n* sr/gfi-options (2009-08-27) 6 commits\n - fast-import: test the new option command\n - fast-import: add option command\n - fast-import: test the new feature command\n - fast-import: add feature command\n - fast-import: put marks reading in it's own function\n - fast-import: put option parsing code in separate functions\n\nRe-rolled, based on an off-list discussion I was/am not aware of.\nLooked ready for 'next'.\n\n* nd/sparse (2009-08-20) 19 commits\n - sparse checkout: inhibit empty worktree\n - Add tests for sparse checkout\n - read-tree: add --no-sparse-checkout to disable sparse checkout support\n - unpack-trees(): ignore worktree check outside checkout area\n - unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index\n - unpack-trees(): \"enable\" sparse checkout and load $GIT_DIR/info/sparse-checkout\n - unpack-trees.c: generalize verify_* functions\n - unpack-trees(): add CE_WT_REMOVE to remove on worktree alone\n - Introduce \"sparse checkout\"\n - dir.c: export excluded_1() and add_excludes_from_file_1()\n - excluded_1(): support exclude files in index\n - unpack-trees(): carry skip-worktree bit over in merged_entry()\n - Read .gitignore from index if it is skip-worktree\n - Avoid writing to buffer in add_excludes_from_file_1()\n - Teach Git to respect skip-worktree bit (writing part)\n - Teach Git to respect skip-worktree bit (reading part)\n - Introduce \"skip-worktree\" bit in index, teach Git to get/set this bit\n - Add test-index-version\n - update-index: refactor mark_valid() in preparation for new options\n\n--------------------------------------------------\n[For 1.7.0]\n\n* jc/1.7.0-status (2009-08-15) 3 commits\n  (merged to 'next' on 2009-08-22 at b3507bb)\n + git status: not \"commit --dry-run\" anymore\n + git stat -s: short status output\n + git stat: the beginning of \"status that is not a dry-run of commit\"\n\nWith this, \"git status\" is no longer \"git commit --preview\".\n\n* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit\n  (merged to 'next' on 2009-08-22 at 5106de8)\n + send-email: make --no-chain-reply-to the default\n\n* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.\n  (merged to 'next' on 2009-08-30 at 0623572)\n + diff.c: fix typoes in comments\n  (merged to 'next' on 2009-08-27 at 81fb2bd)\n + Make test case number unique\n  (merged to 'next' on 2009-08-02 at 9c08420)\n + diff: Rename QUIET internal option to QUICK\n + diff: change semantics of \"ignore whitespace\" options\n\nThis changes exit code from \"git diff --ignore-whitespace\" and friends\nwhen there is no actual output.  It is a backward incompatible change, but\nwe could argue that it is a bugfix.\n\n* jc/1.7.0-push-safety (2009-02-09) 2 commits\n  (merged to 'next' on 2009-08-02 at 38b82fe)\n + Refuse deleting the current branch via push\n + Refuse updating the current branch in a non-bare repository via push\n\n--------------------------------------------------\n[I have been too busy to purge these]\n\n* jc/log-tz (2009-03-03) 1 commit.\n - Allow --date=local --date=other-format to work as expected\n\nMaybe some people care about this.  I dunno.\n\n* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.\n - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker\n\nMaybe some people care about this.  I dunno.\n\n* ar/maint-1.6.2-merge-recursive-d-f (2009-05-11) 2 commits.\n . Fix for a merge where a branch has an F->D transition\n . Add a reminder test case for a merge with F/D transition\n\n* jc/merge-convert (2009-01-26) 1 commit.\n . git-merge-file: allow converting the results for the work tree\n\n* lt/read-directory (2009-05-15) 3 commits.\n . Add initial support for pathname conversion to UTF-8\n . read_directory(): infrastructure for pathname character set conversion\n . Add 'fill_directory()' helper function for directory traversal\n\n* ps/blame (2009-03-12) 1 commit.\n . blame.c: start libifying the blame infrastructure\n\n* pb/tracking (2009-07-16) 7 commits.\n . branch.c: if remote is not config'd for branch, don't try delete push config\n . branch, checkout: introduce autosetuppush\n . move deletion of merge configuration to branch.c\n . remote: add per-remote autosetupmerge and autosetuprebase configuration\n . introduce a struct tracking_config\n . branch: install_branch_config and struct tracking refactoring\n . config: allow false and true values for branch.autosetuprebase\n\nHas been ejected from 'pu' for some time, expecting a reroll.\n\n* ne/rev-cache (2009-08-21) 6 commits\n . support for path name caching in rev-cache\n . full integration of rev-cache into git, completed test suite\n . administrative functions for rev-cache, start of integration into git\n . support for non-commit object caching in rev-cache\n . basic revision cache system, no integration or features\n . man page and technical discussion for rev-cache\n\nUpdated but seems to break upload-pack tests when merged to 'pu'; given\nwhat this series touches, breakages in that area are expected.\nMay discard if a working reroll comes, to give it a fresh start.\n"},{"id":"122178","messageId":"200908311132.06031.johan@herland.net","threadId":"20795","inReplyTo":"7viqg48nxi.fsf@alter.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Aug 2009, #06; Sun, 30)","fromName":"Johan Herland","fromEmail":"johan@herland.net","sentAt":"2009-08-31T09:32:05Z","receivedAt":"2009-08-31T09:32:05Z","isPatch":false,"sender":{"key":"johan@herland.net","avatar":"https://avatars.githubusercontent.com/u/547031?v=4"},"body":"On Monday 31 August 2009, Junio C Hamano wrote:\n> [Stalled]\n>\n> * jh/notes (2009-08-27) 12 commits.\n>  - Add '%N'-format for pretty-printing commit notes\n>  - Add flags to get_commit_notes() to control the format of the note\n> string - notes.c: Implement simple memory pooling of leaf nodes\n>  - Selftests verifying semantics when loading notes trees with various\n> fanouts - Teach the notes lookup code to parse notes trees with various\n> fanout schemes - t3302-notes-index-expensive: Speed up create_repo()\n>  - fast-import: Add support for importing commit notes\n>  - Teach \"-m <msg>\" and \"-F <file>\" to \"git notes edit\"\n>  - Add an expensive test for git-notes\n>  - Speed up git notes lookup\n>  - Add a script to edit/inspect notes\n>  - Introduce commit notes\n>\n> I heard the cvs-helper series depends on this one.  It seems that the\n> fan-out strategy is being rethought?\n\nYes, I'm experimenting with various mixes of date-based and commit_sha1-\nbased fanouts. Will send a new series when I have some results to show. \nMight not have time to finish before next weekend, though.\n\n\nHave fun! :)\n\n...Johan\n\n-- \nJohan Herland, <johan@herland.net>\nwww.herland.net\n"},{"id":"122226","messageId":"7v3a77dx5b.fsf@alter.siamese.dyndns.org","threadId":"20795","inReplyTo":"7viqg48nxi.fsf@alter.siamese.dyndns.org","subject":"stash --dwim safety (was Re: What's cooking in git.git (Aug 2009, #06; Sun, 30))","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-09-01T05:58:08Z","receivedAt":"2009-09-01T05:58:08Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> [Stalled]\n>\n> * js/stash-dwim (2009-07-27) 1 commit.\n> * tr/reset-checkout-patch (2009-08-27) 9 commits.\n>\n> There was a discussion on better DWIMmery for the above two topics to (1)\n> forbid \"git stash save --anything-with-dash\" and (2) redirect with any\n> option \"git stash --opt\" to \"git stash save --opt\", to keep it flexible\n> and safe at the same time.  I think it is a sane thing to do, but nothing\n> has happened lately.\n\nActually, I was at fault giving up on Matthieu's patch without studying it\nafter seeing the phrase \"this series replaces\", when the two topics the\nseries tried to replace were already in 'next'.\n\nIt turns out that the rework was simple enough, so I did it myself.  Among\nhis 3 patch series, an equivalent to the first one (\"save -keep\" can be\nwritten as \"save -k\" for brevity) were already in, and the second one\n(default to \"save\" if we see any option before command word) was unsafe\nwithout the third one (reject unknown option to \"save\"), so it ended up as\na single patch that is a combination of the latter two patches.\n\nThis applies on top of tr/reset-checkout-patch branch, 14c674e (Make test\ncase number unique, 2009-08-27).\n\n-- >8 --\nFrom: Matthieu Moy <Matthieu.Moy@imag.fr>\nDate: Tue, 18 Aug 2009 23:38:40 +0200\nSubject: [PATCH] stash: simplify defaulting to \"save\" and reject unknown options\n\nWith the earlier DWIM patches, certain combination of options defaulted\nto the \"save\" command correctly while certain equally valid combination\ndid not.  For example, \"git stash -k\" were Ok but \"git stash -q -k\" did\nnot work.\n\nThis makes the logic of defaulting to \"save\" much simpler. If the first\nargument begins with a '-', it is clear that there is no command word,\nand we default to \"save\" subcommand.\n\nThis also teaches \"git stash save\" to reject an unknown option.  This is\nto keep a mistyped \"git stash save --quite\" from creating a stash with a\nmessage \"--quite\", and this safety is more important with the new logic\nto default to \"save\" with any option-looking argument without an explicit\ncomand word.\n\n[jc: this is based on Matthieu's 3-patch series, and he takes all the\ncredit; if I have introduced bugs while reworking they are mine]\n\nSigned-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n\n---\n Documentation/git-stash.txt |    1 -\n git-stash.sh                |   22 ++++++++++++++++++----\n t/t3903-stash.sh            |   11 +++++++++++\n 3 files changed, 29 insertions(+), 5 deletions(-)\n\ndiff --git a/Documentation/git-stash.txt b/Documentation/git-stash.txt\nindex 1c4ed41..5d4cce3 100644\n--- a/Documentation/git-stash.txt\n+++ b/Documentation/git-stash.txt\n@@ -14,7 +14,6 @@ SYNOPSIS\n 'git stash' ( pop | apply ) [--index] [-q|--quiet] [<stash>]\n 'git stash' branch <branchname> [<stash>]\n 'git stash' [save [--patch] [-k|--[no-]keep-index] [-q|--quiet] [<message>]]\n-'git stash' [-p|--patch|-k|--keep-index]\n 'git stash' clear\n 'git stash' create\n \ndiff --git a/git-stash.sh b/git-stash.sh\nindex 9fd7289..ff71507 100755\n--- a/git-stash.sh\n+++ b/git-stash.sh\n@@ -8,7 +8,6 @@ USAGE=\"list [<options>]\n    or: $dashless ( pop | apply ) [--index] [-q|--quiet] [<stash>]\n    or: $dashless branch <branchname> [<stash>]\n    or: $dashless [save [-k|--keep-index] [-q|--quiet] [<message>]]\n-   or: $dashless [-k|--keep-index]\n    or: $dashless clear\"\n \n SUBDIRECTORY_OK=Yes\n@@ -146,6 +145,14 @@ save_stash () {\n \t\t-q|--quiet)\n \t\t\tGIT_QUIET=t\n \t\t\t;;\n+\t\t--)\n+\t\t\tshift\n+\t\t\tbreak\n+\t\t\t;;\n+\t\t-*)\n+\t\t\techo \"error: unknown option for 'stash save': $1\"\n+\t\t\tusage\n+\t\t\t;;\n \t\t*)\n \t\t\tbreak\n \t\t\t;;\n@@ -355,6 +362,13 @@ apply_to_branch () {\n \tdrop_stash $stash\n }\n \n+# The default command is \"save\"\n+case \"$1\" in\n+-*)\n+\tset \"save\" \"$@\"\n+\t;;\n+esac\n+\n # Main command set\n case \"$1\" in\n list)\n@@ -406,9 +420,9 @@ branch)\n \tapply_to_branch \"$@\"\n \t;;\n *)\n-\tcase $#,\"$1\",\"$2\" in\n-\t0,,|1,-k,|1,--keep-index,|1,-p,|1,--patch,|2,-p,--no-keep-index|2,--patch,--no-keep-index)\n-\t\tsave_stash \"$@\" &&\n+\tcase $# in\n+\t0)\n+\t\tsave_stash &&\n \t\tsay '(To restore them type \"git stash apply\")'\n \t\t;;\n \t*)\ndiff --git a/t/t3903-stash.sh b/t/t3903-stash.sh\nindex e16ad93..5514f74 100755\n--- a/t/t3903-stash.sh\n+++ b/t/t3903-stash.sh\n@@ -208,4 +208,15 @@ test_expect_success 'stash -k' '\n \ttest bar,bar4 = $(cat file),$(cat file2)\n '\n \n+test_expect_success 'stash --invalid-option' '\n+\techo bar5 > file &&\n+\techo bar6 > file2 &&\n+\tgit add file2 &&\n+\ttest_must_fail git stash --invalid-option &&\n+\ttest_must_fail git stash save --invalid-option &&\n+\ttest bar5,bar6 = $(cat file),$(cat file2) &&\n+\tgit stash -- -message-starting-with-dash &&\n+\ttest bar,bar2 = $(cat file),$(cat file2)\n+'\n+\n test_done\n-- \n1.6.4.2.295.g9bcb\n"},{"id":"122228","messageId":"vpqocpv2n93.fsf@bauges.imag.fr","threadId":"20795","inReplyTo":"7v3a77dx5b.fsf@alter.siamese.dyndns.org","subject":"Re: stash --dwim safety","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@imag.fr","sentAt":"2009-09-01T06:27:20Z","receivedAt":"2009-09-01T06:27:20Z","isPatch":false,"sender":{"key":"git@matthieu-moy.fr","avatar":"https://avatars.githubusercontent.com/u/14709?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> It turns out that the rework was simple enough, so I did it myself.  Among\n> his 3 patch series, an equivalent to the first one (\"save -keep\" can be\n> written as \"save -k\" for brevity) were already in, and the second one\n> (default to \"save\" if we see any option before command word) was unsafe\n> without the third one (reject unknown option to \"save\"), so it ended up as\n> a single patch that is a combination of the latter two patches.\n\nThanks, lack of time on my side to work on this, sorry.\n\nI was actually thinking of being a little more paranoid to prevent\naccidental \"stash save\": we could refuse to create a named stash when\nthe \"save\" command is not given. The case I hadn't thought of was \"git\nstash -q apply\", which has 99% chances of being a typo for \"git stash\napply -q\", and which would mean \"create a stash named apply, quietly\".\n\n> +# The default command is \"save\"\n> +case \"$1\" in\n> +-*)\n> +\tset \"save\" \"$@\"\n> +\t;;\n> +esac\n\nSo, that could become something like\n\ndefault_to_save=t\nfor arg in \"$@\"; do\n\tcase \"$arg\" in\n\t-*)\n\t\t;;\n\t*)\n\t\tdefault_to_save=\n\tesac\ndone\n\nif [ \"$default_to_save\" = t ]; then\n\tset \"save\" \"$@\"\nfi\n\n(untested)\n\n-- \nMatthieu\n"},{"id":"122230","messageId":"20090901065716.GA5575@sigill.intra.peff.net","threadId":"20795","inReplyTo":"vpqocpv2n93.fsf@bauges.imag.fr","subject":"Re: stash --dwim safety","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2009-09-01T06:57:16Z","receivedAt":"2009-09-01T06:57:16Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Sep 01, 2009 at 08:27:20AM +0200, Matthieu Moy wrote:\n\n> I was actually thinking of being a little more paranoid to prevent\n> accidental \"stash save\": we could refuse to create a named stash when\n> the \"save\" command is not given. The case I hadn't thought of was \"git\n> stash -q apply\", which has 99% chances of being a typo for \"git stash\n> apply -q\", and which would mean \"create a stash named apply, quietly\".\n\nI like that. I think it addresses Dscho's concern with mistakes causing\nan unexpected stash, and it is actually more consistent with the current\nrule (that named stashes need an explicit 'save'). IOW, it is actually a\nbit confusing that \"git stash foo\" doesn't work, but \"git stash -k foo\"\ndoes.\n\n-Peff\n"},{"id":"122244","messageId":"alpine.DEB.2.00.0909011605400.3883@ds9.cixit.se","threadId":"20795","inReplyTo":"7viqg48nxi.fsf@alter.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Aug 2009, #06; Sun, 30)","fromName":"Peter Krefting","fromEmail":"peter@softwolves.pp.se","sentAt":"2009-09-01T15:08:30Z","receivedAt":"2009-09-01T15:08:30Z","isPatch":false,"sender":{"key":"peter@softwolves.pp.se","avatar":"https://avatars.githubusercontent.com/u/990764?v=4"},"body":"Junio C Hamano:\n\n> * pk/import-dirs (2009-08-24) 1 commit\n> - Add script for importing bits-and-pieces to Git.\n>\n> This version makes me suspect that the author might regret the choice of \n> the import format that does not allow escaping of paths, nor does not \n> allow leading blanks for readability without changing semantics, both of \n> which make it somewhat limiting and error prone.  These issues will be \n> hard to rectify without breaking the backward compatibility, for a tool \n> that could otherwise turn out to be useful.\n\nIf anyone has suggestions on improvements that can help with these issues, \nfeel free to submit additional patches. Backwards compatibility is not an \nissue at the moment since it is new material and I so far is the only user \nof the tool (and since it is meant for one-shot imports, backwards \ncompatibility is not very important).\n\n-- \n\\\\// Peter - http://www.softwolves.pp.se/\n"},{"id":"122247","messageId":"m37hwili5q.fsf@localhost.localdomain","threadId":"20795","inReplyTo":"7viqg48nxi.fsf@alter.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Aug 2009, #06; Sun, 30)","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2009-09-01T16:47:11Z","receivedAt":"2009-09-01T16:47:11Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> * jn/gitweb-blame (2009-08-06) 3 commits\n>  - gitweb: Create links leading to 'blame_incremental' using JavaScript\n>  - gitweb: Incremental blame (WIP)\n>  - gitweb: Add optional \"time to generate page\" info in footer\n> \n> Ajax-y blame WIP\n\nThere is replacement series sent to git mailing list a little while\nago.  \n\nThe replacements for \"time to generate page\" and 'blame_incremental'\nare IMVHO out of WIP (but more testing, in different web browsers\nwould be good).\n\nThe part that actualy creates links that lead to 'blame_incremental'\nview is still work in progress, and needs ideas how to correctly\nimplement it.\n\n-- \nJakub Narebski\nPoland\nShadeHawk on #git\n"},{"id":"122248","messageId":"7vtyzmliai.fsf@alter.siamese.dyndns.org","threadId":"20795","inReplyTo":"m37hwili5q.fsf@localhost.localdomain","subject":"Re: What's cooking in git.git (Aug 2009, #06; Sun, 30)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-09-01T16:51:49Z","receivedAt":"2009-09-01T16:51:49Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jakub Narebski <jnareb@gmail.com> writes:\n\n> There is replacement series sent to git mailing list a little while\n> ago.  \n\nThanks; I've replaced and pushed them out on 'pu' for now.  Will hopefully\nstart merging earlier parts to 'next', but how widely is Hires available?\n"},{"id":"122265","messageId":"c77435a80909011525m3a6e7917xe066d61f3863e615@mail.gmail.com","threadId":"20795","inReplyTo":"7viqg48nxi.fsf@alter.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Aug 2009, #06; Sun, 30)","fromName":"Nick Edelen","fromEmail":"sirnot@gmail.com","sentAt":"2009-09-01T22:25:05Z","receivedAt":"2009-09-01T22:25:05Z","isPatch":false,"sender":{"key":"sirnot@gmail.com","avatar":null},"body":"> * ne/rev-cache (2009-08-21) 6 commits\n>  . support for path name caching in rev-cache\n>  . full integration of rev-cache into git, completed test suite\n>  . administrative functions for rev-cache, start of integration into git\n>  . support for non-commit object caching in rev-cache\n>  . basic revision cache system, no integration or features\n>  . man page and technical discussion for rev-cache\n>\n> Updated but seems to break upload-pack tests when merged to 'pu'; given\n> what this series touches, breakages in that area are expected.\n> May discard if a working reroll comes, to give it a fresh start.\n\nI vaguely remember something concerning those tests when starting the\nproject.  I'm a bit disconnected from everything right now, but I'll\ntry to get those fixed as soon as I can.\n"},{"id":"122278","messageId":"7vy6oyj892.fsf@alter.siamese.dyndns.org","threadId":"20795","inReplyTo":"20090901065716.GA5575@sigill.intra.peff.net","subject":"Re: stash --dwim safety","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-09-02T04:11:37Z","receivedAt":"2009-09-02T04:11:37Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"From: Matthieu Moy <Matthieu.Moy@imag.fr>\nDate: Tue, 18 Aug 2009 23:38:40 +0200\nSubject: [PATCH] stash: simplify defaulting to \"save\" and reject unknown options\n\nWith the earlier DWIM patches, certain combination of options defaulted\nto the \"save\" command correctly while certain equally valid combination\ndid not.  For example, \"git stash -k\" were Ok but \"git stash -q -k\" did\nnot work.\n\nThis makes the logic of defaulting to \"save\" much simpler. If there is no\nnon-flag arguments, it is clear that there is no command word, and we\ndefault to \"save\" subcommand.  This rule prevents \"git stash -q apply\"\nfrom quietly creating a stash with \"apply\" as the message.\n\nThis also teaches \"git stash save\" to reject an unknown option.  This is\nto keep a mistyped \"git stash save --quite\" from creating a stash with a\nmessage \"--quite\", and this safety is more important with the new logic\nto default to \"save\" with any option-looking argument without an explicit\ncomand word.\n\n[jc: this is based on Matthieu's 3-patch series, and a follow-up\ndiscussion, and he and Peff take all the credit; if I have introduced bugs\nwhile reworking, they are mine.]\n\nSigned-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n Jeff King <peff@peff.net> writes:\n\n > On Tue, Sep 01, 2009 at 08:27:20AM +0200, Matthieu Moy wrote:\n >\n >> I was actually thinking of being a little more paranoid to prevent\n >> accidental \"stash save\": we could refuse to create a named stash when\n >> the \"save\" command is not given. The case I hadn't thought of was \"git\n >> stash -q apply\", which has 99% chances of being a typo for \"git stash\n >> apply -q\", and which would mean \"create a stash named apply, quietly\".\n >\n > I like that. I think it addresses Dscho's concern with mistakes causing\n > an unexpected stash, and it is actually more consistent with the current\n > rule (that named stashes need an explicit 'save'). IOW, it is actually a\n > bit confusing that \"git stash foo\" doesn't work, but \"git stash -k foo\"\n > does.\n\n Ok, then here comes the final proposal.\n\n Documentation/git-stash.txt |    9 +++++----\n git-stash.sh                |   27 +++++++++++++++++++++++----\n t/t3903-stash.sh            |   11 +++++++++++\n 3 files changed, 39 insertions(+), 8 deletions(-)\n\ndiff --git a/Documentation/git-stash.txt b/Documentation/git-stash.txt\nindex 1c4ed41..885bc97 100644\n--- a/Documentation/git-stash.txt\n+++ b/Documentation/git-stash.txt\n@@ -14,7 +14,6 @@ SYNOPSIS\n 'git stash' ( pop | apply ) [--index] [-q|--quiet] [<stash>]\n 'git stash' branch <branchname> [<stash>]\n 'git stash' [save [--patch] [-k|--[no-]keep-index] [-q|--quiet] [<message>]]\n-'git stash' [-p|--patch|-k|--keep-index]\n 'git stash' clear\n 'git stash' create\n \n@@ -46,9 +45,11 @@ OPTIONS\n save [--patch] [--[no-]keep-index] [-q|--quiet] [<message>]::\n \n \tSave your local modifications to a new 'stash', and run `git reset\n-\t--hard` to revert them.  This is the default action when no\n-\tsubcommand is given. The <message> part is optional and gives\n-\tthe description along with the stashed state.\n+\t--hard` to revert them.  The <message> part is optional and gives\n+\tthe description along with the stashed state.  For quickly making\n+\ta snapshot, you can omit _both_ \"save\" and <message>, but giving\n+\tonly <message> does not trigger this action to prevent misspelled\n+\tsubcommand from making an unwanted stash.\n +\n If the `--keep-index` option is used, all changes already added to the\n index are left intact.\ndiff --git a/git-stash.sh b/git-stash.sh\nindex 9fd7289..f243376 100755\n--- a/git-stash.sh\n+++ b/git-stash.sh\n@@ -8,7 +8,6 @@ USAGE=\"list [<options>]\n    or: $dashless ( pop | apply ) [--index] [-q|--quiet] [<stash>]\n    or: $dashless branch <branchname> [<stash>]\n    or: $dashless [save [-k|--keep-index] [-q|--quiet] [<message>]]\n-   or: $dashless [-k|--keep-index]\n    or: $dashless clear\"\n \n SUBDIRECTORY_OK=Yes\n@@ -146,6 +145,14 @@ save_stash () {\n \t\t-q|--quiet)\n \t\t\tGIT_QUIET=t\n \t\t\t;;\n+\t\t--)\n+\t\t\tshift\n+\t\t\tbreak\n+\t\t\t;;\n+\t\t-*)\n+\t\t\techo \"error: unknown option for 'stash save': $1\"\n+\t\t\tusage\n+\t\t\t;;\n \t\t*)\n \t\t\tbreak\n \t\t\t;;\n@@ -355,6 +362,18 @@ apply_to_branch () {\n \tdrop_stash $stash\n }\n \n+# The default command is \"save\" if nothing but options are given\n+seen_non_option=\n+for opt\n+do\n+\tcase \"$opt\" in\n+\t-*) ;;\n+\t*) seen_non_option=t; break ;;\n+\tesac\n+done\n+\n+test -n \"$seen_non_option\" || set \"save\" \"$@\"\n+\n # Main command set\n case \"$1\" in\n list)\n@@ -406,9 +425,9 @@ branch)\n \tapply_to_branch \"$@\"\n \t;;\n *)\n-\tcase $#,\"$1\",\"$2\" in\n-\t0,,|1,-k,|1,--keep-index,|1,-p,|1,--patch,|2,-p,--no-keep-index|2,--patch,--no-keep-index)\n-\t\tsave_stash \"$@\" &&\n+\tcase $# in\n+\t0)\n+\t\tsave_stash &&\n \t\tsay '(To restore them type \"git stash apply\")'\n \t\t;;\n \t*)\ndiff --git a/t/t3903-stash.sh b/t/t3903-stash.sh\nindex e16ad93..5514f74 100755\n--- a/t/t3903-stash.sh\n+++ b/t/t3903-stash.sh\n@@ -208,4 +208,15 @@ test_expect_success 'stash -k' '\n \ttest bar,bar4 = $(cat file),$(cat file2)\n '\n \n+test_expect_success 'stash --invalid-option' '\n+\techo bar5 > file &&\n+\techo bar6 > file2 &&\n+\tgit add file2 &&\n+\ttest_must_fail git stash --invalid-option &&\n+\ttest_must_fail git stash save --invalid-option &&\n+\ttest bar5,bar6 = $(cat file),$(cat file2) &&\n+\tgit stash -- -message-starting-with-dash &&\n+\ttest bar,bar2 = $(cat file),$(cat file2)\n+'\n+\n test_done\n-- \n1.6.4.2.301.g12b4ad\n"},{"id":"122281","messageId":"20090902045937.GA12046@coredump.intra.peff.net","threadId":"20795","inReplyTo":"7vy6oyj892.fsf@alter.siamese.dyndns.org","subject":"Re: stash --dwim safety","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2009-09-02T04:59:37Z","receivedAt":"2009-09-02T04:59:37Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"[cc'ing Dscho, as he was the main opponent of similar proposals, and I\nsuspect his silence here means he missed this discussion. I hope this\naddresses his concerns, but I think it is good to get comment from all\ninterested parties.\n\nI'll just quote as appropriate below to comment, but for the whole patch\nsee:\n\n  http://article.gmane.org/gmane.comp.version-control.git/127574\n\n]\n\nOn Tue, Sep 01, 2009 at 09:11:37PM -0700, Junio C Hamano wrote:\n\n> This makes the logic of defaulting to \"save\" much simpler. If there is no\n> non-flag arguments, it is clear that there is no command word, and we\n\ns/is/are/ (or s/arguments/argument/)\n\n> --- a/Documentation/git-stash.txt\n> +++ b/Documentation/git-stash.txt\n> [...]\n> -\t--hard` to revert them.  This is the default action when no\n> -\tsubcommand is given. The <message> part is optional and gives\n> -\tthe description along with the stashed state.\n> +\t--hard` to revert them.  The <message> part is optional and gives\n> +\tthe description along with the stashed state.  For quickly making\n> +\ta snapshot, you can omit _both_ \"save\" and <message>, but giving\n> +\tonly <message> does not trigger this action to prevent misspelled\n> +\tsubcommand from making an unwanted stash.\n\ns/misspelled/a &/\n\n-Peff\n"},{"id":"122287","messageId":"7vk50hap30.fsf@alter.siamese.dyndns.org","threadId":"20795","inReplyTo":"c77435a80909011525m3a6e7917xe066d61f3863e615@mail.gmail.com","subject":"Re: What's cooking in git.git (Aug 2009, #06; Sun, 30)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-09-02T05:32:51Z","receivedAt":"2009-09-02T05:32:51Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Nick Edelen <sirnot@gmail.com> writes:\n\n> I vaguely remember something concerning those tests when starting the\n> project.  I'm a bit disconnected from everything right now, but I'll\n> try to get those fixed as soon as I can.\n\nThanks.\n"},{"id":"122290","messageId":"vpqvdk1vp3u.fsf@bauges.imag.fr","threadId":"20795","inReplyTo":"7vy6oyj892.fsf@alter.siamese.dyndns.org","subject":"Re: stash --dwim safety","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@imag.fr","sentAt":"2009-09-02T06:26:45Z","receivedAt":"2009-09-02T06:26:45Z","isPatch":false,"sender":{"key":"git@matthieu-moy.fr","avatar":"https://avatars.githubusercontent.com/u/14709?v=4"},"body":"Thanks for taking care of this,\n\nJunio C Hamano <gitster@pobox.com> writes:\n\n>  'git stash' [save [--patch] [-k|--[no-]keep-index] [-q|--quiet] [<message>]]\n\nTo be precise, you can change this to\n\n>  'git stash' [save [--patch] [-k|--[no-]keep-index] [-q|--quiet] [--] [<message>]]\n\n(added [--])\n\n-- \nMatthieu\n"},{"id":"122292","messageId":"alpine.DEB.1.00.0909020847090.8306@pacific.mpi-cbg.de","threadId":"20795","inReplyTo":"20090902045937.GA12046@coredump.intra.peff.net","subject":"Re: stash --dwim safety","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-09-02T06:48:09Z","receivedAt":"2009-09-02T06:48:09Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Wed, 2 Sep 2009, Jeff King wrote:\n\n> [cc'ing Dscho, as he was the main opponent of similar proposals, and I\n> suspect his silence here means he missed this discussion.\n\nYour assumption is correct.\n\nI am overloaded with work, and in such times it is highly unlikely that I \nget back to a discussion that was less than fun.\n\nCiao,\nDscho\n"},{"id":"122313","messageId":"200909021944.59576.jnareb@gmail.com","threadId":"20795","inReplyTo":"7vtyzmliai.fsf@alter.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Aug 2009, #06; Sun, 30)","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2009-09-02T17:44:56Z","receivedAt":"2009-09-02T17:44:56Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"On Tue, 1 Sep 2009, Junio C Hamano wrote:\n> Jakub Narebski <jnareb@gmail.com> writes:\n> \n> > There is replacement series sent to git mailing list a little while\n> > ago.  \n> \n> Thanks; I've replaced and pushed them out on 'pu' for now.  Will hopefully\n> start merging earlier parts to 'next', but how widely is Hires available?\n\nWell, if someone wants to have _optional_ 'timed' feature, ha/she can\ninstall Time::HiRes module.  I think that it is not in Perl core, but\nthere are RPM and deb packages with Time::HiRes available in extras.\nIf module is not installed, then only 'timed' feature is not available.\n\n\nP.S. \"Naming is the hardest thing\"; should this feature be named 'timed',\nor do any of you have some better name for it?\n\nP.P.S. Originally the part about \"time to generate page\" was for me to be\nable to benchmark new code... but then I realized that benchmarking \n'blame_incremental' view on single-core computer, where server process\nand AJAX-y JavaScript competes for CPU doesn't a good benchmark make.\nStill, this part can be useful.\n\n-- \nJakub Narebski\nPoland\n"},{"id":"122327","messageId":"eaa105840909021116q7cdbab85tdca0cd1f47360ad7@mail.gmail.com","threadId":"20795","inReplyTo":"7vtyzmliai.fsf@alter.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Aug 2009, #06; Sun, 30)","fromName":"Peter Harris","fromEmail":"git@peter.is-a-geek.org","sentAt":"2009-09-02T18:16:01Z","receivedAt":"2009-09-02T18:16:01Z","isPatch":false,"sender":{"key":"git@peter.is-a-geek.org","avatar":null},"body":"On Tue, Sep 1, 2009 at 12:51 PM, Junio C Hamano wrote:\n> Jakub Narebski <jnareb@gmail.com> writes:\n>\n>> There is replacement series sent to git mailing list a little while\n>> ago.\n>\n> Thanks; I've replaced and pushed them out on 'pu' for now.  Will hopefully\n> start merging earlier parts to 'next', but how widely is Hires available?\n\nIt was added to the Perl core in 5.8. Gitweb already depends on 5.8,\naccording to http://article.gmane.org/gmane.comp.version-control.git/83339\n\nPeter Harris\n"}]}