1. 21 12月, 2005 1 次提交
    • J
      Racy GIT (part #2) · 407c8eb0
      Junio C Hamano 提交于
      The previous round caught the most trivial case well, but broke
      down once index file is updated again.  Smudge problematic
      entries (they should be very few if any under normal interactive
      workflow) before writing a new index file out.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      407c8eb0
  2. 20 12月, 2005 11 次提交
    • J
      Racy GIT · 29e4d363
      Junio C Hamano 提交于
      This fixes the longstanding "Racy GIT" problem, which was pretty
      much there from the beginning of time, but was first
      demonstrated by Pasky in this message on October 24, 2005:
      
          http://marc.theaimsgroup.com/?l=git&m=113014629716878
      
      If you run the following sequence of commands:
      
      	echo frotz >infocom
              git update-index --add infocom
              echo xyzzy >infocom
      
      so that the second update to file "infocom" does not change
      st_mtime, what is recorded as the stat information for the cache
      entry "infocom" exactly matches what is on the filesystem
      (owner, group, inum, mtime, ctime, mode, length).  After this
      sequence, we incorrectly think "infocom" file still has string
      "frotz" in it, and get really confused.  E.g. git-diff-files
      would say there is no change, git-update-index --refresh would
      not even look at the filesystem to correct the situation.
      
      Some ways of working around this issue were already suggested by
      Linus in the same thread on the same day, including waiting
      until the next second before returning from update-index if a
      cache entry written out has the current timestamp, but that
      means we can make at most one commit per second, and given that
      the e-mail patch workflow used by Linus needs to process at
      least 5 commits per second, it is not an acceptable solution.
      Linus notes that git-apply is primarily used to update the index
      while processing e-mailed patches, which is true, and
      git-apply's up-to-date check is fooled by the same problem but
      luckily in the other direction, so it is not really a big issue,
      but still it is disturbing.
      
      The function ce_match_stat() is called to bypass the comparison
      against filesystem data when the stat data recorded in the cache
      entry matches what stat() returns from the filesystem.  This
      patch tackles the problem by changing it to actually go to the
      filesystem data for cache entries that have the same mtime as
      the index file itself.  This works as long as the index file and
      working tree files are on the filesystems that share the same
      monotonic clock.  Files on network mounted filesystems sometimes
      get skewed timestamps compared to "date" output, but as long as
      working tree files' timestamps are skewed the same way as the
      index file's, this approach still works.  The only problematic
      files are the ones that have the same timestamp as the index
      file's, because two file updates that sandwitch the index file
      update must happen within the same second to trigger the
      problem.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      29e4d363
    • J
      format-patch: make sure header and body are separated. · a5c21d6e
      Junio C Hamano 提交于
      Since log message in a commit object is defined to be binary
      blob, it could be something without an empty line between the
      title line and the body text.  Be careful to format such into
      a form suitable for e-mail submission.  There must be an empty
      line between the headers and the body.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      a5c21d6e
    • J
      diff --abbrev: document --abbrev=<n> form. · 913419fc
      Junio C Hamano 提交于
      It was implemented there but was not advertised.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      913419fc
    • J
      diff: --abbrev option · 47dd0d59
      Junio C Hamano 提交于
      When I show transcripts to explain how something works, I often
      find myself hand-editing the diff-raw output to shorten various
      object names in the output.
      
      This adds --abbrev option to the diff family, which shortens
      diff-raw output and diff-tree commit id headers.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      47dd0d59
    • J
      xread/xwrite: do not worry about EINTR at calling sites. · 1c15afb9
      Junio C Hamano 提交于
      We had errno==EINTR check after read(2)/write(2) sprinkled all
      over the places, always doing continue.  Consolidate them into
      xread()/xwrite() wrapper routines.
      
      Credits for suggestion goes to HPA -- bugs are mine.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      1c15afb9
    • J
      tests: make scripts executable · 1fdfd05d
      Junio C Hamano 提交于
      just for consistency.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      1fdfd05d
    • J
      Remove "octopus". · e32faa8a
      Junio C Hamano 提交于
      We still advertise "git resolve" as a standalone command, but never
      "git octopus", so nobody should be using it and it is safe to
      retire it.  The functionality is still available as a strategy
      backend.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      e32faa8a
    • J
      Remove unused cmd-rename.sh · ba922cce
      Junio C Hamano 提交于
      This file is a remnant from the big command rename which happened
      quite some time ago.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ba922cce
    • J
      Remove generated files */*.py[co] · d89056c2
      Junio C Hamano 提交于
      We missed ones in the compat/ subdirectory.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      d89056c2
    • J
      Documentation: stdout of update-hook is connected to /dev/null · 3aadad1b
      Junio C Hamano 提交于
      Mention that update-hook does not emit its stdout to the sender.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      3aadad1b
    • J
      rev-list --objects: fix object list without commit. · ef1cc2cc
      Junio C Hamano 提交于
      Earlier, "rev-list --objects <sha1>" for an object chain that
      does not have any commit failed with a usage message.  This
      fixes "send-pack remote $tag" where tag points at a non-commit
      (e.g. a blob).
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ef1cc2cc
  3. 19 12月, 2005 5 次提交
  4. 18 12月, 2005 7 次提交
    • J
      clone-pack: remove unused and undocumented --keep flag · 2247efb4
      Junio C Hamano 提交于
      While we are at it, give fully spelled --keep to fetch-pack.
      Also give --quiet in addition to -q to fetch-pack as well.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      2247efb4
    • J
      fetch-pack: -k option to keep downloaded pack. · ad897215
      Junio C Hamano 提交于
      Split out the functions that deal with the socketpair after
      finishing git protocol handshake to receive the packed data into
      a separate file, and use it in fetch-pack to keep/explode the
      received pack data.  We earlier had something like that on
      clone-pack side once, but the list discussion resulted in the
      decision that it makes sense to always keep the pack for
      clone-pack, so unpacking option is not enabled on the clone-pack
      side, but we later still could do so easily if we wanted to with
      this change.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ad897215
    • J
      Revert "get_sha1_basic(): corner case ambiguity fix" · c054d64e
      Junio C Hamano 提交于
      This reverts 6677c466 commit.
      
      The misguided disambiguation has been reverted, so there is no point
      testing that misfeature.
      c054d64e
    • J
      Revert "We do not like "HEAD" as a new branch name" · f7087e2e
      Junio C Hamano 提交于
      This reverts ee34518d commit.
      f7087e2e
    • J
      Revert "refs.c: off-by-one fix." · 8872f27b
      Junio C Hamano 提交于
      This reverts 06bf6ac4 commit.
      8872f27b
    • J
      Remove misguided branch disambiguation. · 011fbc7f
      Junio C Hamano 提交于
      This removes the misguided attempt to refuse processing a branch
      name xyzzy and insist it to be given as either heads/xyzzy or
      tags/xyzzy when a tag xyzzy exists.  There was no reason to do
      so --- the search order was predictable and well defined, so if
      the user says xyzzy we should have taken the tag xyzzy in such a
      case without complaining.
      
      This incidentally fixes another subtle bug related to this.  If
      such a duplicate branch/tag name happened to be a unique valid
      prefix of an existing commit object name (say, "beef"), we did
      not take the tag "beef" but after complaining used the commit
      object whose name started with beef.
      
      Another problem this fixes while introducing some confusion is
      that there is no longer a reason to forbid a branch name HEAD
      anymore.  In other words, now "git pull . ref1:HEAD" would work
      as expected, once we revert "We do not like HEAD branch" patch.
      It creates "HEAD" branch under ${GIT_DIR-.git}/refs/heads (or
      fast-forwards if already exists) using the tip of ref1 branch
      from the current repository, and merges it into the current
      branch.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      011fbc7f
    • J
      Documentation: HTTP needs update-server-info. · 80248b2e
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      80248b2e
  5. 17 12月, 2005 4 次提交
    • J
      Comment fixes. · 01385e27
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      01385e27
    • J
      Fix git-am --skip · 69224716
      Jan Harkes 提交于
      git-am --skip does not unpack the next patch and ends up reapplying the
      old patch, believing that it is the new patch in the sequence.
      
      If the old patch applied successfully it will commit it with the
      supposedly skipped log message and ends up dropping the following patch.
      If the patch did not apply the user is left with the conflict he tried
      to skip and has to unpack the next patch in the sequence by hand to get
      git-am back on track.
      
      By clearing the resume variable whenever skips bumps the sequence
      counter we correctly unpack the next patch. I also added another
      resume= in the case a patch file is missing from the sequence to
      avoid the same problem when a file in the sequence was removed.
      Signed-off-by: NJan Harkes <jaharkes@cs.cmu.edu>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      69224716
    • J
      Forbid pattern maching characters in refnames. · 68283999
      Junio C Hamano 提交于
      by marking '?', '*', and '[' as bad_ref_char().
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      68283999
    • J
      Examples of resetting. · 3ae854c3
      Junio C Hamano 提交于
      Morten Welinder says examples of resetting is really about
      recovering from botched commit/pulls.  I agree that pointers
      from commands that cause a reset to be needed in the first place
      would be very helpful.
      
      Also reset examples did not mention "pull/merge" cases.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      3ae854c3
  6. 16 12月, 2005 9 次提交
  7. 15 12月, 2005 3 次提交