1. 05 4月, 2007 1 次提交
  2. 04 4月, 2007 15 次提交
  3. 03 4月, 2007 1 次提交
  4. 01 4月, 2007 15 次提交
  5. 31 3月, 2007 6 次提交
    • J
      contrib/workdir: add a simple script to create a working directory · 4f01748d
      Julian Phillips 提交于
      Add a simple script to create a working directory that uses symlinks
      to point at an exisiting repository.  This allows having different
      branches in different working directories but all from the same
      repository.
      
      Based on a description from Junio of how he creates multiple working
      directories[1].  With the following caveat:
      
      "This risks confusion for an uninitiated if you update a ref that
      is checked out in another working tree, but modulo that caveat
      it works reasonably well."
      
      [1] http://article.gmane.org/gmane.comp.version-control.git/41513/Signed-off-by: NJulian Phillips <julian@quantumfyre.co.uk>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      4f01748d
    • A
      Reimplement emailing part of hooks--update in contrib/hooks/post-receive-email · 4557e0de
      Andy Parkins 提交于
      The update hook is no longer the correct place to generate emails; there
      is now the hooks/post-receive script which is run automatically after a
      ref has been updated.
      
      This patch is to make use of that new location, and to address some
      faults in the old update hook.
      
      The primary problem in the conversion was that in the update hook, the
      ref has not actually been changed, but is about to be.  In the
      post-receive hook the ref has already been updated.  That meant that
      where we previously had lines like:
      
       git rev-list --not --all
      
      would now give the wrong list because "--all" in the post-receive hook
      includes the ref that we are making the email for.  This made it more
      difficult to show only the new revisions added by this update.
      
      The solution is not pretty; however it does work and doesn't need any
      changes to git-rev-list itself.  It also fixes (more accurately: reduces
      the likelihood of) a nasty race when another update occurs while this
      script is running.  The solution, in short, looks like this (see the
      source code for a longer explanation)
      
       git rev-parse --not --all | grep -v $(git rev-parse $refname) |
       git rev-list --pretty --stdin $oldrev..$newrev
      
      This uses git-rev-parse followed by grep to filter out the revision of
      the ref in question before it gets to rev-list and inhibits the output
      of itself.  By using $(git rev-parse $revname) rather than $newrev as the
      filter, it also takes care of the situation where another update to the
      same ref has been made since $refname was $newrev.
      
      The second problem that is addressed is that of tags inhibiting the
      correct output of an update email.  Consider this, with somebranch and
      sometag pointing at the same revision:
      
       git push origin somebranch
       git push origin sometag
      
      That would work fine; the push of the branch would generate an email
      containing all the new commits introduced by the update, then the push
      of the tag would generate the shortlog formatted tag email.  Now
      consider:
      
       git push origin sometag
       git push origin somebranch
      
      When some branch comes to run its "--not --all" line, it will find
      sometag, and filter those commits from the email - leaving nothing.
      That meant that those commits would not show (in full) on any email.
      The fix is to not use "--all", and instead use "--branches" in the
      git-rev-parse command.
      
      Other changes
       * Lose the monstrous one-giant-script layout and put things in easy to
         digest functions.  This makes it much easier to find the place you
         need to change if you wanted to customise the output.  I've also
         tried to write more verbose comments for the same reason.  The hook
         script is big, mainly because of all the different cases that it has
         to handle, so being easy to navigate is important.
       * All uses of "git-command" changed to "git command", to cope better
         if a user decided not to install all the hard links to git;
       * Cleaned up some of the English in the email
       * The fact that the receive hook makes the ref available also allows me
         to use Shawn Pearce's fantastic suggestion that an annotated tag can
         be parsed with git-for-each-ref.  This removes the potentially
         non-portable use of "<<<" heredocs and the nasty messing around with
         "date" to convert numbers of seconds UTC to a real date
       * Deletions are now caught and notified (briefly)
       * To help with debugging, I've retained the command line mode from the
         update hook; but made it so that the output is not emailed, it's just
         printed to the screen.  This could then be redirected if the user
         wanted
       * Removed the "Hello" from the beginning of the email - it's just
         noise, and no one seriously has their day made happier by "friendly"
         programs
       * The fact that it doesn't rely on repository state as an indicator any
         more means that it's far more stable in its output; hopefully the
         same arguments will always generate the same email - even if the
         repository changes in the future.  This means you can easily recreate
         an email should you want to.
       * Included Jim Meyering's envelope sender option for the sendmail call
       * The hook is now so big that it was inappropriate to copy it
         to every repository by keeping it in the templates directory.
         Instead, I've put a comment saying to look in contrib/hooks, and
         given an example of calling the script from that template hook.  The
         advantage of calling the script residing at some fixed location is
         that if a future package of git included a bug fixed version of the
         script, that would be picked up automatically, and the user would not
         have to notice and manually copy the new hook to every repository
         that uses it.
      Signed-off-by: NAndy Parkins <andyparkins@gmail.com>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      4557e0de
    • E
      git-svn: avoid respewing similar error messages for missing paths · a6a15a99
      Eric Wong 提交于
      We ignore errors if the path we're tracking did not exist for
      a particular revision range, but we still print out warnings
      telling the user about that.
      
      As pointed out by Seth Falcon, this amounts to a lot of warnings
      that could confuse and worry users.  I'm not entirely comfortable
      completely silencing the warnings, but showing one warning per
      path that we track should be reasonable.
      Signed-off-by: NEric Wong <normalperson@yhbt.net>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      a6a15a99
    • T
      Rename warn() to warning() to fix symbol conflicts on BSD and Mac OS · 46efd2d9
      Theodore Ts'o 提交于
      This fixes a problem reported by Randal Schwartz:
      
      >I finally tracked down all the (albeit inconsequential) errors I was getting
      >on both OpenBSD and OSX.  It's the warn() function in usage.c.  There's
      >warn(3) in BSD-style distros.  It'd take a "great rename" to change it, but if
      >someone with better C skills than I have could do that, my linker and I would
      >appreciate it.
      
      It was annoying to me, too, when I was doing some mergetool testing on
      Mac OS X, so here's a fix.
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      Cc: "Randal L. Schwartz" <merlyn@stonehenge.com>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      46efd2d9
    • D
      git-mailinfo fixes for patch munging · 86747c13
      Don Zickus 提交于
      Don't translate the patch to UTF-8, instead preserve the data as
      is.  This also reverts a test case that was included in the
      original patch series.
      
      Also allow overwriting the authorship and title information we
      gather from RFC2822 mail headers with additional in-body
      headers, which was pointed out by Linus.
      Signed-off-by: NDon Zickus <dzickus@redhat.com>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      86747c13
    • J
      gitweb: Support comparing blobs (files) with different names · 5ae917ac
      Jakub Narebski 提交于
      Fix the bug that caused "blobdiff" view called with new style URI
      for a rename with change diff to be show as new (added) file diff.
      
      New style URI for "blobdiff" for rename means with $hash_base ('hb') and
      $hash_parent_base ('hpb') paramaters denoting tree-ish (usually commit)
      of a blobs being compared, together with both $file_name ('f') and
      $file_parent ('fp') parameters.
      
      It is done by adding $file_parent ('fp') to the path limiter, meaning
      that diff command becomes:
      
      	git diff-tree [options] hpb hb -- fp f
      
      Other option would be finding hash of a blob using git_get_hash_by_path
      subroutine and comparing blobs using git-diff, or using extended SHA-1
      syntax and compare blobs using git-diff:
      
      	git diff [options] hpb:fp hp:f
      Signed-off-by: NJakub Narebski <jnareb@gmail.com>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      5ae917ac
  6. 30 3月, 2007 2 次提交