{"thread":{"id":"18103","subject":"What's cooking in git.git (Mar 2009, #01; Tue, 03)","startedAt":"2009-03-03T09:01:45Z","lastAt":"2009-03-17T07:51:12Z","messageCount":7,"participants":["Junio C Hamano","Jeff King","Jakub Narebski","Johannes Schindelin","Christian Couder"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"106798","messageId":"7vprgzdlom.fsf@gitster.siamese.dyndns.org","threadId":"18103","inReplyTo":null,"subject":"What's cooking in git.git (Mar 2009, #01; Tue, 03)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-03-03T09:01:45Z","receivedAt":"2009-03-03T09:01:45Z","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 branches, but I am still\nholding onto them.\n\nThe topics list the commits in reverse chronological order.  The topics\nmeant to be merged to the maintenance series have \"maint-\" in their names.\n\nThe master branch is slightly past 1.6.2-rc2.  It's been a week and I\nthink I can declare the final on this Wednesday, *if* I am not too mired\nby the day job, but I do not know what would happen yet.\n\nAs an experiment, 'next' and 'pu' stayed open during this release freeze;\nnew topics have been accepted.  I have to say that the experiment was a\nmoderate success, and many topics in 'next' seem to be of fairly high\nquality already, which would mean that we will have a shorter cycle before\n1.6.3.\n\n----------------------------------------------------------------\n[New Topics]\n\n* jk/clone-post-checkout (Tue Mar 3 00:37:51 2009 -0500) 1 commit\n - clone: run post-checkout hook when checking out\n\n* hv/cvsimport (Mon Mar 2 18:59:36 2009 +0100) 1 commit\n - cvsimport: add test illustrating a bug in cvsps\n\n* jc/push-to-create (Mon Mar 2 22:36:16 2009 -0800) 1 commit\n - Push to create\n\n* fc/parseopt-config (Sat Feb 21 02:49:29 2009 +0200) 11 commits\n - git config: don't allow --get-color* and variable type\n - git config: don't allow extra arguments for -e or -l.\n - git config: don't allow multiple variable types\n - git config: don't allow multiple config file locations\n - git config: reorganize to use parseopt\n - git config: reorganize get_color*\n - git config: trivial rename in preparation for parseopt\n - git_config(): not having a per-repo config file is not an error\n + git config: trivial cleanup for editor action\n + git config: codestyle cleanups\n + config: Add new option to open an editor.\n\n* tr/format-patch-thread (Thu Feb 19 22:26:33 2009 +0100) 4 commits\n - format-patch: support deep threading\n - format-patch: thread as reply to cover letter even with in-reply-\n   to\n - format-patch: track several references\n - format-patch: threading test reactivation\n\n* ns/pretty-format (Tue Feb 24 15:33:29 2009 +0200) 5 commits\n + bash completion: add --format= and --oneline options for \"git log\"\n + Add tests for git log --pretty, --format and --oneline.\n + Add --oneline that is a synonym to \"--pretty=oneline --abbrev-\n   commit\"\n + Give short-hands to --pretty=tformat:%formatstring\n + Add --format that is a synonym to --pretty\n\n* mh/cvsimport-tests (Mon Feb 23 06:08:14 2009 +0100) 5 commits\n - Add a test of \"git cvsimport\"'s handling of tags and branches\n - Add some tests of git-cvsimport's handling of vendor branches\n - Test contents of entire cvsimported \"master\" tree contents\n - Use CVS's -f option if available (ignore user's ~/.cvsrc file)\n - Start a library for cvsimport-related tests\n\n* tr/maint-1.6.0-send-email-irt (Sun Mar 1 23:45:41 2009 +0100) 1 commit\n - send-email: respect in-reply-to regardless of threading\n\n* jc/maint-1.6.0-keep-pack (Sat Feb 28 00:37:19 2009 -0800) 6 commits\n + is_kept_pack(): final clean-up\n + Simplify is_kept_pack()\n + Consolidate ignore_packed logic more\n + has_sha1_kept_pack(): take \"struct rev_info\"\n + has_sha1_pack(): refactor \"pretend these packs do not exist\"\n   interface\n + git-repack: resist stray environment variable\n\n* en/maint-hash-object (Sat Feb 28 12:56:49 2009 -0700) 1 commit\n + Ensure proper setup of git_dir for git-hash-object\n\n* el/blame-date (Fri Feb 20 14:51:11 2009 -0800) 1 commit\n - Make git blame's date output format configurable, like git log\n\n* js/remote-improvements (Wed Feb 25 03:32:28 2009 -0500) 22 commits\n - builtin-remote: new show output style for push refspecs\n - builtin-remote: new show output style\n - remote: make guess_remote_head() use exact HEAD lookup if it is\n   available\n - builtin-remote: add set-head subcommand\n - builtin-remote: teach show to display remote HEAD\n - builtin-remote: fix two inconsistencies in the output of \"show\n   <remote>\"\n - builtin-remote: make get_remote_ref_states() always populate\n   states.tracked\n - builtin-remote: rename variables and eliminate redundant function\n   call\n - builtin-remote: remove unused code in get_ref_states\n - builtin-remote: refactor duplicated cleanup code\n - string-list: new for_each_string_list() function\n - remote: make match_refs() not short-circuit\n - remote: make match_refs() copy src ref before assigning to\n   peer_ref\n - remote: let guess_remote_head() optionally return all matches\n - remote: make copy_ref() perform a deep copy\n - remote: simplify guess_remote_head()\n - move locate_head() to remote.c\n - move duplicated ref_newer() to remote.c\n - move duplicated get_local_heads() to remote.c\n - refactor find_ref_by_name() to accept const list\n - add basic http clone/fetch tests\n - test scripts: refactor start_httpd helper\n\n* js/clone-depth-local (Fri Feb 27 00:04:06 2009 -0800) 3 commits\n . parse_options(): do not \"increment\" boolean\n . clone: ignore --depth when cloning locally (implicitly --local)\n . clone: do not ignore --no-local option\n\nJeff had a good suggestion for this series but it was tripped by\na misfeature in parse_options().\n\n* rs/memmem (Tue Mar 3 00:19:30 2009 +0100) 2 commits\n - optimize compat/ memmem()\n - diffcore-pickaxe: use memmem()\n\nAs always with patches from René, this is already next material.\n\n* mv/parseopt-ls-files (Tue Feb 17 15:27:11 2009 +0100) 2 commits\n - parse-opt: migrate builtin-ls-files.\n - Turn the flags in struct dir_struct into a single variable\n\n* jk/sane-relative-time (Tue Feb 24 00:42:16 2009 -0500) 1 commit\n + never fallback relative times to absolute\n\n* tv/rebase-stat (Sun Mar 1 22:28:28 2009 +0100) 2 commits\n - git-pull: Allow --stat and --no-stat to be used with --rebase\n - git-rebase: Add --stat and --no-stat for producing diffstat on\n   rebase\n\n----------------------------------------------------------------\n[Discarded]\n\n* jc/fsck (Fri Jan 30 02:33:47 2009 -0800) 4 commits\n - fsck: three levels of validation\n - verify-pack: add --quick\n - verify_pack(): allow a quicker verification for a pack with\n   version 2 idx\n - pack-check.c: minor formatting fix to match coding style\n\nJ6t has a good point that if this had any value then medium level should\nreplace the default.  I am tempted to actually dropping this as a failed\nexperiment.\n\n* js/remote-set-head (Sat Feb 14 05:30:30 2009 -0500) 5 commits\n - builtin-remote: better handling of multiple remote HEADs\n - builtin-remote: add set-head subcommand\n - builtin-remote: teach show to display remote HEAD\n - builtin-remote: move duplicated cleanup code its own function\n - builtin-clone: move locate_head() to remote.c so it can be re-used\n\n* jk/head-lookup (Sun Feb 15 01:18:18 2009 -0500) 5 commits\n - remote: use exact HEAD lookup if it is available\n - remote: refactor guess_remote_head\n - refactor find_refs_by_name to accept const list\n - add basic http clone/fetch tests\n - test scripts: refactor start_httpd helper\n\nThese two are now consolidated into Jay's remove-improvements series\nlisted above.\n\n----------------------------------------------------------------\n[Stalled and may need help and prodding to go forward]\n\n* gb/gitweb-base (Sun Feb 15 10:18:36 2009 +0100) 1 commit\n - gitweb: fix wrong base URL when non-root DirectoryIndex\n\n* ns/stash-keep (Thu Feb 12 06:25:14 2009 +0900) 1 commit\n - stash: --keep option just saves\n\nDo we want to keep this one?\n\n* lh/submodule-tree-traversal (Sun Jan 25 01:52:06 2009 +0100) 1 commit\n - archive.c: add support for --submodules[=(all|checkedout)]\n\nDiscussion stalled on the submodule selection criteria.\n\n* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 2 commits\n + blame: show \"previous\" information in --porcelain/--incremental\n   format\n + git-blame: refactor code to emit \"porcelain format\" output\n\nThis gives Porcelains (like gitweb) the information on the commit _before_\nthe one that the final blame is laid on, which should save them one\nrev-parse to dig further.  The line number in the \"previous\" information\nmay need refining, and sanity checking code for reference counting may\nneed to be resurrected before this can move forward.\n\nI thought recent tig discussion may blow new life into it, but is this\nunneeded?  If so I'd rather revert it (or discard after 1.6.2).\n\n* db/foreign-scm (Sun Jan 11 15:12:10 2009 -0500) 3 commits\n - Support fetching from foreign VCSes\n - Add specification of git-vcs helpers\n - Add \"vcs\" config option in remotes\n\nThe \"spec\" did not seem quite well cooked yet, but in the longer term I\nthink something like this to allow interoperating with other SCMs as if\nthe other end is a native git repository is a very worthy goal.\n\n* cc/replace (Mon Feb 2 06:13:06 2009 +0100) 11 commits\n - builtin-replace: use \"usage_msg_opt\" to give better error messages\n - parse-options: add new function \"usage_msg_opt\"\n - builtin-replace: teach \"git replace\" to actually replace\n - Add new \"git replace\" command\n - environment: add global variable to disable replacement\n - mktag: call \"check_sha1_signature\" with the replacement sha1\n - replace_object: add a test case\n - object: call \"check_sha1_signature\" with the replacement sha1\n - sha1_file: add a \"read_sha1_file_repl\" function\n - replace_object: add mechanism to replace objects found in\n   \"refs/replace/\"\n - refs: add a \"for_each_replace_ref\" function\n\nI think the code is much cleaner than the first round, but I am not\nconvinced it is doing the right thing in the connectivity traverser.  \nIndependent review sorely needed.\n\n* sc/gitweb-category (Fri Dec 12 00:45:12 2008 +0100) 3 commits\n - gitweb: Optional grouping of projects by category\n - gitweb: Split git_project_list_body in two functions\n - gitweb: Modularized git_get_project_description to be more generic\n\nDesign discussion between Jakub and Sebastien seems to have stalled, but\nJakub seems to be taking this over.\n\n----------------------------------------------------------------\n[Reverted]\n\n* mh/unify-color (Fri Jan 23 01:25:23 2009 -0800) 3 commits\n ? Revert previous two commits\n ? move the color variables to color.c\n ? handle color.ui at a central place\n\nThis broke git-format-patch badly.\n\n* js/rebase-error-a-bit-more-verbose (Sun Feb 8 21:22:18 2009 -0800) 2 commits\n ? Revert \"rebase: explain why when the HEAD could not be detached\"\n ? rebase: explain why when the HEAD could not be detached\n\nThis turned out to be unnecessary.\n\n* rs/maint-1.6.0-windows-ceiling (Sat Feb 7 12:40:40 2009 -0800) 2 commits\n ? Revert \"fix t1504 on Windows\"\n ? fix t1504 on Windows\n\nI'm giving a fresh start to J6t's series which contains this.\n\n* lh/reverted-submodule-tree-traversal (Sun Jan 25 18:39:55 2009 -0800) 4 commits\n ? Revert round #1 of the series\n ? builtin-ls-tree: enable traversal of submodules\n ? archive.c: enable traversal of submodules\n ? tree.c: add support for traversal of submodules\n\nI'm giving a fresh start to Lars's second iteration.\n\n----------------------------------------------------------------\n[Will merge to 'next' soon]\n\n* js/send-email (Mon Mar 2 23:52:18 2009 -0500) 5 commits\n - send-email: add --confirm option and configuration setting\n + send-email: don't create temporary compose file until it is needed\n + send-email: --suppress-cc improvements\n + send-email: handle multiple Cc addresses when reading mbox message\n + send-email: allow send-email to run outside a repo\n\n----------------------------------------------------------------\n[Ready for 'master' after 1.6.2]\n\n* sg/rerere-cleanup (Sat Feb 14 23:21:04 2009 +0100) 1 commit\n + rerere: remove duplicated functions\n\n* jc/add-p-unquote (Mon Feb 16 22:43:43 2009 -0800) 1 commit\n + git-add -i/-p: learn to unwrap C-quoted paths\n\n* jw/imap-preformatted-html (Thu Feb 12 08:58:12 2009 -0600) 1 commit\n + imap.preformattedHTML to tell Thunderbird to send non-flowed text\n\nThe patch text should be identical to Jeremy's \"Virtual Patch\", except\nthat the configuration variable was renamed per list discussion.\n\n* jw/format-patch-attach (Thu Feb 12 09:51:55 2009 -0600) 1 commit\n + Enable setting attach as the default in .gitconfig for git-format-\n   patch.\n\n* sr/force-rebase (Fri Feb 13 23:48:01 2009 +0100) 1 commit\n + Teach rebase to rebase even if upstream is up to date\n\n* fg/exclude-bq (Tue Feb 10 15:20:17 2009 +0100) 1 commit\n + Support \"\\\" in non-wildcard exclusion entries\n\n* dm/add-i-edit-abort (Thu Feb 12 00:19:41 2009 -0500) 1 commit\n + add -i: revisit hunk on editor failure\n\n* tp/completion (Sat Feb 21 15:48:43 2009 +0100) 6 commits\n + Fixup: Add bare repository indicator for __git_ps1\n + Add bare repository indicator for __git_ps1\n + completion: More fixes to prevent unbound variable errors\n + completion: Better __git_ps1 support when not in working directory\n + completion: Use consistent if [...] convention, not \"test\"\n + completion: For consistency, change \"git rev-parse\" to __gitdir\n   calls\n\n* js/branch-symref (Wed Feb 18 22:34:44 2009 -0500) 4 commits\n + add basic branch display tests\n + branch: clean up repeated strlen\n + Avoid segfault with 'git branch' when the HEAD is detached\n + builtin-branch: improve output when displaying remote branches\n\n* al/ansi-color (Fri Feb 13 22:53:41 2009 +0100) 2 commits\n + builtin-branch.c: Rename branch category color names\n + Clean up use of ANSI color sequences\n\n* kb/checkout-optim (Mon Feb 23 19:02:57 2009 +0100) 14 commits\n + write_index(): update index_state->timestamp after flushing to\n   disk\n + verify_uptodate(): add ce_uptodate(ce) test\n + make USE_NSEC work as expected\n + fix compile error when USE_NSEC is defined\n + check_updates(): effective removal of cache entries marked\n   CE_REMOVE\n + lstat_cache(): print a warning if doing ping-pong between cache\n   types\n + show_patch_diff(): remove a call to fstat()\n + write_entry(): use fstat() instead of lstat() when file is open\n + write_entry(): cleanup of some duplicated code\n + create_directories(): remove some memcpy() and strchr() calls\n + unlink_entry(): introduce schedule_dir_for_removal()\n + lstat_cache(): swap func(length, string) into func(string, length)\n + lstat_cache(): generalise longest_match_lstat_cache()\n + lstat_cache(): small cleanup and optimisation\n\n* js/valgrind (Thu Feb 5 22:03:00 2009 +0100) 9 commits\n + valgrind: do not require valgrind 3.4.0 or newer\n + test-lib: avoid assuming that templates/ are in the GIT_EXEC_PATH\n + Tests: let --valgrind imply --verbose and --tee\n + Add a script to coalesce the valgrind outputs\n + t/Makefile: provide a 'valgrind' target\n + test-lib.sh: optionally output to test-results/$TEST.out, too\n + Valgrind support: check for more than just programming errors\n + valgrind: ignore ldso and more libz errors\n + Add valgrind support in test scripts\n\n----------------------------------------------------------------\n[Actively cooking]\n\n* tr/gcov (Thu Feb 19 12:13:42 2009 +0100) 8 commits\n - Test git-patch-id\n - Test rev-list --parents/--children\n - Test log --decorate\n - Test fsck a bit harder\n - Test log --graph\n - Test diff --dirstat functionality\n - Test that diff can read from stdin\n - Support coverage testing with GCC/gcov\n\n* js/notes (Sat Feb 14 21:23:25 2009 +0100) 13 commits\n - notes: refuse to edit notes outside refs/notes/\n - t3301: use test_must_fail instead of !\n - t3301: fix confusing quoting in test for valid notes ref\n - notes: use GIT_EDITOR and core.editor over VISUAL/EDITOR\n - notes: only clean up message file when editing\n - handle empty notes gracefully\n + git notes show: test empty notes\n + git-notes: fix printing of multi-line notes\n + notes: fix core.notesRef documentation\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\nEarlier part was merged to master and then reverted there.  Will be\nrebased 1.6.2 to keep my sanity.\n\n* fc/config-editor (Sat Feb 21 02:48:54 2009 +0200) 3 commits\n + git config: trivial cleanup for editor action\n + git config: codestyle cleanups\n + config: Add new option to open an editor.\n\nRerolled and looked sane.\n\n----------------------------------------------------------------\n[On Hold]\n\n* jc/deny-delete-current-1.7.0 (Mon Feb 9 00:19:46 2009 -0800) 1 commit\n - receive-pack: default receive.denyDeleteCurrent to refuse\n\n* jc/refuse-push-to-current-1.7.0 (Wed Feb 11 02:28:03 2009 -0800) 1 commit\n - Refuse updating the current branch in a non-bare repository via\n   push\n\nThis is for 1.7.0.\n\n* jc/commit-assume-also-during-merge (Thu Jan 22 22:21:49 2009 -0800) 3 commits\n - git commit: pathspec without -i/-o implies -i semantics during a\n   merge\n - builtin-commit: shorten eye-sore overlong lines\n - Add \"partial commit\" tests during a conflicted merge\n\nThis was only meant as a weatherballoon to help facilitate discussion.\n\n* jc/merge-convert (Mon Jan 26 16:45:01 2009 -0800) 1 commit\n - git-merge-file: allow converting the results for the work tree\n\nThis is a feature waiting for a user.  I do not need it in 1.6.2\n\nWe did not give scripted Porcelains a way to say \"this temporary file I am\nusing for merging is for this path, so use the core.autocrlf and attributes\nrules for that final path\".  Instead, merge-file simply wrote out the\ndata in the canonical repository representation.\n\nrerere has the same issue, but it is a lot worse.  It reads the three\nfiles (preimage, postimage and thisimage) from the work tree in the work\ntree representation, merges them without converting them to the canonical\nrepresentation first but inserts the conflict markers with the canonical\nrepresentation and writes the resulting mess out.  It needs to be fixed to\nread with convert_to_git(), merge them while they are still in the\ncanonical representation and possibly add conflict markers, and then write\nthe results out after convert_to_working_tree().  It also needs to write\nin binary mode as well.\n"},{"id":"106802","messageId":"20090303091504.GG3627@coredump.intra.peff.net","threadId":"18103","inReplyTo":"7vprgzdlom.fsf@gitster.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Mar 2009, #01; Tue, 03)","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2009-03-03T09:15:04Z","receivedAt":"2009-03-03T09:15:04Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Mar 03, 2009 at 01:01:45AM -0800, Junio C Hamano wrote:\n\n> As an experiment, 'next' and 'pu' stayed open during this release freeze;\n> new topics have been accepted.  I have to say that the experiment was a\n> moderate success, and many topics in 'next' seem to be of fairly high\n> quality already, which would mean that we will have a shorter cycle before\n> 1.6.3.\n\nI was going to stay quiet on this issue until after 1.6.3 released, but\nnow you have opened the topic. :)\n\nI think seeing the quality of topics in 'next' is only half of\n\"success\". You have to also consider how much attention was given to the\nabout-to-be-released version (and its impact on quality). And I think we\nwon't know about that until we see how quickly we need 1.6.3.1. :)\n\nPersonally, I know that I have spent much less time focusing on\n'master'. Like everyone else, I have limited git bandwidth, and topics\nin 'next' are simply more interesting. I think it's easier to put them\naside for a few weeks if everybody agrees to do so (rather than having\ninteresting discussion proceeding without you if you choose to focus on\n'master').\n\n-Peff\n"},{"id":"106803","messageId":"m3r61ft10q.fsf@localhost.localdomain","threadId":"18103","inReplyTo":"7vprgzdlom.fsf@gitster.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Mar 2009, #01; Tue, 03)","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2009-03-03T09:21:35Z","receivedAt":"2009-03-03T09:21:35Z","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> ----------------------------------------------------------------\n> [Stalled and may need help and prodding to go forward]\n> \n> * gb/gitweb-base (Sun Feb 15 10:18:36 2009 +0100) 1 commit\n>  - gitweb: fix wrong base URL when non-root DirectoryIndex\n\nErrrr... isn't this already in 'master' as v1.6.2-rc1-3-g81d3fe9 ?\n\n> * jc/blame (Wed Jun 4 22:58:40 2008 -0700) 2 commits\n>  + blame: show \"previous\" information in --porcelain/--incremental\n>    format\n>  + git-blame: refactor code to emit \"porcelain format\" output\n> \n> This gives Porcelains (like gitweb) the information on the commit _before_\n> the one that the final blame is laid on, which should save them one\n> rev-parse to dig further.  The line number in the \"previous\" information\n> may need refining, and sanity checking code for reference counting may\n> need to be resurrected before this can move forward.\n> \n> I thought recent tig discussion may blow new life into it, but is this\n> unneeded?  If so I'd rather revert it (or discard after 1.6.2).\n\nThis would be nice to have for gitweb.\n\n-- \nJakub Narebski\nPoland\nShadeHawk on #git\n"},{"id":"106814","messageId":"alpine.DEB.1.00.0903031141330.6399@intel-tinevez-2-302","threadId":"18103","inReplyTo":"7vprgzdlom.fsf@gitster.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Mar 2009, #01; Tue, 03)","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-03-03T11:11:07Z","receivedAt":"2009-03-03T11:11:07Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 3 Mar 2009, Junio C Hamano wrote:\n\n> * js/clone-depth-local (Fri Feb 27 00:04:06 2009 -0800) 3 commits\n>  . parse_options(): do not \"increment\" boolean\n>  . clone: ignore --depth when cloning locally (implicitly --local)\n>  . clone: do not ignore --no-local option\n> \n> Jeff had a good suggestion for this series but it was tripped by\n> a misfeature in parse_options().\n\nIf the issue is that you cannot discern between implicit --no-local and \n--no-local, maybe the solution is to start with option_local = 1.\n\n> * ns/stash-keep (Thu Feb 12 06:25:14 2009 +0900) 1 commit\n>  - stash: --keep option just saves\n> \n> Do we want to keep this one?\n\nAFAIAC no.\n\nI'd like a shorter way to say \"git stash save --keep-index\".  But that's \nOT.\n\nCiao,\nDscho\n"},{"id":"107020","messageId":"200903050743.49858.chriscool@tuxfamily.org","threadId":"18103","inReplyTo":"7vprgzdlom.fsf@gitster.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Mar 2009, #01; Tue, 03)","fromName":"Christian Couder","fromEmail":"chriscool@tuxfamily.org","sentAt":"2009-03-05T06:43:49Z","receivedAt":"2009-03-05T06:43:49Z","isPatch":false,"sender":{"key":"christian.couder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/208954?v=4"},"body":"Le mardi 3 mars 2009, Junio C Hamano a écrit :\n> * cc/replace (Mon Feb 2 06:13:06 2009 +0100) 11 commits\n>  - builtin-replace: use \"usage_msg_opt\" to give better error messages\n>  - parse-options: add new function \"usage_msg_opt\"\n>  - builtin-replace: teach \"git replace\" to actually replace\n>  - Add new \"git replace\" command\n>  - environment: add global variable to disable replacement\n>  - mktag: call \"check_sha1_signature\" with the replacement sha1\n>  - replace_object: add a test case\n>  - object: call \"check_sha1_signature\" with the replacement sha1\n>  - sha1_file: add a \"read_sha1_file_repl\" function\n>  - replace_object: add mechanism to replace objects found in\n>    \"refs/replace/\"\n>  - refs: add a \"for_each_replace_ref\" function\n>\n> I think the code is much cleaner than the first round, but I am not\n> convinced it is doing the right thing in the connectivity traverser.\n> Independent review sorely needed.\n\nI haven't look much at connectivity traverser lately but I think I\nshould first describe some of the issues in other areas.\n\nThere are command to reproduce all the steps. (You have to use pu.)\n\n#\n# Let's start by creating a good environment to test a few things:\n#\n\n$ cd git/t\n$ sed -e 's/test_done/exit 1\\ntest_done/' t6050-replace.sh > tt.sh\n$ ./tt.sh\n*   ok 1: set up buggy branch\n*   ok 2: replace the author\n*   ok 3: tag replaced commit\n*   ok 4: \"git fsck\" works\n*   ok 5: repack, clone and fetch work\n*   ok 6: \"git replace\" listing and deleting\n*   ok 7: \"git replace\" replacing\nFATAL: Unexpected exit with code 1\n$ cd trash\\ directory.tt\n\n#\n# Now let's see what happens when we replace an object:\n#\n\n$ git rev-parse HEAD\nffccc9d552388844dbe94a361c07e7cb1731e12f\n$ git cat-file commit ffccc\ntree 5c37393794868bc8e708cccd7c9d9aaa7a5e53cb\nparent 14ac020163ea60a9d683ce68e36c946f31ecc856\nauthor A U Thor <author@example.com> 1112912353 -0700\ncommitter C O Mitter <committer@example.com> 1112912353 -0700\n\nhello: again 3 more lines\n$ git ls-tree 5c37\n100644 blob 47ea9c3df4682ae7d2c9139fa9ac6dbc9b6eb43d    hello\n$ git cat-file blob 47ea9c3df4682ae7d2c9139fa9ac6dbc9b6eb43d | \nsed -e 's/line 7/changed line 7/' > new_hello\n$ cat new_hello | git hash-object -t blob --stdin -w\n201722c515afacad101b62525a9e57899eac5182\n$ git replace 47ea9c3df4682ae7d2c9139fa9ac6dbc9b6eb43d \n201722c515afacad101b62525a9e57899eac5182\n\n#\n# So now the tree of the current commit has a blob that is replaced.\n# The problem is that we don't see it, except if we \"touch\" the file: \n#\n\n$ git diff\n$ touch hello\n$ git diff\ndiff --git a/hello b/hello\n--- a/hello\n+++ b/hello\n@@ -4,7 +4,7 @@ line 3\n line 4\n line 5\n line 6\n-changed line 7\n+line 7\n line 8\n line 9\n line 10\n\n#\n# And now we cannot create a commit with the above diff:\n#\n\n$ git commit hello\n...\nnothing added to commit but untracked files present (use \"git add\" to track)\n$ git add hello\n$ git status\n...\nnothing added to commit but untracked files present (use \"git add\" to track)\n\n#\n# So I am not sure if that is a big problem, because that happens only\n# if we want to commit something exactly like what we replaced. And in\n# this case the best thing to do might be to simply remove the replace\n# ref.\n#\n\n$ git replace -d 47ea9c3df4682ae7d2c9139fa9ac6dbc9b6eb43d\n$ git diff\n$ touch hello\n$ git diff\n\n#\n# We got back to a normal situation.\n#\n# Now let's try something different\n# First let's replace the current commit:\n#\n\n$ git rev-parse HEAD\nffccc9d552388844dbe94a361c07e7cb1731e12f\n$ git cat-file commit ffccc | sed -e \"s/A U/O/\" | git hash-object -t \ncommit --stdin -w\n$ git cat-file commit dd1ca\ntree 5c37393794868bc8e708cccd7c9d9aaa7a5e53cb\nparent 14ac020163ea60a9d683ce68e36c946f31ecc856\nauthor O Thor <author@example.com> 1112912353 -0700\ncommitter C O Mitter <committer@example.com> 1112912353 -0700\n\nhello: again 3 more lines\n$ git replace HEAD dd1ca\n\n#\n# Let's create a commit based on the current one:\n#\n\n$ echo 'line 17' >> hello\n$ git commit -m 'Add line 17' hello\n[master 8f60c7e] Add line 17\n 1 files changed, 1 insertions(+), 0 deletions(-)\n$ git rev-parse HEAD^\nffccc9d552388844dbe94a361c07e7cb1731e12f\n$ git reset --hard HEAD^\nHEAD is now at dd1ca8e hello: again 3 more lines\n\n#\n# We are now on the replacement commit, though before the last\n# command we were on a commit on top of the original one.\n#\n\n$ echo 'line 17' >> hello\n$ git commit -m 'Add line 17' hello\n[master c4a823a] Add line 17\n 1 files changed, 1 insertions(+), 0 deletions(-)\n\n#\n# We build on top of the replacement commit, not the original one.\n# This means that the original one may be dangling:\n#\n\n$ git fsck --full --no-reflogs\ndangling commit 8f60c7ee5d6e0379ff813a26a2479289605eb935\n...\n\n#\n# Of course on a published history, where \"git replace\" might\n# be most usefull, you don't want to use \"git reset --hard\". So\n# this might not be a big problem either.\n#\n\nAnyway, thanks in advance for advise/opinion about this.\n\nBest regards,\nChristian.\n"},{"id":"108067","messageId":"7vprgiysow.fsf@gitster.siamese.dyndns.org","threadId":"18103","inReplyTo":"20090303091504.GG3627@coredump.intra.peff.net","subject":"Re: What's cooking in git.git (Mar 2009, #01; Tue, 03)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-03-16T04:53:19Z","receivedAt":"2009-03-16T04:53:19Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> On Tue, Mar 03, 2009 at 01:01:45AM -0800, Junio C Hamano wrote:\n>\n>> As an experiment, 'next' and 'pu' stayed open during this release freeze;\n>> new topics have been accepted.  I have to say that the experiment was a\n>> moderate success, and many topics in 'next' seem to be of fairly high\n>> quality already, which would mean that we will have a shorter cycle before\n>> 1.6.3.\n>\n> I was going to stay quiet on this issue until after 1.6.3 released, but\n> now you have opened the topic. :)\n>\n> I think seeing the quality of topics in 'next' is only half of\n> \"success\". You have to also consider how much attention was given to the\n> about-to-be-released version (and its impact on quality). And I think we\n> won't know about that until we see how quickly we need 1.6.3.1. :)\n>\n> Personally, I know that I have spent much less time focusing on\n> 'master'. Like everyone else, I have limited git bandwidth, and topics\n> in 'next' are simply more interesting. I think it's easier to put them\n> aside for a few weeks if everybody agrees to do so (rather than having\n> interesting discussion proceeding without you if you choose to focus on\n> 'master').\n\nWith the first maintenance release after 1.6.2 behind us, I think we can\nstart to judge how successful the 1.6.2 cycle was fairly objectively.\n\nDuring the pre-release freeze, we would want to encorage people to spend\nas much time as possible on finding and fixing bugs and regressions in the\nfrozen 'master', and that was the reason why traditionally we closed\n'next' during the pre-release freeze.\n\nBut in reality, contributors who had leftover topics on 'next' simply\nstopped working on their topics on 'next' without spending the freed up\ntime on concentrating on 'master'.  In an ideal world, the choice would be\nbetween \"git time on 'next'\" vs \"git time on 'master'\", and closing 'next'\nwas meant to force the choice, but instead the outcome became \"less git\ntime until 'next' reopens\".\n\nMy suspicion, when deciding to keep the 'next' branch open during the\nfreeze, was that as long as people look at _any_ git code, even if it is\nbecause they are working on their own topic that will never be in the\nupcoming release, it would increase the chance of bugs getting discovered.\n\nI do not know the exact count of bugfixes after 1.6.2-rc0 are attributable\nto people who happened to notice glitches by accident while working on an\nunrelated enhancements, but for me personally, I tend to notice more bugs\nwhen I am not hunting for one but working on something else.\n\nAlso as a side effect, we had many topics on 'next' that are already\nreasonably mature after 1.6.2, and I think we can have a short cycle for\nthe next one.\n"},{"id":"108190","messageId":"20090317075112.GC18475@coredump.intra.peff.net","threadId":"18103","inReplyTo":"7vprgiysow.fsf@gitster.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Mar 2009, #01; Tue, 03)","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2009-03-17T07:51:12Z","receivedAt":"2009-03-17T07:51:12Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Sun, Mar 15, 2009 at 09:53:19PM -0700, Junio C Hamano wrote:\n\n> But in reality, contributors who had leftover topics on 'next' simply\n> stopped working on their topics on 'next' without spending the freed up\n> time on concentrating on 'master'.  In an ideal world, the choice would be\n> between \"git time on 'next'\" vs \"git time on 'master'\", and closing 'next'\n> was meant to force the choice, but instead the outcome became \"less git\n> time until 'next' reopens\".\n\nI think that is a reasonable argument for keeping 'next' open, and it\nseems to be borne out by this experiment (the post-1.6.2 period seemed\nno better or worse for bugfixes to me).\n\nNow the only problem with keeping next open is that the maintainer\nmisses out on the relative lull in activity during release freeze to\ncatch up on his day job work. But if you can handle that, I'm certainly\nin no position to complain. :)\n\n-Peff\n"}]}