1. 12 2月, 2006 1 次提交
  2. 11 2月, 2006 7 次提交
    • L
      Make "git clone" less of a deathly quiet experience · 5ee2ad65
      Linus Torvalds 提交于
      It used to be that "git-unpack-objects" would give nice percentages, but
      now that we don't unpack the initial clone pack any more, it doesn't. And
      I'd love to do that nice percentage view in the pack objects downloader
      too, but the thing doesn't even read the pack header, much less know how
      much it's going to get, so I was lazy and didn't.
      
      Instead, it at least prints out how much data it's gotten, and what the
      packing speed is. Which makes the user realize that it's actually doing
      something useful instead of sitting there silently (and if the recipient
      knows how large the final result is, he can at least make a guess about
      when it migt be done).
      
      So with this patch, I get something like this on my DSL line:
      
      	[torvalds@g5 ~]$ time git clone master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 clone-test
      	Packing 188543 objects
      	  48.398MB  (154 kB/s)
      
      where even the speed approximation seems to be roughtly correct (even
      though my algorithm is a truly stupid one, and only really gives "speed in
      the last half second or so").
      
      Anyway, _something_ like this is definitely needed. It could certainly be
      better (if it showed the same kind of thing that git-unpack-objects did,
      that would be much nicer, but would require parsing the object stream as
      it comes in). But this is  big step forward, I think.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      5ee2ad65
    • J
      Define GIT_(AUTHOR|COMMITTER)_(NAME|EMAIL) to known values. · 29e55cd5
      Junio C Hamano 提交于
      Without these, running tests with an account with empty gecos
      field would fail.
      
      We might want to loosen error from "git-var -l" (but not
      "git-var GIT_AUTHOR_NAME") later, but that is more or less an
      independent issue.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      29e55cd5
    • J
      Merge branch 'lt/diff-tree' · 3f6726e1
      Junio C Hamano 提交于
      * lt/diff-tree:
        combine-diff: Record diff status a bit more faithfully
        find_unique_abbrev() simplification.
        combine-diff: move formatting logic to show_combined_diff()
        combined-diff: use diffcore before intersecting paths.
        diff-tree -c raw output
      3f6726e1
    • J
      git-commit -v: have patch at the end. · 9ae6be80
      Junio C Hamano 提交于
      It was pointed out that otherwise more important summary
      information prefixed with '#' would become prone to be missed.
      
      Also instead of chopping at the first '^---$' line, stop at the
      first 'diff --git a/' line.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      9ae6be80
    • J
      rev-list: default to abbreviate merge parent names under --pretty. · 9da5c2f0
      Junio C Hamano 提交于
      When we prettyprint commit log messages, merge parent names were
      often very long and there was no way to abbreviate it.
      
      This changes them to be abbreviated by default, and non-default
      abbreviations can be specified with --no-abbrev or --abbrev=<n>
      options.
      
      Note that this affects only the prettyprinted parent names.  The
      output from --show-parents is meant for machine consumption and
      is not affected by this flag.
      9da5c2f0
    • N
      delta micro optimization · 39556fbd
      Nicolas Pitre 提交于
      My kernel work habit made me look at the generated assembly for the
      delta code, and one obvious albeit small improvement is this patch.
      Signed-off-by: NNicolas Pitre <nico@cam.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      39556fbd
    • N
      count-delta.c: comment fixes · e7ad4a9c
      Nicolas Pitre 提交于
      There was a stale comment that explains why the old code could
      undercount when delta data copied things around inside detination
      buffer.  We do not use that kind of delta, so the comment does
      not apply.
      e7ad4a9c
  3. 10 2月, 2006 13 次提交
    • J
      Merge branch 'jc/empty-commit' · 4d44cb19
      Junio C Hamano 提交于
      * jc/empty-commit:
        t6000: fix a careless test library add-on.
        Do not allow empty name or email.
      4d44cb19
    • J
      combine-diff: Record diff status a bit more faithfully · d416df88
      Junio C Hamano 提交于
      This shows "new file mode XXXX" and "deleted file mode XXXX"
      lines like two-way diff-patch output does, by checking the
      status from each parent.
      
      The diff-raw output for combined diff is made a bit uglier by
      showing diff status letters with each parent.  While most of the
      case you would see "MM" in the output, an Evil Merge that
      touches a path that was added by inheriting from one parent is
      possible and it would be shown like these:
      
          $ git-diff-tree --abbrev -c HEAD
          2d7ca89675eb8888b0b88a91102f096d4471f09f
          ::000000 000000 100644 0000000... 0000000... 31dd686... AA	b
          ::000000 100644 100644 0000000... 6c884ae... c6d4fa8... AM	d
          ::100644 100644 100644 4f7cbe7... f8c295c... 19d5d80... RR	e
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      d416df88
    • J
      find_unique_abbrev() simplification. · 297a1aad
      Junio C Hamano 提交于
      Earlier it did not grok the 0{40} SHA1 very well, but what it
      needed to do was to find the shortest 0{N} that is not used as a
      valid object name to be consistent with the way names of valid
      objects are abbreviated.  This makes some users simpler.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      297a1aad
    • J
      git-status -v · cf7bb589
      Junio C Hamano 提交于
      This revamps the git-status command to take the same set of
      parameters as git commit.  It gives a preview of what is being
      committed with that command.  With -v flag, it shows the diff
      output between the HEAD commit and the index that would be
      committed if these flags were given to git-commit command.
      
      git-commit also acquires -v flag (it used to mean "verify" but
      that is the default anyway and there is --no-verify to turn it
      off, so not much is lost), which uses the updated git-status -v
      to seed the commit log buffer.  This is handy for writing a log
      message while reviewing the changes one last time.
      
      Now, git-commit and git-status are internally share the same
      implementation.
      
      Unlike previous git-commit change, this uses a temporary index
      to prepare the index file that would become the real index file
      after a successful commit, and moves it to the real index file
      once the commit is actually made.  This makes it safer than the
      previous scheme, which stashed away the original index file and
      restored it after an aborted commit.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      cf7bb589
    • J
      Merge branch 'jc/ls-files-o' · 4dc870d9
      Junio C Hamano 提交于
      * jc/ls-files-o:
        ls-files: honour per-directory ignore file from higher directories.
      4dc870d9
    • J
      count-delta.c: Match the delta data semantics change in version 3. · 91c76743
      Junio C Hamano 提交于
      This matches the count_delta() logic to the change previous
      commit introduces to patch_delta().
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      91c76743
    • N
      remove delta-against-self bit · d60fc1c8
      Nicolas Pitre 提交于
      After experimenting with code to add the ability to encode a delta
      against part of the deltified file, it turns out that resulting packs
      are _bigger_ than when this ability is not used.  The raw delta output
      might be smaller, but it doesn't compress as well using gzip with a
      negative net saving on average.
      
      Said bit would in fact be more useful to allow for encoding the copying
      of chunks larger than 64KB providing more savings with large files.
      This will correspond to packs version 3.
      
      While the current code still produces packs version 2, it is made future
      proof so pack versions 2 and 3 are accepted.  Any pack version 2 are
      compatible with version 3 since the redefined bit was never used before.
      When enough time has passed, code to use that bit to produce version 3
      packs could be added.
      Signed-off-by: NNicolas Pitre <nico@cam.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      d60fc1c8
    • J
      stat() for existence in safe_create_leading_directories() · 67d42212
      Jason Riedy 提交于
      Use stat() to explicitly check for existence rather than
      relying on the non-portable EEXIST error in sha1_file.c's
      safe_create_leading_directories().  There certainly are
      optimizations possible, but then the code becomes almost
      the same as that in coreutil's lib/mkdir-p.c.
      
      Other uses of EEXIST seem ok.  Tested on Solaris 8, AIX 5.2L,
      and a few Linux versions.  AIX has some unrelated (I think)
      failures right now; I haven't tried many recent gits there.
      Anyone have an old Ultrix box to break everything?  ;)
      
      Also remove extraneous #includes.  Everything's already in
      git-compat-util.h, included through cache.h.
      Signed-off-by: NJason Riedy <ejr@cs.berkeley.edu>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      67d42212
    • J
      combine-diff: move formatting logic to show_combined_diff() · 0a798076
      Junio C Hamano 提交于
      This way, diff-files can make use of it.  Also implement the
      full suite of what diff_flush_raw() supports just for
      consistency.  With this, 'diff-tree -c -r --name-status' would
      show what is expected.
      
      There is no way to get the historical output (useful for
      debugging and low-level Plumbing work) anymore, so tentatively
      it makes '-m' to mean "do not combine and show individual diffs
      with parents".
      
      diff-files matches diff-tree to produce raw output for -c.  For
      textual combined diff, use -p -c.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      0a798076
    • J
      call git_config() after setup_git_directory() · ce1610ea
      Junio C Hamano 提交于
      If you call setup_git_directory() to work from a subdirectory,
      that should be run first before running git_config().  Otherwise
      you would not read the configuration file from the correct place.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ce1610ea
    • J
      combined-diff: use diffcore before intersecting paths. · 5b236832
      Junio C Hamano 提交于
      This is needed to make "diff-tree -c -M" to work semi-sensibly.
      Otherwise rename detection, pickaxe and friends would never be
      invoked.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      5b236832
    • J
      Add --diff-filter= documentation paragraph · 147cf317
      Jon Loeliger 提交于
      Signed-off-by: NJon Loeliger <jdl@jdl.com>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      147cf317
    • L
      diff-tree -c raw output · ee638024
      Linus Torvalds 提交于
      NOTE! This makes "-c" be the default, which effectively means that merges 
      are never ignored any more, and "-m" is a no-op. So it changes semantics.
      
      I would also like to make "--cc" the default if you do patches, but didn't 
      actually do that.
      
      The raw output format is not wonderfully pretty, but it's distinguishable 
      from a "normal patch" in that a normal patch with just one parent has just 
      one colon at the beginning, while a multi-parent raw diff has <n> colons 
      for <n> parents.
      
      So now, in the kernel, when you do
      
      	git-diff-tree cce0cac125623f9b68f25dd1350f6d616220a8dd
      
      (to see the manual ARM merge that had a conflict in arch/arm/Kconfig), you 
      get
      
      	cce0cac125623f9b68f25dd1350f6d616220a8dd
      	::100644 100644 100644 4a63a8e2e45247a11c068c6ed66c6e7aba29ddd9 77eee38762d69d3de95ae45dd9278df9b8225e2c 2f61726d2f4b636f6e66696700dbf71a59dad287       arch/arm/Kconfig
      
      ie you see two colons (two parents), then three modes (parent modes 
      followed by result mode), then three sha1s (parent sha1s followed by
      result sha1).
      
      Which is pretty close to the normal raw diff output.
      
      Cool/stupid exercise:
      
      	$ git-whatchanged | grep '^::' | cut -f2- | sort |
      	  uniq -c | sort -n | less -S
      
      will show which files have needed the most file-level merge conflict
      resolution. Useful? Probably not. But kind of interesting.
      
      For the kernel, it's
      
           ....
           10 arch/ia64/Kconfig
           11 drivers/scsi/Kconfig
           12 drivers/net/Makefile
           17 include/linux/libata.h
           18 include/linux/pci_ids.h
           23 drivers/net/Kconfig
           24 drivers/scsi/libata-scsi.c
           28 drivers/scsi/libata-core.c
           43 MAINTAINERS
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ee638024
  4. 09 2月, 2006 3 次提交
  5. 08 2月, 2006 4 次提交
  6. 07 2月, 2006 12 次提交
    • M
      http-fetch: Abort requests for objects which arrived in packs · 53f31389
      Mark Wooding 提交于
      In fetch_object, there's a call to release an object request if the
      object mysteriously arrived, say in a pack.  Unfortunately, the fetch
      attempt for this object might already be in progress, and we'll leak the
      descriptor.  Instead, try to tidy away the request.
      Signed-off-by: NMark Wooding <mdw@distorted.org.uk>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      53f31389
    • A
      format-patch: Remove last vestiges of --mbox option · 66f04f38
      Andreas Ericsson 提交于
      Don't mention it in docs or --help output.
      Remove mbox, date and author variables from git-format-patch.sh.
      
      Use DESCRIPTION text from man-page to update LONG_USAGE output. It's
      a bit silly to have two texts saying the same thing in different words,
      and I'm too lazy to update both.
      Signed-off-by: NAndreas Ericsson <ae@op5.se>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      66f04f38
    • J
      Merge git://git.kernel.org/pub/scm/gitk/gitk · 90768daa
      Junio C Hamano 提交于
      * git://git.kernel.org/pub/scm/gitk/gitk:
        gitk: Use git-diff-tree --cc for showing the diffs for merges
        gitk: Add braces around if expressions
      90768daa
    • J
      git-commit: finishing touches. · 5a798fb5
      Junio C Hamano 提交于
      Introduce --only flag to allow the new "partial commit"
      semantics when paths are specified.  The default is still the
      traditional --include semantics.  Once peoples' fingers and
      scripts that want the traditional behaviour are updated to
      explicitly say --include, we could change it to either default
      to --only, or refuse to operate without either --only/--include
      when paths are specified.
      
      This also fixes a couple of bugs in the previous round.  Namely:
      
       - forgot to save/restore index in some cases.
      
       - forgot to use the temporary index to show status when '--only
         paths...' semantics was used.
      
       - --author did not take precedence when reusing an existing
         commit.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      5a798fb5
    • J
      git-commit: revamp the git-commit semantics. · 130fcca6
      Junio C Hamano 提交于
       - "git commit" without _any_ parameter keeps the traditional
         behaviour.  It commits the current index.
      
         We commit the whole index even when this form is run from a
         subdirectory.
      
       - "git commit --include paths..." (or "git commit -i paths...")
         is equivalent to:
      
         	git update-index --remove paths...
              git commit
      
       - "git commit paths..." acquires a new semantics.  This is an
         incompatible change that needs user training, which I am
         still a bit reluctant to swallow, but enough people seem to
         have complained that it is confusing to them.  It
      
         1. refuses to run if $GIT_DIR/MERGE_HEAD exists, and reminds
            trained git users that the traditional semantics now needs
            -i flag.
      
         2. refuses to run if named paths... are different in HEAD and
            the index (ditto about reminding).  Added paths are OK.
      
         3. reads HEAD commit into a temporary index file.
      
         4. updates named paths... from the working tree in this
            temporary index.
      
         5. does the same updates of the paths... from the working
            tree to the real index.
      
         6. makes a commit using the temporary index that has the
            current HEAD as the parent, and updates the HEAD with this
            new commit.
      
       - "git commit --all" can run from a subdirectory, but it updates
         the index with all the modified files and does a whole tree
         commit.
      
       - In all cases, when the command decides not to create a new
         commit, the index is left as it was before the command is
         run.  This means that the two "git diff" in the following
         sequence:
      
             $ git diff
             $ git commit -a
             $ git diff
      
         would show the same diff if you abort the commit process by
         making the commit log message empty.
      
      This commit also introduces much requested --author option.
      
      	$ git commit --author 'A U Thor <author@example.com>'
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      130fcca6
    • J
      git-rerere: reuse recorded resolve. · 8389b52b
      Junio C Hamano 提交于
      In a workflow that employs relatively long lived topic branches,
      the developer sometimes needs to resolve the same conflict over
      and over again until the topic branches are done (either merged
      to the "release" branch, or sent out and accepted upstream).
      
      This commit introduces a new command, "git rerere", to help this
      process by recording the conflicted automerge results and
      corresponding hand-resolve results on the initial manual merge,
      and later by noticing the same conflicted automerge and applying
      the previously recorded hand resolution using three-way merge.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      8389b52b
    • J
      fmt-merge-msg: show summary of what is merged. · 1cb30387
      Junio C Hamano 提交于
      In addition to the branch names, populate the log message with
      one-line description from actual commits that are being merged.
      
      This was prompted by Len's 12-way octopus.  You need to have
      'merge.summary' in the configuration file to enable it:
      
      	$ git repo-config merge.summary yes
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      1cb30387
    • J
      read-tree --aggressive · 1b1fdf8c
      Junio C Hamano 提交于
      A new flag --aggressive resolves what we traditionally resolved
      with external git-merge-one-file inside index while read-tree
      3-way merge works.
      
      git-merge-octopus and git-merge-resolve use this flag before
      running git-merge-index with git-merge-one-file.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      1b1fdf8c
    • J
      [PATCH] mailinfo: reset CTE after each multipart · 8bc5c04a
      Junio C Hamano 提交于
      If the first part uses quoted-printable to protect iso8859-1
      name in the commit log, and the second part was plain ascii text
      patchfile without even Content-Transfer-Encoding subheader, we
      incorrectly tried to decode the patch as quoted printable.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      8bc5c04a
    • J
      Docs: minor git-push copyediting · cc55aaec
      J. Bruce Fields 提交于
      Minor git-push copyediting
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      cc55aaec
    • J
      Docs: move git url and remotes text to separate sections · 85a97d4e
      J. Bruce Fields 提交于
      The sections on git urls and remotes files in the git-fetch,
      git-pull, and git-push manpages seem long enough to be worth a
      manpage section of their own.
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      85a97d4e
    • J
      Docs: split up pull-fetch-param.txt · 3598a308
      J. Bruce Fields 提交于
      The push and pull man pages include a bunch of shared text from
      pull-fetch-param.txt.  This simplifies maintenance somewhat, but
      there's actually quite a bit of text that applies only to one or the
      other.
      
      So, separate out the push- and pull/fetch-specific text into
      pull-fetch-param.txt and git-push.txt, then include the largest chunk
      of common stuff (the description of protocols and url's) from
      urls.txt.  That cuts some irrelevant stuff from the man pages without
      making us duplicate too much.
      Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      3598a308