1. 21 1月, 2008 5 次提交
    • G
      http-push and http-fetch: handle URLs without trailing / · 3057ded0
      Grégoire Barbier 提交于
      The URL to a repository http-push and http-fetch takes should
      have a trailing slash.  Instead of failing the request, add it
      ourselves before attempting such a request.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      3057ded0
    • J
      http-push: clarify the reason of error from the initial PROPFIND request · 325ce395
      Junio C Hamano 提交于
      The first thing http-push does is a PROPFIND to see if the other
      end supports locking.  The failure message we give is always
      reported as "no DAV locking support at the remote repository",
      regardless of the reason why we ended up not finding the locking
      support on the other end.
      
      This moves the code to report "no DAV locking support" down the
      codepath so that the message is issued only when we successfully
      get a response to PROPFIND and the other end say it does not
      support locking.  Other failures, such as connectivity glitches
      and credential mismatches, have their own error message issued
      and we will not issue "no DAV locking" error (we do not even
      know if the remote end supports it).
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      325ce395
    • G
      http-push: fail when info/refs exists and is already locked · 9bdbabad
      Grégoire Barbier 提交于
      Failing instead of silently not updating remote refs makes the things
      clearer for the user when trying to push on a repository while another
      person do (or while a dandling locks are waiting for a 10 minutes
      timeout).
      
      When silently not updating remote refs, the user does not even know
      that git has pushed the objects but leaved the refs as they were
      before (e.g. a new bunch of commits on branch "master" is uploaded,
      however the branch by itsel still points on the previous head commit).
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      9bdbabad
    • G
      http-push: fix webdav lock leak. · 9116de59
      Grégoire Barbier 提交于
      Releasing webdav lock even if push fails because of bad (or no)
      reference on command line.
      
      To reproduce the issue that this patch fixes, prepare a test repository
      availlable over http+webdav, say at http://myhost/myrepo.git/
      
      Then:
      
        $ git clone http://myhost/myrepo.git/
        $ cd myrepo
        $ git push http
        Fetching remote heads...
          refs/
          refs/heads/
          refs/tags/
        No refs in common and none specified; doing nothing.
        $ git push http
        Fetching remote heads...
          refs/
          refs/heads/
          refs/tags/
        No refs in common and none specified; doing nothing.
        $
      
      Finally, you look at the web server logs, and will find one LOCK query
      and no UNLOCK query, of course the second one will be in 423 return
      code instead of 200:
      
      1.2.3.4 - gb [19/Jan/2008:14:24:56 +0100] "LOCK /myrepo.git/info/refs HTTP/1.1" 200 465
      (...)
      1.2.3.4 - gb [19/Jan/2008:14:25:10 +0100] "LOCK /myrepo.git/info/refs HTTP/1.1" 423 363
      
      With this patch, there would have be two UNLOCKs in addition of the LOCKs
      
      From the user's point of view:
      
      - If you realize that you should have typed e.g. "git push http
        master" instead of "git push http", you will have to wait for 10
        minutes for the lock to expire by its own.
      
      - Furthermore, if somebody else is dumb enough to type "git push http"
        while you need to push "master" branch, then you'll need too to wait
        for 10 minutes too.
      Signed-off-by: NGr.ANigoire Barbier <gb@gbarbier.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      9116de59
    • M
      parse_commit_buffer: tighten checks while parsing · 0a617799
      Martin Koegler 提交于
      This tightens the parsing of a commit object in a couple of ways.
      
       - The "tree " header must end with a LF (earlier we did not
         check this condition).
      
       - Make sure parsing of timestamp on the "committer " header
         does not go beyond the buffer, even when (1) the "author "
         header does not end with a LF (this means that the commit
         object is malformed and lacks the committer information) or
         (2) the "committer " header does not have ">" that is the end
         of the e-mail address, or (3) the "committer " header does
         not end with a LF.
      
      We however still keep the existing behaviour to return a parsed
      commit object even when non-structural headers such as committer
      and author are malformed, so that tools that need to look at
      commits to clean up a history with such broken commits can still
      get at the structural data (i.e. the parents chain and the tree
      object).
      Signed-off-by: NMartin Koegler <mkoegler@auto.tuwien.ac.at>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0a617799
  2. 20 1月, 2008 2 次提交
  3. 19 1月, 2008 7 次提交
  4. 18 1月, 2008 6 次提交
    • J
      color unchanged lines as "plain" in "diff --color-words" · 472ca780
      Jeff King 提交于
      These were mistakenly being colored in "meta" color.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      472ca780
    • J
      autoconf: Add checking for unsetenv function · bfa8fccf
      Jakub Narebski 提交于
      Update configure.ac (and config.mak.in) by adding test for unsetenv
      (NO_UNSETENV).  Add comment about NO_UNSETENV to Makefile header, as
      original commit 731043fd adding compat/unsetenv.c didn't do that.
      Signed-off-by: NJakub Narebski <jnareb@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      bfa8fccf
    • T
      core-tutorial typofix · 5221ecbc
      Thomas Zander 提交于
      Signed-off-by: NThomas Zander <zander@kde.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5221ecbc
    • J
      Officially deprecate repo-config. · 5c66d0d4
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5c66d0d4
    • S
      Fix random fast-import errors when compiled with NO_MMAP · c9ced051
      Shawn O. Pearce 提交于
      fast-import was relying on the fact that on most systems mmap() and
      write() are synchronized by the filesystem's buffer cache.  We were
      relying on the ability to mmap() 20 bytes beyond the current end
      of the file, then later fill in those bytes with a future write()
      call, then read them through the previously obtained mmap() address.
      
      This isn't always true with some implementations of NFS, but it is
      especially not true with our NO_MMAP=YesPlease build time option used
      on some platforms.  If fast-import was built with NO_MMAP=YesPlease
      we used the malloc()+pread() emulation and the subsequent write()
      call does not update the trailing 20 bytes of a previously obtained
      "mmap()" (aka malloc'd) address.
      
      Under NO_MMAP that behavior causes unpack_entry() in sha1_file.c to
      be unable to read an object header (or data) that has been unlucky
      enough to be written to the packfile at a location such that it
      is in the trailing 20 bytes of a window previously opened on that
      same packfile.
      
      This bug has gone unnoticed for a very long time as it is highly data
      dependent.  Not only does the object have to be placed at the right
      position, but it also needs to be positioned behind some other object
      that has been accessed due to a branch cache invalidation.  In other
      words the stars had to align just right, and if you did run into
      this bug you probably should also have purchased a lottery ticket.
      
      Fortunately the workaround is a lot easier than the bug explanation.
      
      Before we allow unpack_entry() to read data from a pack window
      that has also (possibly) been modified through write() we force
      all existing windows on that packfile to be closed.  By closing
      the windows we ensure that any new access via the emulated mmap()
      will reread the packfile, updating to the current file content.
      
      This comes at a slight performance degredation as we cannot reuse
      previously cached windows when we update the packfile.  But it
      is a fairly minor difference as the window closes happen at only
      two points:
      
       - When the packfile is finalized and its .idx is generated:
      
         At this stage we are getting ready to update the refs and any
         data access into the packfile is going to be random, and is
         going after only the branch tips (to ensure they are valid).
         Our existing windows (if any) are not likely to be positioned
         at useful locations to access those final tip commits so we
         probably were closing them before anyway.
      
       - When the branch cache missed and we need to reload:
      
         At this point fast-import is getting change commands for the next
         commit and it needs to go re-read a tree object it previously
         had written out to the packfile.  What windows we had (if any)
         are not likely to cover the tree in question so we probably were
         closing them before anyway.
      
      We do try to avoid unnecessarily closing windows in the second case
      by checking to see if the packfile size has increased since the
      last time we called unpack_entry() on that packfile.  If the size
      has not changed then we have not written additional data, and any
      existing window is still vaild.  This nicely handles the cases where
      fast-import is going through a branch cache reload and needs to read
      many trees at once.  During such an event we are not likely to be
      updating the packfile so we do not cycle the windows between reads.
      
      With this change in place t9301-fast-export.sh (which was broken
      by c3b0dec5) finally works again.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c9ced051
    • B
      fast-import.c: don't try to commit marks file if write failed · fb54abd6
      Brandon Casey 提交于
      We also move the assignment of -1 to the lock file descriptor
      up, so that rollback_lock_file() can be called safely after a
      possible attempt to fclose(). This matches the contents of
      the 'if' statement just above testing success of fdopen().
      Signed-off-by: NBrandon Casey <casey@nrlssc.navy.mil>
      Acked-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      fb54abd6
  5. 17 1月, 2008 10 次提交
  6. 16 1月, 2008 3 次提交
  7. 15 1月, 2008 5 次提交
  8. 14 1月, 2008 2 次提交