1. 17 5月, 2006 1 次提交
  2. 16 5月, 2006 2 次提交
  3. 15 5月, 2006 1 次提交
  4. 06 5月, 2006 2 次提交
    • J
      binary patch. · 051308f6
      Junio C Hamano 提交于
      This adds "binary patch" to the diff output and teaches apply
      what to do with them.
      
      On the diff generation side, traditionally, we said "Binary
      files differ\n" without giving anything other than the preimage
      and postimage object name on the index line.  This was good
      enough for applying a patch generated from your own repository
      (very useful while rebasing), because the postimage would be
      available in such a case.  However, this was not useful when the
      recipient of such a patch via e-mail were to apply it, even if
      the preimage was available.
      
      This patch allows the diff to generate "binary" patch when
      operating under --full-index option.  The binary patch follows
      the usual extended git diff headers, and looks like this:
      
      	"GIT binary patch\n"
      	<length byte><data>"\n"
      	...
      	"\n"
      
      Each line is prefixed with a "length-byte", whose value is upper
      or lowercase alphabet that encodes number of bytes that the data
      on the line decodes to (1..52 -- 'A' means 1, 'B' means 2, ...,
      'Z' means 26, 'a' means 27, ...).  <data> is 1 or more groups of
      5-byte sequence, each of which encodes up to 4 bytes in base85
      encoding.  Because 52 / 4 * 5 = 65 and we have the length byte,
      an output line is capped to 66 characters.  The payload is the
      same diff-delta as we use in the packfiles.
      
      On the consumption side, git-apply now can decode and apply the
      binary patch when --allow-binary-replacement is given, the diff
      was generated with --full-index, and the receiving repository
      has the preimage blob, which is the same condition as it always
      required when accepting an "Binary files differ\n" patch.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      051308f6
    • J
      core.prefersymlinkrefs: use symlinks for .git/HEAD · e388c738
      Junio C Hamano 提交于
      When inspecting a project whose build infrastructure used to
      assume that .git/HEAD is a symlink ref, core.prefersymlinkrefs
      in the config file of such a project would help to bisect its
      history.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      (cherry picked from 9f0bb90d commit)
      e388c738
  5. 05 5月, 2006 1 次提交
  6. 03 5月, 2006 1 次提交
  7. 02 5月, 2006 4 次提交
  8. 01 5月, 2006 1 次提交
    • J
      built-in "git grep" · 5010cb5f
      Junio C Hamano 提交于
      This attempts to set up built-in "git grep" to further reduce
      our dependence on the shell, while at the same time optionally
      allowing to run grep against object database.  You could do
      funky things like these:
      
      	git grep --cached -e pattern	;# grep from index
      	git grep -e pattern master	;# or in a rev
      	git grep -e pattern master next ;# or in multiple revs
      	git grep -e pattern pu^@	;# even like this with an
      					;# extension from another topic ;-)
      	git grep -e pattern master..next ;# or even from rev ranges
      	git grep -e pattern master~20:Documentation
      					;# or an arbitrary tree
      	git grep -e pattern next:git-commit.sh
              				;# or an arbitrary blob
      
      Right now, it does not understand and/or obey many options grep
      should accept, and the pattern must be given with -e option due
      to the way the parameter parser is structured, both of which
      obviously need to be fixed for usability.
      
      But this is going in the right direction.  The shell script
      version is one of the worst Portability offender in the git
      barebone Porcelainish; it uses xargs -0 to pass paths around and
      shell arrays to sift flags and parameters.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      5010cb5f
  9. 30 4月, 2006 1 次提交
    • L
      git builtin "push" · 755225de
      Linus Torvalds 提交于
      This adds a builtin "push" command, which is largely just a C'ification of
      the "git-push.sh" script.
      
      Now, the reason I did it as a built-in is partly because it's yet another
      step on relying less on shell, but it's actually mostly because I've
      wanted to be able to push to _multiple_ repositories, and the most obvious
      and simplest interface for that would seem be to just have a "remotes"
      file that has multiple URL entries.
      
      (For "pull", having multiple entries should either just select the first
      one, or you could fall back on the others on failure - your choice).
      
      And quite frankly, it just became too damn messy to do that in shell.
      Besides, we actually have a fair amount of infrastructure in C, so it just
      wasn't that hard to do.
      
      Of course, this is almost totally untested. It probably doesn't work for
      anything but the one trial I threw at it. "Simple" doesn't necessarily
      mean "obviously correct".
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      755225de
  10. 29 4月, 2006 2 次提交
  11. 28 4月, 2006 1 次提交
    • J
      built-in count-objects. · c7432087
      Junio C Hamano 提交于
      Also it learned to do -v (verbose) to report:
      
      	- number of loose objects
      	- disk occupied by loose objects
      	- number of objects in local packs
      	- number of loose objects that are also in pack
      	- unrecognised garbage in .git/objects/??/.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      c7432087
  12. 26 4月, 2006 2 次提交
  13. 22 4月, 2006 3 次提交
  14. 20 4月, 2006 3 次提交
    • J
      git-update-index --unresolve · 2bd452d3
      Junio C Hamano 提交于
      Retire git-unresolve and make it into "git-update-index --unresolve".
      It processes all paths that follow.
      
      During a merge, you would mark a path that is dealt with with:
      
      	$ git update-index hello
      
      and you would "undo" it with:
      
      	$ git update-index --unresolve hello
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      2bd452d3
    • J
      Add git-unresolve <paths>... · ec167793
      Junio C Hamano 提交于
      This is an attempt to address the issue raised on #git channel
      recently by Carl Worth.
      
      After a conflicted automerge, "git diff" shows a combined diff
      to give you how the tentative automerge result differs from
      what came from each branch.  During a complex merge, it is
      tempting to be able to resolve a few paths at a time, mark
      them "I've dealt with them" with git-update-index to unclutter
      the next "git diff" output, and keep going.  However, when the
      final result does not compile or otherwise found to be a
      mismerge, the workflow to fix the mismerged paths suddenly
      changes to "git diff HEAD -- path" (to get a diff from our
      HEAD before merging) and "git diff MERGE_HEAD -- path" (to get
      a diff from theirs), and it cannot show the combined anymore.
      
      With git-unresolve <paths>..., the versions from our branch and
      their branch for specified blobs are placed in stage #2 and
      stage #3, without touching the working tree files.  This gives
      you the combined diff back for easier review, along with
      "diff --ours" and "diff --theirs".
      
      One thing it does not do is to place the base in stage #1; this
      means "diff --base" would behave differently between the run
      immediately after a conflicted three-way merge, and the run
      after an update-index by mistake followed by a git-unresolve.
      
      We could theoretically run merge-base between HEAD and
      MERGE_HEAD to find which tree to place in stage #1, but
      reviewing "diff --base" is not that useful so....
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ec167793
    • J
      diff: move diff.c to diff-lib.c to make room. · ba580aea
      Junio C Hamano 提交于
      Now I am not doing any real "git-diff in C" yet, but this would
      help before doing so.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ba580aea
  15. 19 4月, 2006 1 次提交
  16. 17 4月, 2006 1 次提交
  17. 13 4月, 2006 1 次提交
    • J
      Makefile: $(MAKE) check-docs · 8c989ec5
      Junio C Hamano 提交于
      This target lists undocumented commands, and/or whose document
      is not referenced from the main git documentation.
      
      For now, there are some exceptions I added primarily because I
      lack the energy to document them myself:
      
       - merge backends (we should really document them)
       - ssh-push/ssh-pull (does anybody still use them?)
       - annotate and blame (maybe after one of them eats the other ;-)
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      8c989ec5
  18. 12 4月, 2006 2 次提交
  19. 11 4月, 2006 3 次提交
  20. 09 4月, 2006 1 次提交
    • J
      log-tree: separate major part of diff-tree. · 5f1c3f07
      Junio C Hamano 提交于
      This separates out the part that deals with one-commit diff-tree
      (and --stdin form) into a separate log-tree module.
      
      There are two goals with this.  The more important one is to be
      able to make this part available to "git log --diff", so that we
      can have a native "git whatchanged" command.  Another is to
      simplify the commit log generation part simpler.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      5f1c3f07
  21. 06 4月, 2006 1 次提交
  22. 05 4月, 2006 4 次提交
  23. 01 4月, 2006 1 次提交