1. 30 6月, 2005 4 次提交
    • L
      f3a3214e
    • L
      Start of "git-send-pack", the local part of sending off a pack · 61221472
      Linus Torvalds 提交于
      Like git-receive-pack, this is only partway done.
      61221472
    • L
      Add first cut at "git-receive-pack" · 575f4974
      Linus Torvalds 提交于
      It's not working yet, but it's at the point where I want to be able to
      track my changes.  The theory of operation is that this is the "remote"
      side of a "git push".  It can tell us what references the remote side
      has, receives out reference update commands and a pack-file, and can
      execute the unpacking command.
      575f4974
    • J
      [PATCH] Add git-verify-pack command. · f9253394
      Junio C Hamano 提交于
      Given a list of <pack>.idx files, this command validates the
      index file and the corresponding .pack file for consistency.
      
      This patch also uses the same validation mechanism in fsck-cache
      when the --full flag is used.
      
      During normal operation, sha1_file.c verifies that a given .idx
      file matches the .pack file by comparing the SHA1 checksum
      stored in .idx file and .pack file as a minimum sanity check.
      We may further want to check the pack signature and version when
      we map the pack, but that would be a separate patch.
      
      Earlier, errors to map a pack file was not flagged fatal but led
      to a random fatal error later.  This version explicitly die()s
      when such an error is detected.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f9253394
  2. 29 6月, 2005 1 次提交
    • L
      Make git pack files use little-endian size encoding · 01247d87
      Linus Torvalds 提交于
      This makes it match the new delta encoding, and admittedly makes the
      code easier to follow.
      
      This also updates the PACK file version to 2, since this (and the delta
      encoding change in the previous commit) are incompatible with the old
      format.
      01247d87
  3. 28 6月, 2005 1 次提交
  4. 27 6月, 2005 2 次提交
  5. 26 6月, 2005 4 次提交
  6. 24 6月, 2005 1 次提交
    • L
      Add "git-patch-id" program to generate patch ID's. · f9767222
      Linus Torvalds 提交于
      A "patch ID" is nothing but a SHA1 of the diff associated with a patch,
      with whitespace and line numbers ignored.  As such, it's "reasonably
      stable", but at the same time also reasonably unique, ie two patches
      that have the same "patch ID" are almost guaranteed to be the same
      thing.
      
      IOW, you can use this thing to look for likely duplicate commits.
      f9767222
  7. 23 6月, 2005 2 次提交
  8. 22 6月, 2005 1 次提交
    • L
      Add "git checkout" that does what the name suggests · 303e5f4c
      Linus Torvalds 提交于
      It is careful by default and refuses to overwrite old info, but if you
      want to force everything to be re-read, use the "-f" flag.
      
      Some day I'll make it take individual filenames too. Right now
      it's all-or-nothing.
      303e5f4c
  9. 15 6月, 2005 1 次提交
    • L
      Trivial git script fixups · 40d8cfe4
      Linus Torvalds 提交于
      Fix permissions, and add trivial "reset" and "add" scripts.
      
      The "reset" script just resets the index back to head, while the "add"
      script is just a crutch for people used to do "cvs add".
      40d8cfe4
  10. 14 6月, 2005 2 次提交
    • L
      Add "git diff" script · 940c1bb0
      Linus Torvalds 提交于
      It's a simple helper that depending on the arguments will either
      use git-diff-files, git-diff-cache or git-diff-tree.
      940c1bb0
    • L
      Add 'git-rev-parse' helper script · 178cb243
      Linus Torvalds 提交于
      It's an incredibly cheesy helper that changes human-readable revision
      arguments into the git-rev-list argument format.
      
      You can use it to do something like this:
      
      	git-rev-list --pretty $(git-rev-parse --default HEAD "$@")
      
      which is what git-log-script will become. Here git-rev-parse will
      then allow you to use arguments like "v2.6.12-rc5.." or similar
      human-readable ranges.
      
      It's really quite stupid: "a..b" will be converted into "a" and "^b" if
      "a" and "b" are valid object pointers.  And the "--default" case will be
      used if nothing but flags have been seen, so that you can default to a
      certain argument if there are no other ranges.
      178cb243
  11. 10 6月, 2005 1 次提交
  12. 08 6月, 2005 1 次提交
    • L
      Add CVS import scripts and programs · d4f8b390
      Linus Torvalds 提交于
      This gets the "cvs2git" program from the old git-tools
      archive, and adds a nice script around it that makes it
      much easier to use.
      
      With this, you should be able to import a CVS archive
      using just a simple
      
      	git cvsimport <cvsroot> <module>
      
      and you're done. At least it worked for my one single test.
      
      NOTE!! This may need tweaking. It currently expects (and
      verifies) that cvsps version 2.1 is installed, but you
      can't actually set any of the cvsps parameters, like the
      time fuzz.
      d4f8b390
  13. 07 6月, 2005 3 次提交
    • D
      [PATCH] Operations on refs · 95fc7512
      Daniel Barkalow 提交于
      This patch adds code to read a hash out of a specified file under
      {GIT_DIR}/refs/, and to write such files atomically and optionally with an
      compare and lock.
      Signed-off-by: NDaniel Barkalow <barkalow@iabervon.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      95fc7512
    • L
      git-rev-list: make sure to link with ssl libraries · 64de3562
      Linus Torvalds 提交于
      Needed for the bignum stuff used by merge-order.
      64de3562
    • J
      [PATCH] Modify git-rev-list to linearise the commit history in merge order. · a3437b8c
      jon@blackcubes.dyndns.org 提交于
      This patch linearises the GIT commit history graph into merge order
      which is defined by invariants specified in Documentation/git-rev-list.txt.
      
      The linearisation produced by this patch is superior in an objective sense
      to that produced by the existing git-rev-list implementation in that
      the linearisation produced is guaranteed to have the minimum number of
      discontinuities, where a discontinuity is defined as an adjacent pair of
      commits in the output list which are not related in a direct child-parent
      relationship.
      
      With this patch a graph like this:
      
      	a4 ---
      	| \   \
      	|  b4 |
      	|/ |  |
      	a3 |  |
      	|  |  |
      	a2 |  |
      	|  |  c3
      	|  |  |
      	|  |  c2
      	|  b3 |
      	|  | /|
      	|  b2 |
      	|  |  c1
      	|  | /
      	|  b1
      	a1 |
      	|  |
      	a0 |
      	| /
      	root
      
      Sorts like this:
      
      	= a4
      	| c3
      	| c2
      	| c1
      	^ b4
      	| b3
      	| b2
      	| b1
      	^ a3
      	| a2
      	| a1
      	| a0
      	= root
      
      Instead of this:
      
      	= a4
      	| c3
      	^ b4
      	| a3
      	^ c2
      	^ b3
      	^ a2
      	^ b2
      	^ c1
      	^ a1
      	^ b1
      	^ a0
      	= root
      
      A test script, t/t6000-rev-list.sh, includes a test which demonstrates
      that the linearisation produced by --merge-order has less discontinuities
      than the linearisation produced by git-rev-list without the --merge-order
      flag specified. To see this, do the following:
      
      	cd t
      	./t6000-rev-list.sh
      	cd trash
      	cat actual-default-order
      	cat actual-merge-order
      
      The existing behaviour of git-rev-list is preserved, by default. To obtain
      the modified behaviour, specify --merge-order or --merge-order --show-breaks
      on the command line.
      
      This version of the patch has been tested on the git repository and also on the linux-2.6
      repository and has reasonable performance on both - ~50-100% slower than the original algorithm.
      
      This version of the patch has incorporated a functional equivalent of the Linus' output limiting
      algorithm into the merge-order algorithm itself. This operates per the notes associated
      with Linus' commit 337cb3fb.
      
      This version has incorporated Linus' feedback regarding proposed changes to rev-list.c.
      (see: [PATCH] Factor out filtering in rev-list.c)
      
      This version has improved the way sort_first_epoch marks commits as uninteresting.
      
      For more details about this change, refer to Documentation/git-rev-list.txt
      and http://blackcubes.dyndns.org/epoch/.
      Signed-off-by: NJon Seymour <jon.seymour@gmail.com>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a3437b8c
  14. 06 6月, 2005 3 次提交
  15. 05 6月, 2005 1 次提交
    • L
      Add git-shortlog perl script · fa375c7f
      Linus Torvalds 提交于
      Somebody finally came through - Jeff Garzik gets a gold
      star for writing a shortlog script for git, so that I
      can do nice release announcments again.
      
      I added name translations from the current kernel history
      (and git, for that matter). Hopefully it won't grow at
      nearly the same rate the BK equivalent did, since 99% of
      the time git records the full name already.
      
      Usage: just do
      
              git-rev-list --pretty HEAD ^LAST_HEAD | git-shortlog
      
      or, in fact, use any of the other tools (git-diff-tree,
      git-whatchanged etc) that use the default "pretty" commit format.
      fa375c7f
  16. 02 6月, 2005 1 次提交
    • L
      Add "git" and "git-log-script" helper scripts. · e764b8e8
      Linus Torvalds 提交于
      The "git" script is just shorthand: "git xyz <args>" will just execute
      "git-xyz-script <args>", which is useful for people used to the CVS
      naming convention. So "git log" will run the new git-log-script, which
      is just a wrapper around the new pretty-printing git-rev-list.
      
      Cheesy.
      e764b8e8
  17. 31 5月, 2005 3 次提交
    • J
      [PATCH] Add -O<orderfile> option to diff-* brothers. · af5323e0
      Junio C Hamano 提交于
      A new diffcore filter diffcore-order is introduced.  This takes
      a text file each of whose line is a shell glob pattern.  Patches
      that match a glob pattern on an earlier line in the file are
      output before patches that match a later line, and patches that
      do not match any glob pattern are output last.
      
      A typical orderfile for git project probably should look like
      this:
      
          README
          Makefile
          Documentation
          *.h
          *.c
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      af5323e0
    • L
      Add "commit" helper script · a3e870f2
      Linus Torvalds 提交于
      This is meant to make raw git not hugely less usable than something
      like raw CVS. I want to make a 1.0 release of the plumbing, and the
      actual commit part was just too intimidating.
      a3e870f2
    • J
      [PATCH] Add -B flag to diff-* brothers. · f345b0a0
      Junio C Hamano 提交于
      A new diffcore transformation, diffcore-break.c, is introduced.
      
      When the -B flag is given, a patch that represents a complete
      rewrite is broken into a deletion followed by a creation.  This
      makes it easier to review such a complete rewrite patch.
      
      The -B flag takes the same syntax as the -M and -C flags to
      specify the minimum amount of non-source material the resulting
      file needs to have to be considered a complete rewrite, and
      defaults to 99% if not specified.
      
      As the new test t4008-diff-break-rewrite.sh demonstrates, if a
      file is a complete rewrite, it is broken into a delete/create
      pair, which can further be subjected to the usual rename
      detection if -M or -C is used.  For example, if file0 gets
      completely rewritten to make it as if it were rather based on
      file1 which itself disappeared, the following happens:
      
          The original change looks like this:
      
      	file0     --> file0' (quite different from file0)
      	file1     --> /dev/null
      
          After diffcore-break runs, it would become this:
      
      	file0     --> /dev/null
      	/dev/null --> file0'
      	file1     --> /dev/null
      
          Then diffcore-rename matches them up:
      
      	file1     --> file0'
      
      The internal score values are finer grained now.  Earlier
      maximum of 10000 has been raised to 60000; there is no user
      visible changes but there is no reason to waste available bits.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f345b0a0
  18. 25 5月, 2005 1 次提交
  19. 24 5月, 2005 1 次提交
    • L
      Start implementing "git-apply" · c1bb9350
      Linus Torvalds 提交于
      This applies git patches (and old-style unified diffs)
      in the index, rather than doing it in the working directory.
      
      That allows for a lot more flexibility, and means that if a
      patch fails, we aren't going to mess up the working directory.
      
      NOTE! This is just the first cut at it, and right now it only
      parses the incoming patch, it doesn't actually apply it yet.
      c1bb9350
  20. 23 5月, 2005 4 次提交
  21. 22 5月, 2005 2 次提交
    • L
      "make clean" should also clean up documentation · cebf03c4
      Linus Torvalds 提交于
      (Or, if somebody disagrees, we should have a "make distclean").
      cebf03c4
    • J
      [PATCH] Introducing software archaeologist's tool "pickaxe". · 52e95789
      Junio C Hamano 提交于
      This steals the "pickaxe" feature from JIT and make it available
      to the bare Plumbing layer.  From the command line, the user
      gives a string he is intersted in.
      
      Using the diff-core infrastructure previously introduced, it
      filters the differences to limit the output only to the diffs
      between <src> and <dst> where the string appears only in one but
      not in the other.  For example:
      
       $ ./git-rev-list HEAD | ./git-diff-tree -Sdiff-tree-helper --stdin -M
      
      would show the diffs that touch the string "diff-tree-helper".
      
      In real software-archaeologist application, you would typically
      look for a few to several lines of code and see where that code
      came from.
      
      The "pickaxe" module runs after "rename/copy detection" module,
      so it even crosses the file rename boundary, as the above
      example demonstrates.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      52e95789