{"push_id":2762527478,"size":130,"distinct_size":129,"ref":"refs/heads/pu","head":"797e406c946f1a5184fb8cfaff7d690b9e67afe1","before":"6f49f36ebaec72297968ad4cc390f43d4b1f5084","commits":[{"sha":"fb78b040c5dc5b80a093d028d13f8cd32ade17cd","author":{"name":"Chen Bin","email":"ee431e244efa222a3003cb3da1cc87fbcfc4c1d2@gmail.com"},"message":"Add the `p4-pre-submit` hook\n\nThe `p4-pre-submit` hook is executed before git-p4 submits code.\nIf the hook exits with non-zero value, submit process not start.\n\nSigned-off-by: Chen Bin <chenbin.sh@gmail.com>\nReviewed-by: Luke Diamand <luke@diamand.org>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/fb78b040c5dc5b80a093d028d13f8cd32ade17cd"},{"sha":"e9dac7be60f4a113baeee39ef94f9f21f0a5c028","author":{"name":"Eric Sunshine","email":"8d6e34f987851aa599257d3831a1af040886842f@sunshineco.com"},"message":"mw-to-git/t9360: fix broken &&-chain\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/e9dac7be60f4a113baeee39ef94f9f21f0a5c028"},{"sha":"ace64e56c10a61b184e1fcfc0dae34b4e78036de","author":{"name":"Eric Sunshine","email":"8d6e34f987851aa599257d3831a1af040886842f@sunshineco.com"},"message":"t/chainlint.sed: drop extra spaces from regex character class\n\nThis character class, like many others in this script, matches\nhorizontal whitespace consisting of spaces and tabs, however, a few\nextra, entirely harmless, spaces somehow slipped into the expression.\nRemoving them is purely a cosmetic fix.\n\nWhile at it, re-indent three lines with a single TAB each which were\nincorrectly indented with six spaces. Also, a purely cosmetic fix.\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/git/git/commits/ace64e56c10a61b184e1fcfc0dae34b4e78036de"},{"sha":"ca3e1826a063ff7576a5e134f3b20b68196a1a5d","author":{"name":"Eric Sunshine","email":"8d6e34f987851aa599257d3831a1af040886842f@sunshineco.com"},"message":"sequencer: fix \"rebase -i --root\" corrupting author header\n\nWhen \"git rebase -i --root\" creates a new root commit (say, by swapping\nin a different commit for the root), it corrupts the commit's \"author\"\nheader with trailing garbage:\n\n    author A U Thor <author@example.com> @1112912773 -07000or@example.com\n\nThis is a result of read_author_ident() neglecting to NUL-terminate the\nbuffer into which it composes the \"author\" header.\n\n(Note that the \"@\" preceding the timestamp and the extra \"0\" in the\ntimezone are separate bugs which will be fixed subsequently.)\n\nSecurity considerations: Construction of the \"author\" header by\nread_author_ident() happens in-place and in parallel with parsing the\ncontent of \"rebase-merge/author-script\" which occupies the same buffer.\nThis is possible because the constructed \"author\" header is always\nsmaller than the content of \"rebase-merge/author-script\". Despite\nneglecting to NUL-terminate the constructed \"author\" header, memory is\nnever accessed (either by read_author_ident() or its caller) beyond the\nallocated buffer since a NUL-terminator is present at the end of the\nloaded \"rebase-merge/author-script\" content, and additional NUL's are\ninserted as part of the parsing process.\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\nAcked-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/ca3e1826a063ff7576a5e134f3b20b68196a1a5d"},{"sha":"0f16c09aaeabf0f543693a21535e670a2b808e9e","author":{"name":"Eric Sunshine","email":"8d6e34f987851aa599257d3831a1af040886842f@sunshineco.com"},"message":"sequencer: fix \"rebase -i --root\" corrupting author header timezone\n\nWhen \"git rebase -i --root\" creates a new root commit, it corrupts the\n\"author\" header's timezone by repeating the last digit:\n\n    author A U Thor <author@example.com> @1112912773 -07000\n\nThis is due to two bugs.\n\nFirst, write_author_script() neglects to add the closing quote to the\nvalue of GIT_AUTHOR_DATE when generating \"rebase-merge/author-script\".\n\nSecond, although sq_dequote() correctly diagnoses the missing closing\nquote, read_author_ident() ignores sq_dequote()'s return value and\nblindly uses the result of the aborted dequote.\n\nsq_dequote() performs dequoting in-place by removing quoting and\nshifting content downward. When it detects misquoting (lack of closing\nquote, in this case), it gives up and returns an error without inserting\na NUL-terminator at the end of the shifted content, which explains the\nduplicated last digit in the timezone.\n\n(Note that the \"@\" preceding the timestamp is a separate bug which\nwill be fixed subsequently.)\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/0f16c09aaeabf0f543693a21535e670a2b808e9e"},{"sha":"67f16e3d3fbd1eccda5d1cdb33d04cd087162057","author":{"name":"Eric Sunshine","email":"8d6e34f987851aa599257d3831a1af040886842f@sunshineco.com"},"message":"sequencer: fix \"rebase -i --root\" corrupting author header timestamp\n\nWhen \"git rebase -i --root\" creates a new root commit, it corrupts the\n\"author\" header's timestamp by prepending a \"@\":\n\n    author A U Thor <author@example.com> @1112912773 -0700\n\nThe commit parser is very strict about the format of the \"author\"\nheader, and does not allow a \"@\" in that position.\n\nThe \"@\" comes from GIT_AUTHOR_DATE in \"rebase-merge/author-script\",\nsignifying a Unix epoch-based timestamp, however, read_author_ident()\nincorrectly allows it to slip into the commit's \"author\" header, thus\ncorrupting it.\n\nOne possible fix would be simply to filter out the \"@\" when constructing\nthe \"author\" header timestamp, however, a more correct fix is to parse\nthe GIT_AUTHOR_DATE date (via parse_date()) and format the parsed result\ninto the \"author\" header. Since \"rebase-merge/author-script\" may be\nedited by the user, this approach has the extra benefit of catching\nother potential timestamp corruption due to hand-editing.\n\nWe can do better than calling parse_date() ourselves and constructing\nthe \"author\" header manually, however, by instead taking advantage of\nfmt_ident() which does this work for us.\n\nThe benefits of using fmt_ident() are twofold. First, it simplifies the\nlogic considerably by allowing us to avoid the complexity of building\nthe \"author\" header in parallel with and in the same buffer from which\n\"rebase-merge/author-script\" is being parsed. Instead, fmt_ident() is\ninvoked to compose the header after parsing is complete.\n\nSecond, fmt_ident() is careful to prevent \"crud\" from polluting the\ncomposed ident. As with validating GIT_AUTHOR_DATE, this \"crud\"\navoidance prevents other (possibly hand-edited) bogus author information\nfrom \"rebase-merge/author-script\" from corrupting the commit object.\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/67f16e3d3fbd1eccda5d1cdb33d04cd087162057"},{"sha":"5522bbac2059283f7a91fa367fb1eb75faec2f3d","author":{"name":"Eric Sunshine","email":"8d6e34f987851aa599257d3831a1af040886842f@sunshineco.com"},"message":"sequencer: don't die() on bogus user-edited timestamp\n\nread_author_ident() is careful to handle errors \"gently\" when parsing\n\"rebase-merge/author-script\" by printing a suitable warning and\nreturning NULL; it never die()'s. One possible reason that parsing might\nfail is that \"rebase-merge/author-script\" has been hand-edited in such a\nway which corrupts it or the information it contains.\n\nHowever, read_author_ident() invokes fmt_ident() which is not so careful\nabout failing \"gently\". It will die() if it encounters a malformed\ntimestamp. Since read_author_ident() doesn't want to die() and since\nit's dealing with possibly hand-edited data, take care to avoid passing\na bogus timestamp to fmt_ident().\n\nA more \"correctly engineered\" fix would be to add a \"gentle\" version of\nfmt_ident(), however, such a change it outside the scope of the bug-fix\nseries. If fmt_ident() ever does grow a \"gentle\" cousin, then the manual\ntimestamp check added here can be retired.\n\nSigned-off-by: Eric Sunshine <sunshine@sunshineco.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/5522bbac2059283f7a91fa367fb1eb75faec2f3d"},{"sha":"325903a537723b7026d91d7958ca833304e5cd22","author":{"name":"Phillip Wood","email":"2ab49fd2594d8067d004e5d20374688a2b5dc79c@dunelm.org.uk"},"message":"sequencer: handle errors in read_author_ident()\n\nThe calling code treated NULL as a valid return value, so fix this by\nreturning and integer and passing in a parameter to receive the author.\n\nSigned-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/325903a537723b7026d91d7958ca833304e5cd22"},{"sha":"51667015e0ec73ae457378dbcbfafebc2c43a3f5","author":{"name":"Phillip Wood","email":"2ab49fd2594d8067d004e5d20374688a2b5dc79c@dunelm.org.uk"},"message":"sequencer: fix quoting in write_author_script\n\nSingle quotes should be escaped as \\' not \\\\'. Note that this only\naffects authors that contain a single quote and then only external\nscripts that read the author script and users whose git is upgraded from\nthe shell version of rebase -i while rebase was stopped. This is because\nthe parsing in read_env_script() expected the broken version and for\nsome reason sq_dequote() called by read_author_ident() seems to handle\nthe broken quoting correctly.\n\nIdeally rebase and am would share the same code for reading and\nwriting the author script, but this commit just fixes the immediate\nbug.\n\nThe test is based on an original by Akinori MUSHA which was designed to\ncheck that the author script was parsable by posix shell.\n\nHelped-by: Johannes Schindelin <johannes.schindelin@gmx.de>\nSigned-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/51667015e0ec73ae457378dbcbfafebc2c43a3f5"},{"sha":"ca7565c48380bead887494ce9afa2ca791273150","author":{"name":"Alban Gruin","email":"fae2f724377727e9132d1ecb1834263bfb64542c@gmail.com"},"message":"sequencer: make two functions and an enum from sequencer.c public\n\nThis makes rebase_path_todo(), get_missing_commit_check_level() and the\nenum check_level accessible outside sequencer.c, renames check_level to\nmissing_commit_check_level, and prefixes its value names by\nMISSING_COMMIT_ to avoid namespace pollution.\n\nThis function and this enum will eventually be moved to\nrebase-interactive.c and become static again, so no special attention\nwas given to the naming.\n\nThis will be needed for the rewrite of append_todo_help() from shell to\nC, as it will be in a new library source file, rebase-interactive.c.\n\nSigned-off-by: Alban Gruin <alban.gruin@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/ca7565c48380bead887494ce9afa2ca791273150"},{"sha":"eadef1d7bb4d96fceb27ee25a9e48b50eff41af1","author":{"name":"Alban Gruin","email":"fae2f724377727e9132d1ecb1834263bfb64542c@gmail.com"},"message":"rebase -i: rewrite append_todo_help() in C\n\nThis rewrites append_todo_help() from shell to C. It also incorporates\nsome parts of initiate_action() and complete_action() that also write\nhelp texts to the todo file.\n\nThis also introduces the source file rebase-interactive.c. This file\nwill contain functions necessary for interactive rebase that are too\nspecific for the sequencer, and is part of libgit.a.\n\nTwo flags are added to rebase--helper.c: one to call\nappend_todo_help() (`--append-todo-help`), and another one to tell\nappend_todo_help() to write the help text suited for the edit-todo\nmode (`--write-edit-todo`).\n\nFinally, append_todo_help() is removed from git-rebase--interactive.sh\nto use `rebase--helper --append-todo-help` instead.\n\nSigned-off-by: Alban Gruin <alban.gruin@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/eadef1d7bb4d96fceb27ee25a9e48b50eff41af1"},{"sha":"fb2c39b4046326a644dd5ac8413633829eb4e218","author":{"name":"Alban Gruin","email":"fae2f724377727e9132d1ecb1834263bfb64542c@gmail.com"},"message":"editor: add a function to launch the sequence editor\n\nAs part of the rewrite of interactive rebase, the sequencer will need to\nopen the sequence editor to allow the user to edit the todo list.\nInstead of duplicating the existing launch_editor() function, this\nrefactors it to a new function, launch_specified_editor(), which takes\nthe editor as a parameter, in addition to the path, the buffer and the\nenvironment variables.  launch_sequence_editor() is then added to launch\nthe sequence editor.\n\nSigned-off-by: Alban Gruin <alban.gruin@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/fb2c39b4046326a644dd5ac8413633829eb4e218"},{"sha":"3c439b0ebbf8c543c914e37e50d6e1fd90dfc88d","author":{"name":"Alban Gruin","email":"fae2f724377727e9132d1ecb1834263bfb64542c@gmail.com"},"message":"rebase -i: rewrite the edit-todo functionality in C\n\nThis rewrites the edit-todo functionality from shell to C.\n\nTo achieve that, a new command mode, `edit-todo`, is added, and the\n`write-edit-todo` flag is removed, as the shell script does not need to\nwrite the edit todo help message to the todo list anymore.\n\nThe shell version is then stripped in favour of a call to the helper.\n\nSigned-off-by: Alban Gruin <alban.gruin@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/3c439b0ebbf8c543c914e37e50d6e1fd90dfc88d"},{"sha":"849b6fa8784fba0f5c28b292beee6ac93f99786c","author":{"name":"Alban Gruin","email":"fae2f724377727e9132d1ecb1834263bfb64542c@gmail.com"},"message":"sequencer: add a new function to silence a command, except if it fails\n\nThis adds a new function, run_command_silent_on_success(), to\nredirect the stdout and stderr of a command to a strbuf, and then to run\nthat command. This strbuf is printed only if the command fails. It is\nfunctionnaly similar to output() from git-rebase.sh.\n\nrun_git_commit() is then refactored to use of\nrun_command_silent_on_success().\n\nSigned-off-by: Alban Gruin <alban.gruin@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/849b6fa8784fba0f5c28b292beee6ac93f99786c"},{"sha":"1dadc600c1627ee2896689c697632cd6de657367","author":{"name":"Alban Gruin","email":"fae2f724377727e9132d1ecb1834263bfb64542c@gmail.com"},"message":"rebase -i: rewrite setup_reflog_action() in C\n\nThis rewrites (the misnamed) setup_reflog_action() from shell to C. The\nnew version is called prepare_branch_to_be_rebased().\n\nA new command is added to rebase--helper.c, “checkout-base”, as well as\na new flag, “verbose”, to avoid silencing the output of the checkout\noperation called by checkout_base_commit().\n\nThe function `run_git_checkout()` will also be used in the next commit,\ntherefore its code is not part of `checkout_base_commit()`.\n\nThe shell version is then stripped in favour of a call to the helper.\n\nAs $GIT_REFLOG_ACTION is no longer set at the first call of\ncheckout_onto(), a call to comment_for_reflog() is added at the\nbeginning of this function.\n\nSigned-off-by: Alban Gruin <alban.gruin@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/1dadc600c1627ee2896689c697632cd6de657367"},{"sha":"6f58963dbe7c61c2a6e26c526a3b92a4c093500f","author":{"name":"Alban Gruin","email":"fae2f724377727e9132d1ecb1834263bfb64542c@gmail.com"},"message":"rebase -i: rewrite checkout_onto() in C\n\nThis rewrites checkout_onto() from shell to C.\n\nA new command (“checkout-onto”) is added to rebase--helper.c. The shell\nversion is then stripped.\n\nSigned-off-by: Alban Gruin <alban.gruin@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/6f58963dbe7c61c2a6e26c526a3b92a4c093500f"},{"sha":"18a3f648433fbcef56fcf06870a05558feae307a","author":{"name":"Alban Gruin","email":"fae2f724377727e9132d1ecb1834263bfb64542c@gmail.com"},"message":"sequencer: refactor append_todo_help() to write its message to a buffer\n\nThis refactors append_todo_help() to write its message to a buffer\ninstead of the todo-list.  This is needed for the rewrite of\ncomplete_action(), which will come after the next commit.\n\nAs rebase--helper still needs the file manipulation part of\nappend_todo_help(), it is extracted to a temporary function,\nappend_todo_help_to_file().  This function will go away after the\nrewrite of complete_action().\n\nSigned-off-by: Alban Gruin <alban.gruin@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/18a3f648433fbcef56fcf06870a05558feae307a"},{"sha":"377b62c9ac7d9f084954bb562d0d81ba790e2020","author":{"name":"Alban Gruin","email":"fae2f724377727e9132d1ecb1834263bfb64542c@gmail.com"},"message":"sequencer: change the way skip_unnecessary_picks() returns its result\n\nInstead of skip_unnecessary_picks() printing its result to stdout, it\nreturns it into a struct object_id, as the rewrite of complete_action()\n(to come in the next commit) will need it.\n\nrebase--helper then is modified to fit this change.\n\nSigned-off-by: Alban Gruin <alban.gruin@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/377b62c9ac7d9f084954bb562d0d81ba790e2020"},{"sha":"90718cebec4a5c4bd451fb6c904a8b3ea42b4a3f","author":{"name":"Alban Gruin","email":"fae2f724377727e9132d1ecb1834263bfb64542c@gmail.com"},"message":"t3404: todo list with commented-out commands only aborts\n\nIf the todo list generated by `--make-script` is empty,\ncomplete_action() writes a noop, but if it has only commented-out\ncommands, it will abort with the message \"Nothing to do\", and does not\nlaunch the editor.  This adds a new test to ensure that\ncomplete_action() behaves this way.\n\nSigned-off-by: Alban Gruin <alban.gruin@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/90718cebec4a5c4bd451fb6c904a8b3ea42b4a3f"},{"sha":"eec01907477968db09b2506ca0bf13ed2364e004","author":{"name":"Alban Gruin","email":"fae2f724377727e9132d1ecb1834263bfb64542c@gmail.com"},"message":"rebase -i: rewrite complete_action() in C\n\nThis rewrites complete_action() from shell to C.\n\nA new mode is added to rebase--helper (`--complete-action`), as well as\na new flag (`--autosquash`).\n\nFinally, complete_action() is stripped from git-rebase--interactive.sh.\n\nThe original complete_action() would return the code 2 when the todo\nlist contained no actions.  This was a special case for rebase -i and\n-p; git-rebase.sh would then apply the autostash, delete the state\ndirectory, and die with the message \"Nothing to do\".  This cleanup is\nrewritten in C instead of returning 2.  As rebase -i no longer returns\n2, the comment describing this behaviour in git-rebase.sh is updated to\nreflect this change.\n\nThe first check might seem useless as we write \"noop\" to the todo list\nif it is empty.  Actually, the todo list might contain commented\ncommands (ie. empty commits).  In this case, complete_action() won’t\nwrite \"noop\", and will abort without starting the editor.\n\nSigned-off-by: Alban Gruin <alban.gruin@gmail.com>\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":true,"url":"https://api.github.com/repos/git/git/commits/eec01907477968db09b2506ca0bf13ed2364e004"}]}
{"actor":{"display_login":"gitster"}}