1. 20 9月, 2014 10 次提交
  2. 30 8月, 2014 1 次提交
  3. 29 8月, 2014 3 次提交
  4. 27 8月, 2014 3 次提交
  5. 26 8月, 2014 6 次提交
    • J
      checkout -m: attempt merge when deletion of path was staged · 6a143aa2
      Jonathan Nieder 提交于
      twoway_merge() is missing an o->gently check in the case where a file
      that needs to be modified is missing from the index but present in the
      old and new trees.  As a result, in this case 'git checkout -m' errors
      out instead of trying to perform a merge.
      
      Fix it by checking o->gently.  While at it, inline the o->gently check
      into reject_merge to prevent future call sites from making the same
      mistake.
      
      Noticed by code inspection.  The test for the motivating case was
      added by JC.
      Signed-off-by: NJonathan Nieder <jrnieder@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      6a143aa2
    • J
      Merge git://github.com/git-l10n/git-po · c285171d
      Junio C Hamano 提交于
      * git://github.com/git-l10n/git-po:
        l10n: de.po: improve message when switching branches
        l10n: de.po: fix typo
        po/TEAMS: Add Catalan team
        l10n: Add Catalan translation
        l10n: fr.po (2257t) update for version 2.1.0
        l10n: sv.po: Update Swedish translation (2257t0f0u)
        l10n: vi.po (2257t): Update translation
        l10n: Updated Bulgarian translation of git (2257t,0f,0u)
        l10n: zh_CN: translations for git v2.1.0-rc0
        l10n: git.pot: v2.1.0 round 1 (38 new, 9 removed)
        l10n: Updated Bulgarian translation of git (2247t,0f,0u)
        l10n: Updated Bulgarian translation of git (2228t,0f,0u)
        l10n: Fix more typos in the Swedish translations
      c285171d
    • J
      git-prompt: do not look for refs/stash in $GIT_DIR · 0fa7f016
      Jeff King 提交于
      Since dd0b72cb (bash prompt: use bash builtins to check stash
      state, 2011-04-01), git-prompt checks whether we have a
      stash by looking for $GIT_DIR/refs/stash. Generally external
      programs should never do this, because they would miss
      packed-refs.
      
      That commit claims that packed-refs does not pack
      refs/stash, but that is not quite true. It does pack the
      ref, but due to a bug, fails to prune the ref. When we fix
      that bug, we would want to be doing the right thing here.
      Signed-off-by: NJeff King <peff@peff.net>
      Reviewed-by: NMichael Haggerty <mhagger@alum.mit.edu>
      Reviewed-by: NRonnie Sahlberg <sahlberg@google.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0fa7f016
    • J
      fast-import: fix buffer overflow in dump_tags · c2527859
      Jeff King 提交于
      When creating a new annotated tag, we sprintf the refname
      into a static-sized buffer. If we have an absurdly long
      tagname, like:
      
        git init repo &&
        cd repo &&
        git commit --allow-empty -m foo &&
        git tag -m message mytag &&
        git fast-export mytag |
        perl -lpe '/^tag/ and s/mytag/"a" x 8192/e' |
        git fast-import <input
      
      we'll overflow the buffer. We can fix it by using a strbuf.
      Signed-off-by: NJeff King <peff@peff.net>
      Reviewed-by: NMichael Haggerty <mhagger@alum.mit.edu>
      Reviewed-by: NRonnie Sahlberg <sahlberg@google.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c2527859
    • J
      fast-import: clean up pack_data pointer in end_packfile · 3c078b9c
      Jeff King 提交于
      We have a global pointer pack_data pointing to the current
      pack we have open. Inside end_packfile we have two new
      pointers, old_p and new_p. The latter points to pack_data,
      and the former points to the new "installed" version of the
      packfile we get when we hand the file off to the regular
      sha1_file machinery. When then free old_p.
      
      Presumably the extra old_p pointer was there so that we
      could overwrite pack_data with new_p and still free old_p,
      but we don't do that. We just leave pack_data pointing to
      bogus memory, and don't overwrite it until we call
      start_packfile again (if ever).
      
      This can cause problems for our die routine, which calls
      end_packfile to clean things up. If we die at the wrong
      moment, we can end up looking at invalid memory in
      pack_data left after the last end_packfile().
      
      Instead, let's make sure we set pack_data to NULL after we
      free it, and make calling endfile() again with a NULL
      pack_data a noop (there is nothing to end).
      
      We can further make things less confusing by dropping old_p
      entirely, and moving new_p closer to its point of use.
      Signed-off-by: NJeff King <peff@peff.net>
      Reviewed-by: NRonnie Sahlberg <sahlberg@google.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      3c078b9c
    • J
      pack-refs: prune top-level refs like "refs/foo" · afd11d3e
      Jeff King 提交于
      After we have packed all refs, we prune any loose refs that
      correspond to what we packed. We do so by first taking a
      lock with lock_ref_sha1, and then deleting the loose ref
      file.
      
      However, lock_ref_sha1 will refuse to take a lock on any
      refs that exist at the top-level of the "refs/" directory,
      and we skip pruning the ref.  This is almost certainly not
      what we want to happen here. The criteria to be pruned
      should not differ from that to be packed; if a ref makes it
      to prune_ref, it's because we want it both packed and
      pruned (if there are refs you do not want to be packed, they
      should be omitted much earlier by pack_ref_is_possible,
      which we do in this case if --all is not given).
      
      We can fix this by switching to lock_any_ref_for_update.
      This behaves exactly the same with the exception of this
      top-level check.
      Signed-off-by: NJeff King <peff@peff.net>
      Reviewed-by: NMichael Haggerty <mhagger@alum.mit.edu>
      Reviewed-by: NRonnie Sahlberg <sahlberg@google.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      afd11d3e
  6. 24 8月, 2014 2 次提交
  7. 23 8月, 2014 2 次提交
  8. 21 8月, 2014 1 次提交
    • J
      intersect_paths: respect mode in git's tree-sort · e09867f0
      Jeff King 提交于
      When we do a combined diff, we individually diff against
      each parent, and then use intersect_paths to do a parallel
      walk through the sorted results and come up with a final
      list of interesting paths.
      
      The sort order here is that returned by the diffs, which
      means it is in git's tree-order which sorts sub-trees as if
      their paths have "/" at the end. When we do our parallel
      walk, we need to use a comparison function which provides
      the same order.
      
      Since 8518ff8f (combine-diff: optimize combine_diff_path sets
      intersection, 2014-01-20), we use a simple strcmp to
      compare the pathnames, and get this wrong. It's somewhat
      hard to trigger because normally a diff does not produce
      tree entries at all, and therefore the sort order is the
      same as a strcmp. However, if the "-t" option is used with
      the diff, then we will produce diff_filepairs for both trees
      and files.
      
      We can use base_name_compare to do the comparison, just as
      the tree-diff code does. Even though what we have are not
      technically base names (they are full paths within the
      tree), the end result is the same (we do not care about
      interior slashes at all, only about the final character).
      
      However, since we do not have the length of each path
      stored, we take a slight shortcut: if neither of the entries
      is a sub-tree then the comparison is equivalent to a strcmp.
      This lets us skip the extra strlen calls in the common case
      without having to reimplement base_name_compare from
      scratch.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      e09867f0
  9. 20 8月, 2014 1 次提交
  10. 16 8月, 2014 1 次提交
  11. 14 8月, 2014 3 次提交
    • J
      tests: fix negated test_i18ngrep calls · 41ca19b6
      Johannes Sixt 提交于
      The helper function test_i18ngrep pretends that it found the expected
      results when it is running under GETTEXT_POISON. For this reason, it must
      not be used negated like so
      
         ! test_i18ngrep foo bar
      
      because the test case would fail under GETTEXT_POISON. The function offers
      a special syntax to test that a pattern is *not* found:
      
         test_i18ngrep ! foo bar
      
      Convert incorrect uses to this syntax.
      Signed-off-by: NJohannes Sixt <j6t@kdbg.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      41ca19b6
    • J
      unpack-trees: use 'cuddled' style for if-else cascade · 6c1db1b3
      Jonathan Nieder 提交于
      Match the predominant style in git by following K&R style for if/else
      cascades.  Documentation/CodingStyle from linux.git explains:
      
        Note that the closing brace is empty on a line of its own, _except_ in
        the cases where it is followed by a continuation of the same statement,
        ie a "while" in a do-statement or an "else" in an if-statement, like
        this:
      
      	if (x == y) {
      		..
      	} else if (x > y) {
      		...
      	} else {
      		....
      	}
      
        Rationale: K&R.
      
        Also, note that this brace-placement also minimizes the number of empty
        (or almost empty) lines, without any loss of readability.
      Signed-off-by: NJonathan Nieder <jrnieder@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      6c1db1b3
    • S
      unpack-trees: simplify 'all other failures' case · 0ecd180a
      Stefan Beller 提交于
      In the 'if (current)' block of twoway_merge, we handle the boring
      errors by checking if the entry from the old tree, current index, and
      new tree are present, to get a pathname for the error message from one
      of them:
      
      	if (oldtree)
      		return o->gently ? -1 : reject_merge(oldtree, o);
      	if (current)
      		return o->gently ? -1 : reject_merge(current, o);
      	if (newtree)
      		return o->gently ? -1 : reject_merge(newtree, o);
      	return -1;
      
      Since this is guarded by 'if (current)', the second test is guaranteed
      to succeed.  Moreover, any of the three entries, if present, would
      have the same path because there is no rename detection in this code
      path.   Even if some day in the future the entries' paths differ, the
      'current' path used in the index and worktree would presumably be the
      most recognizable for the end user.
      
      Simplify by just using 'current'.
      
      Noticed by coverity, Id:290002
      Signed-off-by: NStefan Beller <stefanbeller@gmail.com>
      Improved-by: NJunio C Hamano <gitster@pobox.com>
      Signed-off-by: NJonathan Nieder <jrnieder@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0ecd180a
  12. 13 8月, 2014 1 次提交
    • J
      pack-objects: turn off bitmaps when we see --shallow lines · f7f91086
      Jeff King 提交于
      Reachability bitmaps do not work with shallow operations,
      because they cache a view of the object reachability that
      represents the true objects. Whereas a shallow repository
      (or a shallow operation in a repository) is inherently
      cutting off the object graph with a graft.
      
      We explicitly disallow the use of bitmaps in shallow
      repositories by checking is_repository_shallow(), and we
      should continue to do that. However, we also want to
      disallow bitmaps when we are serving a fetch to a shallow
      client, since we momentarily take on their grafted view of
      the world.
      
      It used to be enough to call is_repository_shallow at the
      start of pack-objects.  Upload-pack wrote the other side's
      shallow state to a temporary file and pointed the whole
      pack-objects process at this state with "git --shallow-file",
      and from the perspective of pack-objects, we really were
      in a shallow repo.  But since b790e0f6 (upload-pack: send
      shallow info over stdin to pack-objects, 2014-03-11), we do
      it differently: we send --shallow lines to pack-objects over
      stdin, and it registers them itself.
      
      This means that our is_repository_shallow check is way too
      early (we have not been told about the shallowness yet), and
      that it is insufficient (calling is_repository_shallow is
      not enough, as the shallow grafts we register do not change
      its return value). Instead, we can just turn off bitmaps
      explicitly when we see these lines.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      f7f91086
  13. 11 8月, 2014 2 次提交
  14. 09 8月, 2014 1 次提交
  15. 08 8月, 2014 3 次提交