1. 26 10月, 2005 8 次提交
  2. 25 10月, 2005 7 次提交
    • J
      upload-pack: fix thinko in common-commit finder code. · 7efc8e43
      Junio C Hamano 提交于
      The code to check if we have the object the other side has was bogus
      (my fault).
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      7efc8e43
    • J
      git-fetch-pack: Implement client part of the multi_ack extension · 40a10462
      Johannes Schindelin 提交于
      This patch concludes the series, which makes
      git-fetch-pack/git-upload-pack negotiate a potentially better set of
      common revs. It should make a difference when fetching from a repository
      with a few branches.
      Signed-off-by: NJohannes Schindelin <Johannes.Schindelin@gmx.de>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      40a10462
    • J
      git-fetch-pack: Do not use git-rev-list · 69779a56
      Johannes Schindelin 提交于
      The code used to call git-rev-list to enumerate the local revisions. A
      disadvantage of that method was that git-rev-list, lacking a control apart
      from the command line, would happily enumerate ancestors of acknowledged
      common commits, which was just taking unnecessary bandwidth.
      
      Therefore, do not use git-rev-list on the fetching side, but rather
      construct the list on the go. Send the revisions starting from the local
      heads, ignoring the revisions known to be common.
      Signed-off-by: NJohannes Schindelin <Johannes.Schindelin@gmx.de>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      69779a56
    • J
      git-upload-pack: Support sending multiple ACK messages · 0f8fdc39
      Johannes Schindelin 提交于
      The current fetch/upload protocol works like this:
      
      - client sends revs it wants to have via "want" messages
      - client sends a flush message (message with len 0)
      - client sends revs it has via "have" messages
      - after one window (32 revs), a flush is sent
      - after each subsequent window, a flush is sent, and an ACK/NAK is received.
              (NAK means that server does not have any of the transmitted revs;
               ACK sends also the sha1 of the rev server has)
       - when the first ACK is received, client sends "done", and does not expect
              any further messages
      
      One special case, though:
      
      - if no ACK is received (only NAK's), and client runs out of revs to send,
              "done" is sent, and server sends just one more "NAK"
      
      A smarter scheme, which actually has a chance to detect more than one
      common rev, would be to send more than just one ACK. This patch implements
      the server side of the following extension to the protocol:
      
      - client sends at least one "want" message with "multi_ack" appended, like
      
              "want 1234567890123456789012345678901234567890 multi_ack"
      
      - if the server understands that extension, it will send ACK messages for all
              revs it has, not just the first one
      
      - server appends "continue" to the ACK messages like
      
              "ACK 1234567890123456789012345678901234567890 continue"
      
              until it has MAX_HAS-1 revs. In this manner, client knows when to
              stop sending revs by checking for the substring "continue" (and
              further knows that server understands multi_ack)
      
      In this manner, the protocol stays backwards compatible, since both client
      must send "want ... multi_ack" and server must answer with "ACK ...
      continue" to enable the extension.
      Signed-off-by: NJohannes Schindelin <Johannes.Schindelin@gmx.de>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      0f8fdc39
    • J
      git-upload-pack: More efficient usage of the has_sha1 array · 794f9fe7
      Johannes Schindelin 提交于
      This patch is based on Junio's proposal. It marks parents of common revs
      so that they do not clutter up the has_sha1 array.
      Signed-off-by: NJohannes Schindelin <Johannes.Schindelin@gmx.de>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      794f9fe7
    • L
      Add git-shell. · 35eb2d36
      Linus Torvalds 提交于
      This adds a very git specific restricted shell, that can be
      added to /etc/shells and set to the pw_shell in the /etc/passwd
      file, to give users ability to push into repositories over ssh
      without giving them full interactive shell acount.
      
      [jc: I updated Linus' patch to match what the current sq_quote()
       does.]
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      35eb2d36
    • J
      Clarify git status output. · 38cc7ab8
      Junio C Hamano 提交于
      What we list as "Ignored files" are not "ignored".  Rather, it
      is the list of "not listed in the to-be-ignored files, but
      exists -- you may be forgetting to add them".
      
      Pointed out by Daniel.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      38cc7ab8
  3. 24 10月, 2005 3 次提交
    • A
      Require zlib >= 1.2 for RPM. · 7744f3b8
      Andreas Ericsson 提交于
      git-update-index requires zlib >= 1.2, which introduced the *Bound
      functions.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      7744f3b8
    • J
      Add git-mv · 1114b26e
      Josef Weidendorfer 提交于
      It supersedes git-rename by adding functionality to move multiple
      files, directories or symlinks into another directory.  It also
      provides according documentation.
      
      The implementation renames multiple files, using the arguments from
      the command line to produce an array of sources and destinations.  In
      a first pass, all requested renames are checked for errors, and
      overwriting of existing files is only allowed with '-f'.  The actual
      renaming is done in a second pass.  This ensures that any error
      condition is checked before anything is changed.
      Signed-off-by: NJosef Weidendorfer <Josef.Weidendorfer@gmx.de>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      1114b26e
    • P
      Silence confusing and false-positive curl error message · e2029eb9
      Petr Baudis 提交于
      git-http-fetch spits out curl 404 error message when unable to fetch an object,
      but that's confusing since no error really happened and the object is usually
      found in a pack it tries right after that. And if the object still cannot be
      retrieved, it will say another error message anyway. OTOH other HTTP errors
      (403 etc) are likely fatal and the user should be still informed about them.
      Signed-off-by: NPetr Baudis <pasky@suse.cz>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      e2029eb9
  4. 23 10月, 2005 5 次提交
    • J
      Merge branch 'fixes' · 8ac3a61f
      Junio C Hamano 提交于
      8ac3a61f
    • J
      git-show-branch: Fix off-by-one error. · 79778e46
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      79778e46
    • L
      git-rev-list: add "--dense" flag · 1b9e059d
      Linus Torvalds 提交于
      This is what the recent git-rev-list changes have all been gearing up for.
      
      When we use a path filter to git-rev-list, the new "--dense" flag asks
      git-rev-list to compress the history so that it _only_ contains commits
      that change files in the path filter.  It also rewrites the parent
      information so that tools like "gitk" will see the result as a dense
      history tree.
      
      For example, on the current kernel archive:
      
      	[torvalds@g5 linux]$ git-rev-list HEAD | wc -l
      	9904
      	[torvalds@g5 linux]$ git-rev-list HEAD -- kernel | wc -l
      	5442
      	[torvalds@g5 linux]$ git-rev-list --dense HEAD -- kernel | wc -l
      	356
      
      which shows that while we have almost ten thousand commits, we can prune
      down the work to slightly more than half by only following the merges
      that are interesting. But further, we can then compress the history to
      just 356 entries that actually make changes to the kernel subdirectory.
      
      To see this in action, try something like
      
      	gitk --dense -- gitk
      
      to see just the history that affects gitk.  Or, to show that true
      parallel development still remains parallel, do
      
      	gitk --dense -- daemon.c
      
      which shows some parallel commits in the current git tree.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      1b9e059d
    • L
      Teach git-rev-list to follow just a specified set of files · cf484544
      Linus Torvalds 提交于
      This is the first cut at a git-rev-list that knows to ignore commits that
      don't change a certain file (or set of files).
      
      NOTE! For now it only prunes _merge_ commits, and follows the parent where
      there are no differences in the set of files specified. In the long run,
      I'd like to make it re-write the straight-line history too, but for now
      the merge simplification is much more fundamentally important (the
      rewriting of straight-line history is largely a separate simplification
      phase, but the merge simplification needs to happen early if we want to
      optimize away unnecessary commit parsing).
      
      If all parents of a merge change some of the files, the merge is left as
      is, so the end result is in no way guaranteed to be a linear history, but
      it will often be a lot /more/ linear than the full tree, since it prunes
      out parents that didn't matter for that set of files.
      
      As an example from the current kernel:
      
      	[torvalds@g5 linux]$ git-rev-list HEAD | wc -l
      	9885
      	[torvalds@g5 linux]$ git-rev-list HEAD -- Makefile | wc -l
      	4084
      	[torvalds@g5 linux]$ git-rev-list HEAD -- drivers/usb | wc -l
      	5206
      
      and you can also use 'gitk' to more visually see the pruning of the
      history tree, with something like
      
      	gitk -- drivers/usb
      
      showing a simplified history that tries to follow the first parent in a
      merge that is the parent that fully defines drivers/usb/.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      cf484544
    • L
      Split up tree diff functions into tree-diff.c library · ac1b3d12
      Linus Torvalds 提交于
      This makes the tree diff functionality independent of the "git-diff-tree"
      program, by splitting the core functionality up into a library file.
      
      This will be needed for when we teach git-rev-list to only follow a
      specified set of pathnames, rather than the global revision history.
      
      Most of it is a fairly straightforward code move, but it also involves
      some calling convention cleanup, and moving some of the static variables
      from diff-tree.c into the options structure.
      
      The actual tree change callback routines also become paramterized by the
      diff_options structure, allowing the library functionality to do something
      else than just show the diff on stdout.
      
      Right now the only user of this functionality remains git-diff-tree
      itself.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ac1b3d12
  5. 22 10月, 2005 6 次提交
  6. 21 10月, 2005 11 次提交