{"thread":{"id":"28790","subject":"What's cooking in git.git (Oct 2011, #11; Fri, 28)","startedAt":"2011-10-28T18:12:59Z","lastAt":"2011-10-31T20:28:22Z","messageCount":5,"participants":["Junio C Hamano","Erik Faye-Lund","Johannes Sixt","Jonathan Nieder"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"178479","messageId":"7vzkglrnmc.fsf@alter.siamese.dyndns.org","threadId":"28790","inReplyTo":null,"subject":"What's cooking in git.git (Oct 2011, #11; Fri, 28)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-10-28T18:12:59Z","receivedAt":"2011-10-28T18:12:59Z","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' (proposed updates) while commits prefixed with '+' are in 'next'.\n\nI am hoping to tag 1.7.8-rc0 this weekend. Proposals and patches for\nchanges that are not regression fixes need to wait until the next\ndevelopment cycle.\n\nHere are the repositories that have my integration branches:\n\nWith maint, master, next, pu, todo:\n\n        git://git.kernel.org/pub/scm/git/git.git\n        git://repo.or.cz/alt-git.git\n        https://code.google.com/p/git-core/\n        https://github.com/git/git\n\nWith only maint and master:\n\n        git://git.sourceforge.jp/gitroot/git-core/git.git\n        git://git-core.git.sourceforge.net/gitroot/git-core/git-core\n\nWith all the topics and integration branches but not todo, html or man:\n\n        https://github.com/gitster/git\n\nI will stop pushing the generated documentation branches to the above\nrepositories, as they are not sources. The only reason the source\nrepository at k.org has hosted these branches was because it was the only\nrepository over there that was writable by me; it was an ugly historical\nand administrative workaround and not a demonstration of the best\npractice.\n\nThese branches are pushed to their own separate repositories instead:\n\n        git://git.kernel.org/pub/scm/git/git-{htmldocs,manpages}.git/\n        git://repo.or.cz/git-{htmldocs,manpages}.git/\n        https://code.google.com/p/git-{htmldocs,manpages}.git/\n        https://github.com/gitster/git-{htmldocs,manpages}.git/\n\n--------------------------------------------------\n[New Topics]\n\n* nd/misc-cleanups (2011-10-27) 6 commits\n  (merged to 'next' on 2011-10-28 at 2527a49)\n + unpack_object_header_buffer(): clear the size field upon error\n + tree_entry_interesting: make use of local pointer \"item\"\n + tree_entry_interesting(): give meaningful names to return values\n + read_directory_recursive: reduce one indentation level\n + get_tree_entry(): do not call find_tree_entry() on an empty tree\n + tree-walk.c: do not leak internal structure in tree_entry_len()\n\nThese are unquestionably good parts taken out of a larger series, so that\nwe can focus more on the other changes in later rounds of review.\n\nWill keep in 'next' during this cycle.\n\n* ss/blame-textconv-fake-working-tree (2011-10-28) 2 commits\n - (squash) test for previous\n - blame.c: Properly initialize strbuf after calling, textconv_object()\n\nA trivial fix for a breakage worth fixing.\nWill merge to 'master' before -rc1.\n\n--------------------------------------------------\n[Graduated to \"master\"]\n\n* js/grep-mutex (2011-10-26) 3 commits\n  (merged to 'next' on 2011-10-26 at 6fac2d6)\n + builtin/grep: simplify lock_and_read_sha1_file()\n + builtin/grep: make lock/unlock into static inline functions\n + git grep: be careful to use mutexes only when they are initialized\n\n* rj/gitweb-clean-js (2011-10-26) 1 commit\n  (merged to 'next' on 2011-10-26 at db36a24)\n + gitweb/Makefile: Remove static/gitweb.js in the clean target\n\n* rs/maint-estimate-cache-size (2011-10-26) 1 commit\n  (merged to 'next' on 2011-10-26 at 2f11375)\n + read-cache.c: fix index memory allocation\n\n* sn/complete-bash-wo-process-subst (2011-10-26) 1 commit\n  (merged to 'next' on 2011-10-26 at 8662ed6)\n + completion: fix issue with process substitution not working on Git for Windows\n\n--------------------------------------------------\n[Stalled]\n\n* hv/submodule-merge-search (2011-10-13) 4 commits\n - submodule.c: make two functions static\n - allow multiple calls to submodule merge search for the same path\n - push: Don't push a repository with unpushed submodules\n - push: teach --recurse-submodules the on-demand option\n\nWhat the topic aims to achieve may make sense, but the implementation\nlooked somewhat suboptimal.\n\n* sr/transport-helper-fix-rfc (2011-07-19) 2 commits\n - t5800: point out that deleting branches does not work\n - t5800: document inability to push new branch with old content\n\nPerhaps 281eee4 (revision: keep track of the end-user input from the\ncommand line, 2011-08-25) would help.\n\n* jc/lookup-object-hash (2011-08-11) 6 commits\n - object hash: replace linear probing with 4-way cuckoo hashing\n - object hash: we know the table size is a power of two\n - object hash: next_size() helper for readability\n - pack-objects --count-only\n - object.c: remove duplicated code for object hashing\n - object.c: code movement for readability\n\nI do not think there is anything fundamentally wrong with this series, but\nthe risk of breakage far outweighs observed performance gain in one\nparticular workload.\n\n* jc/verbose-checkout (2011-10-16) 2 commits\n - checkout -v: give full status output after switching branches\n - checkout: move the local changes report to the end\n\nThis is just to leave a record that the reason why we do not do this not\nbecause we are incapable of coding this, but because it is not a good idea\nto do this. I suspect people who are new to git that might think they need\nit would soon realize the don't.\n\nWill keep in 'pu' as a showcase for a while and then will drop.\n\n* kk/gitweb-side-by-side-diff (2011-10-17) 2 commits\n - gitweb: add a feature to show side-by-side diff\n - gitweb: change format_diff_line() to remove leading SP from $diff_class\n\nFun.\nWill keep in 'pu' until the planned re-roll comes.\n\n--------------------------------------------------\n[Cooking]\n\n* ef/mingw-upload-archive (2011-10-26) 3 commits\n - upload-archive: use start_command instead of fork\n - compat/win32/poll.c: upgrade from upstream\n - mingw: move poll out of sys-folder\n\nAre msysgit folks OK with this series (I didn't see msysgit list Cc'ed on\nthese patches)? If so let's move this forward, as the changes to the core\npart seem solid.\n\n* rs/allocate-cache-entry-individually (2011-10-26) 2 commits\n  (merged to 'next' on 2011-10-27 at 2e4acd6)\n + cache.h: put single NUL at end of struct cache_entry\n + read-cache.c: allocate index entries individually\n\nWill keep in 'next' during this cycle.\n\n* nd/pretty-commit-log-message (2011-10-23) 2 commits\n  (merged to 'next' on 2011-10-27 at 4b61df7)\n + pretty.c: use original commit message if reencoding fails\n + pretty.c: free get_header() return value\n\nWill merge to 'master' before -rc0.\n\n* mh/ref-api-3 (2011-10-19) 11 commits\n  (merged to 'next' on 2011-10-23 at 92e2d35)\n + is_refname_available(): reimplement using do_for_each_ref_in_array()\n + names_conflict(): simplify implementation\n + names_conflict(): new function, extracted from is_refname_available()\n + repack_without_ref(): reimplement using do_for_each_ref_in_array()\n + do_for_each_ref_in_array(): new function\n + do_for_each_ref(): correctly terminate while processesing extra_refs\n + add_ref(): take a (struct ref_entry *) parameter\n + create_ref_entry(): extract function from add_ref()\n + parse_ref_line(): add a check that the refname is properly formatted\n + repack_without_ref(): remove temporary\n + Rename another local variable name -> refname\n (this branch uses mh/ref-api-2.)\n\nWill keep in 'next' during this cycle.\n\n* rr/revert-cherry-pick (2011-10-23) 5 commits\n  (merged to 'next' on 2011-10-26 at 27b7496)\n + revert: simplify communicating command-line arguments\n + revert: allow mixed pick and revert instructions\n + revert: make commit subjects in insn sheet optional\n + revert: simplify getting commit subject in format_todo()\n + revert: free msg in format_todo()\n\nThe internals of \"git revert/cherry-pick\" has been further refactored to\nserve as the basis for the sequencer.\n\nWill keep in 'next' during this cycle.\n\n* jc/check-ref-format-fixup (2011-10-19) 2 commits\n  (merged to 'next' on 2011-10-19 at 98981be)\n + Revert \"Restrict ref-like names immediately below $GIT_DIR\"\n  (merged to 'next' on 2011-10-15 at 8e89bc5)\n + Restrict ref-like names immediately below $GIT_DIR\n\nThis became a no-op except for the bottom one which is part of the other\ntopic now.\nWill discard once the other topic graduates to 'master'.\n\n* cb/daemon-permission-errors (2011-10-17) 2 commits\n - daemon: report permission denied error to clients\n - daemon: add tests\n\nThe tip commit might be loosening things a bit too much.\nWill keep in 'pu' until hearing a convincing argument for the patch.\n\n* mh/ref-api-2 (2011-10-17) 14 commits\n  (merged to 'next' on 2011-10-19 at cc89f0e)\n + resolve_gitlink_ref_recursive(): change to work with struct ref_cache\n + Pass a (ref_cache *) to the resolve_gitlink_*() helper functions\n + resolve_gitlink_ref(): improve docstring\n + get_ref_dir(): change signature\n + refs: change signatures of get_packed_refs() and get_loose_refs()\n + is_dup_ref(): extract function from sort_ref_array()\n + add_ref(): add docstring\n + parse_ref_line(): add docstring\n + is_refname_available(): remove the \"quiet\" argument\n + clear_ref_array(): rename from free_ref_array()\n + refs: rename parameters result -> sha1\n + refs: rename \"refname\" variables\n + struct ref_entry: document name member\n + cache.h: add comments for git_path() and git_path_submodule()\n (this branch is used by mh/ref-api-3.)\n\nWill keep in 'next' during this cycle.\n\n* dm/pack-objects-update (2011-10-20) 4 commits\n  (merged to 'next' on 2011-10-27 at fa52898)\n + pack-objects: don't traverse objects unnecessarily\n + pack-objects: rewrite add_descendants_to_write_order() iteratively\n + pack-objects: use unsigned int for counter and offset values\n + pack-objects: mark add_to_write_order() as inline\n\nWill merge to 'master' before -rc0.\n\n* jk/git-tricks (2011-10-21) 3 commits\n  (merged to 'next' on 2011-10-23 at 7c9bf71)\n + completion: match ctags symbol names in grep patterns\n + contrib: add git-jump script\n + contrib: add diff highlight script\n\nAs this stuff is in contrib/ I do not care too much about the stability.\nWill merge to 'master' unless there is strong objection.\n\n* jc/signed-commit (2011-10-21) 7 commits\n  (merged to 'next' on 2011-10-23 at 03eec25)\n + pretty: %G[?GS] placeholders\n + parse_signed_commit: really use the entire commit log message\n + test \"commit -S\" and \"log --show-signature\"\n + t7004: extract generic \"GPG testing\" bits\n + log: --show-signature\n + commit: teach --gpg-sign option\n + Split GPG interface into its own helper library\n\nThis is to replace the earlier \"signed push\" experiments.\nWill keep in 'next' during this cycle.\n\n* sg/complete-refs (2011-10-21) 9 commits\n  (merged to 'next' on 2011-10-26 at d65e2b4)\n + completion: remove broken dead code from __git_heads() and __git_tags()\n + completion: fast initial completion for config 'remote.*.fetch' value\n + completion: improve ls-remote output filtering in __git_refs_remotes()\n + completion: query only refs/heads/ in __git_refs_remotes()\n + completion: support full refs from remote repositories\n + completion: improve ls-remote output filtering in __git_refs()\n + completion: make refs completion consistent for local and remote repos\n + completion: optimize refs completion\n + completion: document __gitcomp()\n\nWill keep in 'next' until an Ack or two from completion folks.\n\n* jc/request-pull-show-head-4 (2011-10-15) 11 commits\n  (merged to 'next' on 2011-10-15 at 7e340ff)\n + fmt-merge-msg.c: Fix an \"dubious one-bit signed bitfield\" sparse error\n  (merged to 'next' on 2011-10-10 at 092175e)\n + environment.c: Fix an sparse \"symbol not declared\" warning\n + builtin/log.c: Fix an \"Using plain integer as NULL pointer\" warning\n  (merged to 'next' on 2011-10-07 at fcaeca0)\n + fmt-merge-msg: use branch.$name.description\n  (merged to 'next' on 2011-10-06 at fa5e0fe)\n + request-pull: use the branch description\n + request-pull: state what commit to expect\n + request-pull: modernize style\n + branch: teach --edit-description option\n + format-patch: use branch description in cover letter\n + branch: add read_branch_desc() helper function\n + Merge branch 'bk/ancestry-path' into jc/branch-desc\n\nAllow setting \"description\" for branches and use it to help communications\nbetween humans in various workflow elements.\n\nWill keep in 'next' during this cycle.\n"},{"id":"178513","messageId":"CABPQNSYi7gJKbUb7y2hNvF9KXXyt8ShgJD8AoBhryGwAxp6ejw@mail.gmail.com","threadId":"28790","inReplyTo":"7vzkglrnmc.fsf@alter.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Oct 2011, #11; Fri, 28)","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@gmail.com","sentAt":"2011-10-29T15:42:36Z","receivedAt":"2011-10-29T15:42:36Z","isPatch":false,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"Cc'ing the msysgit list.\n\nOn Fri, Oct 28, 2011 at 8:12 PM, Junio C Hamano <gitster@pobox.com> wrote:\n> * ef/mingw-upload-archive (2011-10-26) 3 commits\n>  - upload-archive: use start_command instead of fork\n>  - compat/win32/poll.c: upgrade from upstream\n>  - mingw: move poll out of sys-folder\n>\n> Are msysgit folks OK with this series (I didn't see msysgit list Cc'ed on\n> these patches)? If so let's move this forward, as the changes to the core\n> part seem solid.\n>\n\nThe msysgit list not being Cc'ed on the patches was a slip-up on my\nbehalf. I believe the changes are relatively uncontroversial from an\nmsysgit point of view, though. However, an ack/nack would be\nappreciated ;)\n\nOr does people prefer me re-sending the series, with the msysgit list Cc'ed?\n"},{"id":"178535","messageId":"4EADC4F2.9040008@kdbg.org","threadId":"28790","inReplyTo":"CABPQNSYi7gJKbUb7y2hNvF9KXXyt8ShgJD8AoBhryGwAxp6ejw@mail.gmail.com","subject":"Re: [msysGit] Re: What's cooking in git.git (Oct 2011, #11; Fri, 28)","fromName":"Johannes Sixt","fromEmail":"j6t@kdbg.org","sentAt":"2011-10-30T21:43:14Z","receivedAt":"2011-10-30T21:43:14Z","isPatch":false,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Am 29.10.2011 17:42, schrieb Erik Faye-Lund:\n> On Fri, Oct 28, 2011 at 8:12 PM, Junio C Hamano <gitster@pobox.com> wrote:\n>> * ef/mingw-upload-archive (2011-10-26) 3 commits\n>>  - upload-archive: use start_command instead of fork\n>>  - compat/win32/poll.c: upgrade from upstream\n>>  - mingw: move poll out of sys-folder\n>>\n>> Are msysgit folks OK with this series (I didn't see msysgit list Cc'ed on\n>> these patches)? If so let's move this forward, as the changes to the core\n>> part seem solid.\n> \n> The msysgit list not being Cc'ed on the patches was a slip-up on my\n> behalf. I believe the changes are relatively uncontroversial from an\n> msysgit point of view, though. However, an ack/nack would be\n> appreciated ;)\n\nThe patch series looks good and passes my tests. Therefore:\n\nAcked-by: Johannes Sixt <j6t@kdbg.org>\n\n-- Hannes\n"},{"id":"178561","messageId":"20111031125648.GA1757@elie.hsd1.il.comcast.net","threadId":"28790","inReplyTo":"7vzkglrnmc.fsf@alter.siamese.dyndns.org","subject":"jc/lookup-object-hash from pu crashes on ARM","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-10-31T12:56:48Z","receivedAt":"2011-10-31T12:56:48Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Junio C Hamano wrote:\n\n> * jc/lookup-object-hash (2011-08-11) 6 commits\n>  - object hash: replace linear probing with 4-way cuckoo hashing\n>  - object hash: we know the table size is a power of two\n>  - object hash: next_size() helper for readability\n>  - pack-objects --count-only\n>  - object.c: remove duplicated code for object hashing\n>  - object.c: code movement for readability\n\nThe code from the tip commit crashes on ARM for me (and presumably\nwould also misbehave on other platforms that care about alignment):\n\n $ git branch -av\n Bus error\n\nThe following might avoid that:\n\n\tstatic inline unsigned int H(const unsigned char *sha1, int ix)\n\t{\n\t\tunsigned int hash;\n\t\tmemcpy(&hash, sha1 + ix * sizeof(unsigned int),\n\t\t\t\tsizeof(unsigned int));\n\t\treturn hash % (obj_hash_size - 1);\n\t}\n\nEven better could be to start aligning the hashes we pass around,\nusing something like this:\n\n\tunion object_hash {\n\t\tunsigned char sha1[20];\n\t\tuint32_t chunk[5];\n\t};\n\nwhich could speed up functions like hashcpy(), hashcmp(), and\nhasheq().  But it's probably not worth the fuss.\n\nCall chain:\n\n\tcmd_branch -> print_ref_list -> for_each_rawref ->\n\t  do_for_each_ref -> do_one_ref(entry=0x175508) ->\n\t  append_ref(sha1=0x175509) ->\n\t  lookup_commit_reference_gently -> parse_object ->\n\t  parse_object_buffer -> lookup_commit -> lookup_object\n\nThis is from testing pu (ed7c265e), in case that's relevant.  Aside\nfrom that, the topic looks neat. :)\n"},{"id":"178578","messageId":"7vhb2oq521.fsf@alter.siamese.dyndns.org","threadId":"28790","inReplyTo":"20111031125648.GA1757@elie.hsd1.il.comcast.net","subject":"Re: jc/lookup-object-hash from pu crashes on ARM","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-10-31T20:28:22Z","receivedAt":"2011-10-31T20:28:22Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jonathan Nieder <jrnieder@gmail.com> writes:\n\n> Even better could be to start aligning the hashes we pass around,\n> using something like this:\n>\n> \tunion object_hash {\n> \t\tunsigned char sha1[20];\n> \t\tuint32_t chunk[5];\n> \t};\n>\n> which could speed up functions like hashcpy(), hashcmp(), and\n> hasheq().  But it's probably not worth the fuss.\n\nThe \"flag\" field in struct ref_list should be moved down to assure\nalignment.\n\n        struct ref_list {\n                struct ref_list *next;\n                unsigned char flag; /* ISSYMREF? ISPACKED? */\n                unsigned char sha1[20];\n                unsigned char peeled[20];\n                char name[FLEX_ARRAY];\n        };\n\nI am very tempted to take that \"union\" approach (modulo that I would call\nthat an \"object_name\") in the longer run, though.\n"}]}