{"push_id":818116033,"size":142,"distinct_size":0,"ref":"refs/heads/jk/dumpstat","head":"27aabae9e49950d5a7b06011b139a97cdd725a80","before":"d6b04d74c9408ecbf8d559c6b7081505ec06cd1b","commits":[{"sha":"fb70a06da2f10e8b3255abd76cd6ec1926bd9a40","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: fix an off-by-one non-bug\n\nWhen ac49f5ca (rerere \"remaining\", 2011-02-16) split out a new\nhelper function check_one_conflict() out of find_conflict()\nfunction, so that the latter will use the returned value from the\nnew helper to update the loop control variable that is an index into\nactive_cache[], the new variable incremented the index by one too\nmany when it found a path with only stage #1 entry at the very end\nof active_cache[].\n\nThis \"strange\" return value does not have any effect on the loop\ncontrol of two callers of this function, as they all notice that\nactive_nr+2 is larger than active_nr just like active_nr+1 is, but\nnevertheless it puzzles the readers when they are trying to figure\nout what the function is trying to do.\n\nIn fact, there is no need to do an early return.  The code that\nfollows after skipping the stage #1 entry is fully prepared to\nhandle a case where the entry is at the very end of active_cache[].\n\nHelp future readers from unnecessary confusion by dropping an early\nreturn.  We skip the stage #1 entry, and if there are stage #2 and\nstage #3 entries for the same path, we diagnose the path as\nTHREE_STAGED (otherwise we say PUNTED), and then we skip all entries\nfor the same path.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/fb70a06da2f10e8b3255abd76cd6ec1926bd9a40"},{"sha":"5eda906b2873c986fa61406dafb6acd99e70d540","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: handle conflicts with multiple stage #1 entries\n\nA conflicted index can have multiple stage #1 entries when dealing\nwith a criss-cross merge and using the \"resolve\" merge strategy.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/5eda906b2873c986fa61406dafb6acd99e70d540"},{"sha":"8d9b5a4ada8b8e187af7dbdc7bc24f6ed774df80","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: plug conflict ID leaks\n\nThe merge_rr string list stores the conflict ID (a hexadecimal\nstring that is used to index into $GIT_DIR/rr-cache) in the .util\nfield of its elements, and when do_plain_rerere() resolves a\nconflict, the field is cleared.  Also, when rerere_forget()\nrecomputes the conflict ID to updates the preimage file, the\nconflict ID for the path is updated.\n\nWe forgot to free the existing conflict ID when we did these two\noperations.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/8d9b5a4ada8b8e187af7dbdc7bc24f6ed774df80"},{"sha":"f5800f6ad8b8cbf41a252f7ca0ae465217174c60","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: lift PATH_MAX limitation\n\nThe MERGE_RR file records a collection of NUL-terminated entries,\neach of which consists of\n\n - a hash that identifies the conflict\n - a HT\n - the pathname\n\nWe used to read this piece-by-piece, and worse yet, read the\npathname part a byte at a time into a fixed buffer of size PATH_MAX.\n\nInstead, read a whole entry using strbuf_getwholeline() and parse\nout the fields.  This way, we issue fewer read(2) calls and more\nimportantly we do not have to limit the pathname to PATH_MAX.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/f5800f6ad8b8cbf41a252f7ca0ae465217174c60"},{"sha":"e2cb6a950b4617edc3d07b372063b624b2b5c420","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: write out each record of MERGE_RR in one go\n\nInstead of writing the hash for a conflict, a HT, and the path\nwith three separate write_in_full() calls, format them into a\nsingle record into a strbuf and write it out in one go.\n\nAs a more recent \"rerere remaining\" codepath abuses the .util field\nof the merge_rr data to store a sentinel token, make sure that\ncodepath does not call into this function (of course, \"remaining\" is\na read-only operation and currently does not call it).\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/e2cb6a950b4617edc3d07b372063b624b2b5c420"},{"sha":"a14c7ab8f58f3b2aea99e65a74c9f9ab4f955a40","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: report autoupdated paths only after actually updating them\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/a14c7ab8f58f3b2aea99e65a74c9f9ab4f955a40"},{"sha":"67711cdc399203ec1d70cde2c3cd71e37e43da70","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: drop want_sp parameter from is_cmarker()\n\nAs the nature of the conflict marker line determines if there should\nbe a SP and label after it, the caller shouldn't have to pass the\nparameter redundantly.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/67711cdc399203ec1d70cde2c3cd71e37e43da70"},{"sha":"74444d4ec4c23d254040de7b2637660b7f141110","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: stop looping unnecessarily\n\nhandle_cache() loops 3 times starting from an index entry that is\nunmerged, while ignoring an entry for a path that is different from\nwhat we are looking for.\n\nAs the index is sorted, once we see a different path, we know we saw\nall stages for the path we are interested in.  Just loop while we\nsee the same path and then break, instead of continuing for 3 times.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/74444d4ec4c23d254040de7b2637660b7f141110"},{"sha":"7d4053b69b37927c0ccd98eac41f32707227eca0","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: do not leak mmfile[] for a path with multiple stage #1 entries\n\nA conflicted index can have multiple stage #1 entries when dealing\nwith a criss-cross merge and using the \"resolve\" merge strategy.\n\nPlug the leak by reading only the first one of the same stage\nentries.\n\nStrictly speaking, this fix does change the semantics, in that we\nused to use the last stage #1 entry as the common ancestor when\ndoing the plain-vanilla three-way merge, but with the leak fix, we\nwill use the first stage #1 entry.  But it is not a grave backward\ncompatibility breakage.  Either way, we are arbitrarily picking one\nof multiple stage #1 entries and using it, ignoring others, and\nthere is no meaning in the ordering of these stage #1 entries.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/7d4053b69b37927c0ccd98eac41f32707227eca0"},{"sha":"a96847cc1691840bd95cc56549d7c00b35f6d5a0","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: explain the rerere I/O abstraction\n\nExplain the internals of rerere as in-code comments.\n\nThis one covers our thin I/O abstraction to read from either\na file or a memory while optionally writing out to a file.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/a96847cc1691840bd95cc56549d7c00b35f6d5a0"},{"sha":"d3c2749def9563798cea3486f3793ad36d9c1030","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: fix benign off-by-one non-bug and clarify code\n\nrerere_io_putconflict() wants to use a limited fixed-sized buf[] on\nstack repeatedly to formulate a longer string, but its implementation\nis doubly confusing:\n\n * When it knows that the whole thing fits in buf[], it wants to\n   fill early part of buf[] with conflict marker characters,\n   followed by a LF and a NUL.  It miscounts the size of the buffer\n   by 1 and does not use the last byte of buf[].\n\n * When it needs to show only the early part of a long conflict\n   marker string (because the whole thing does not fit in buf[]), it\n   adjusts the number of bytes shown in the current round in a\n   strange-looking way.  It makes sure that this round does not emit\n   all bytes and leaves at least one byte to the next round, so that\n   \"it all fits\" case will pick up the rest and show the terminating\n   LF.  While this is correct, one needs to stop and think for a\n   while to realize why it is correct without an explanation.\n\nFix the benign off-by-one, and add comments to explain the\nstrange-looking size adjustment.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/d3c2749def9563798cea3486f3793ad36d9c1030"},{"sha":"4b68c2a0877b18d1fe591dd7aee55aa1158fada0","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: explain MERGE_RR management helpers\n\nExplain the internals of rerere as in-code comments, while\nsprinkling \"NEEDSWORK\" comment to highlight iffy bits and\nquestionable assumptions.\n\nThis one covers the \"$GIT_DIR/MERGE_RR\" file and in-core merge_rr\nthat are used to keep track of the status of \"rerere\" session in\nprogress.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/4b68c2a0877b18d1fe591dd7aee55aa1158fada0"},{"sha":"cc899eca552a9b93788e6bca34aa0e4d86b251a0","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: explain the primary codepath\n\nExplain the internals of rerere as in-code comments, while\nsprinkling \"NEEDSWORK\" comment to highlight iffy bits and\nquestionable assumptions.\n\nThis one covers the codepath reached from rerere(), the primary\ninterface to the subsystem.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/cc899eca552a9b93788e6bca34aa0e4d86b251a0"},{"sha":"963ec003560765bde56a880d89c75056ebe9e990","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: explain \"rerere forget\" codepath\n\nExplain the internals of rerere as in-code comments, while\nsprinkling \"NEEDSWORK\" comment to highlight iffy bits and\nquestionable assumptions.\n\nThis covers the codepath that implements \"rerere forget\".\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/963ec003560765bde56a880d89c75056ebe9e990"},{"sha":"e828de826bd0b852337b9625354c7c73d8de20c0","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: explain the remainder\n\nExplain the internals of rerere as in-code comments, while\nsprinkling \"NEEDSWORK\" comment to highlight iffy bits and\nquestionable assumptions.\n\nThis covers the codepath that implements \"rerere gc\" and \"rerere\nclear\".\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/e828de826bd0b852337b9625354c7c73d8de20c0"},{"sha":"8e7768b2de8bfdf82cde565d2f42e8d7f91e74e0","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: refactor \"replay\" part of do_plain_rerere()\n\nExtract the body of a loop that attempts to replay recorded\nresolution for each conflicted path into a helper function, not\nbecause I want to call it from multiple places later, but because\nthe logic has become too deeply nested and hard to read.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/8e7768b2de8bfdf82cde565d2f42e8d7f91e74e0"},{"sha":"c7a25d3790bdbc486362084238db5a773f728570","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: further de-dent do_plain_rerere()\n\nIt's just easier to follow this way.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/c7a25d3790bdbc486362084238db5a773f728570"},{"sha":"925d73c4217388838e36bfed85553132c458c7d0","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: further clarify do_rerere_one_path()\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/925d73c4217388838e36bfed85553132c458c7d0"},{"sha":"18bb99342fdb4b612ae45be3fef084ceebd498a0","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: call conflict-ids IDs\n\nMost places we call conflict IDs \"name\" and some others we call them\n\"hex\"; update all of them to \"id\".\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/18bb99342fdb4b612ae45be3fef084ceebd498a0"},{"sha":"1d51eced103f1c3e36beb6c1e01a413660910a50","author":{"email":"a6723cc3f76163bf7adb636a73ac3b0ceb3e6b9b@pobox.com","name":"Junio C Hamano"},"message":"rerere: use \"struct rerere_id\" instead of \"char *\" for conflict ID\n\nThis gives a thin abstraction between the conflict ID that is a hash\nvalue obtained by inspecting the conflicts and the name of the\ndirectory under $GIT_DIR/rr-cache/, in which the previous resolution\nis recorded to be replayed.  The plan is to make sure that the\npresence of the directory does not imply the presense of a previous\nresolution and vice-versa, and later allow us to have more than one\npair of <preimage, postimage> for a given conflict ID.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>","distinct":false,"url":"https://api.github.com/repos/peff/git/commits/1d51eced103f1c3e36beb6c1e01a413660910a50"}]}