1. 30 5月, 2006 2 次提交
    • P
      Make git-diff-tree indicate when it flushes · e0c97ca6
      Paul Mackerras 提交于
      There are times when gitk needs to know that the commits it has sent
      to git-diff-tree --stdin did not match, and it needs to know in a
      timely fashion even if none of them match.  At the moment,
      git-diff-tree outputs nothing for non-matching commits, so it is
      impossible for gitk to distinguish between git-diff-tree being slow
      and git-diff-tree saying no.
      
      This makes git-diff-tree flush its output and echo back the
      input line when it is not a valid-looking object name.  Gitk, or
      other users of git-diff-tree --stdin, can use a blank line or
      any other "marker line" to indicate that git-diff-tree has
      processed all the commits on its input up to the echoed back
      marker line, and any commits that have not been output do not
      match.
      
      [jc: re-done after a couple of back-and-forth discussion on the list.]
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      e0c97ca6
    • S
      Remove unnecessary output from t3600-rm. · 22669a04
      Shawn Pearce 提交于
      Moved the setup commands into test_expect_success blocks so their
      output is hidden unless -v is used.  This makes the test suite look
      a little cleaner when the rm test-file setup step fails (and was
      expected to fail for most cases).
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      22669a04
  2. 29 5月, 2006 18 次提交
    • J
      Merge branch 'lt/apply' · cd01d944
      Junio C Hamano 提交于
      * lt/apply:
        apply: force matching at the beginning.
        Add a test-case for git-apply trying to add an ending line
        apply: treat EOF as proper context.
      cd01d944
    • J
      Merge branch 'jc/cache-tree' · 3f69d405
      Junio C Hamano 提交于
      * jc/cache-tree: (26 commits)
        builtin-rm: squelch compiler warnings.
        git-write-tree writes garbage on sparc64
        Fix crash when reading the empty tree
        fsck-objects: do not segfault on missing tree in cache-tree
        cache-tree: a bit more debugging support.
        read-tree: invalidate cache-tree entry when a new index entry is added.
        Fix test-dump-cache-tree in one-tree disappeared case.
        fsck-objects: mark objects reachable from cache-tree
        cache-tree: replace a sscanf() by two strtol() calls
        cache-tree.c: typefix
        test-dump-cache-tree: validate the cached data as well.
        cache_tree_update: give an option to update cache-tree only.
        read-tree: teach 1-way merege and plain read to prime cache-tree.
        read-tree: teach 1 and 2 way merges about cache-tree.
        update-index: when --unresolve, smudge the relevant cache-tree entries.
        test-dump-cache-tree: report number of subtrees.
        cache-tree: sort the subtree entries.
        Teach fsck-objects about cache-tree.
        index: make the index file format extensible.
        cache-tree: protect against "git prune".
        ...
      
      Conflicts:
      
      	Makefile, builtin.h, git.c: resolved the same way as in next.
      3f69d405
    • J
      Merge branch 'jc/dirwalk-n-cache-tree' into jc/cache-tree · 7d555619
      Junio C Hamano 提交于
      * jc/dirwalk-n-cache-tree: (212 commits)
        builtin-rm: squelch compiler warnings.
        Add builtin "git rm" command
        Move pathspec matching from builtin-add.c into dir.c
        Prevent bogus paths from being added to the index.
        builtin-add: fix unmatched pathspec warnings.
        Remove old "git-add.sh" remnants
        builtin-add: warn on unmatched pathspecs
        Do "git add" as a builtin
        Clean up git-ls-file directory walking library interface
        libify git-ls-files directory traversal
        Add a conversion tool to migrate remote information into the config
        fetch, pull: ask config for remote information
        Fix build procedure for builtin-init-db
        read-tree -m -u: do not overwrite or remove untracked working tree files.
        apply --cached: do not check newly added file in the working tree
        Implement a --dry-run option to git-quiltimport
        Implement git-quiltimport
        Revert "builtin-grep: workaround for non GNU grep."
        builtin-grep: workaround for non GNU grep.
        builtin-grep: workaround for non GNU grep.
        ...
      7d555619
    • L
      Don't use "sscanf()" for tree mode scanning · 7d65848a
      Linus Torvalds 提交于
      Doing an oprofile run on the result of my git rev-list memory leak fixes
      and tree parsing cleanups, I was surprised by the third-highest entry
      being
      
      	samples  %        image name               app name                 symbol name
      	179751    2.7163  libc-2.4.so              libc-2.4.so              _IO_vfscanf@@GLIBC_2.4
      
      where that 2.7% is actually more than 5% of one CPU, because this was run
      on a dual CPU setup with the other CPU just being idle.
      
      That seems to all be from the use of 'sscanf(tree, "%o", &mode)' for the
      tree buffer parsing.
      
      So do the trivial octal parsing by hand, which also gives us where the
      first space in the string is (and thus where the pathname starts) so we
      can get rid of the "strchr(tree, ' ')" call too.
      
      This brings the "git rev-list --all --objects" time down from 63 seconds
      to 55 seconds on the historical kernel archive for me, so it's quite
      noticeable - tree parsing is a lot of what we end up doing when following
      all the objects.
      
      [ I also see a 5% speedup on a full "git fsck-objects" on the current
        kernel archive, so that sscanf() really does seem to have hurt our
        performance by a surprising amount ]
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      7d65848a
    • J
      git-fetch: avoid using "case ... in (arm)" · 878ccb26
      Junio C Hamano 提交于
      NetBSD ash chokes on the optional open parenthesis for case arms.  Inside
      $(command substitution), however, bash barfs without.  So adjust things
      accordingly.
      
      Originally pointed out by Dennis Stosberg.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      878ccb26
    • J
      Merge branch 'jc/mailinfo' · d177e584
      Junio C Hamano 提交于
      * jc/mailinfo:
        mailinfo: skip bogus UNIX From line inside body
      d177e584
    • J
      Merge branch 'eb/mailinfo' · 51937e53
      Junio C Hamano 提交于
      * eb/mailinfo:
        mailinfo: More carefully parse header lines in read_one_header_line()
        Allow in body headers beyond the in body header prefix.
        More accurately detect header lines in read_one_header_line
        In handle_body only read a line if we don't already have one.
        Refactor commit messge handling.
        Move B and Q decoding into check header.
        Make read_one_header_line return a flag not a length.
      51937e53
    • D
      git-write-tree writes garbage on sparc64 · ac58c7b1
      Dennis Stosberg 提交于
      In the "next" branch, write_index_ext_header() writes garbage on a
      64-bit big-endian machine; the written index file will be unreadable.
      I noticed this on NetBSD/sparc64. Reproducible with:
      
      $ git init-db
      $ :>file
      $ git-update-index --add file
      $ git-write-tree
      $ git-update-index
      error: index uses  extension, which we do not understand
      fatal: index file corrupt
      Signed-off-by: NDennis Stosberg <dennis@stosberg.net>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ac58c7b1
    • L
      Fix memory leak in "git rev-list --objects" · 91b452cb
      Linus Torvalds 提交于
      Martin Langhoff points out that "git repack -a" ends up using up a lot of
      memory for big archives, and that git cvsimport probably should do only
      incremental repacks in order to avoid having repacking flush all the
      caches.
      
      The big majority of the memory usage of repacking is from git rev-list
      tracking all objects, and this patch should go a long way in avoiding the
      excessive memory usage: the bulk of it was due to the object names being
      leaked from the tree parser.
      
      For the historic Linux kernel archive, this simple patch does:
      
      Before:
      	/usr/bin/time git-rev-list --all --objects > /dev/null
      
      	72.45user 0.82system 1:13.55elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
      	0inputs+0outputs (0major+125376minor)pagefaults 0swaps
      
      After:
      	/usr/bin/time git-rev-list --all --objects > /dev/null
      
      	75.22user 0.48system 1:16.34elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
      	0inputs+0outputs (0major+43921minor)pagefaults 0swaps
      
      where we do end up wasting a bit of time on some extra strdup()s (which
      could be avoided, but that would require tracking where the pathnames came
      from), but we avoid a lot of memory usage.
      
      Minor page faults track maximum RSS very closely (each page fault maps in
      one page into memory), so the reduction from 125376 page faults to 43921
      means a rough reduction of VM footprint from almost half a gigabyte to
      about a third of that. Those numbers were also double-checked by looking
      at "top" while the process was running.
      
      (Side note: at least part of the remaining VM footprint is the mapping of
      the 177MB pack-file, so the remaining memory use is at least partly "well
      behaved" from a project caching perspective).
      
      For the current git archive itself, the memory usage for a "--all
      --objects" rev-list invocation dropped from 7128 pages to 2318 (27MB to
      9MB), so the reduction seems to hold for much smaller projects too.
      
      For regular "git-rev-list" usage (ie without the "--objects" flag) this
      patch has no impact.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      91b452cb
    • A
      75694435
    • A
      gitview: Add key binding for F5. · 03401639
      Aneesh Kumar K.V 提交于
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      03401639
    • J
      a57c8bac
    • Y
      Make cvsexportcommit create parent directories as needed. · 3f0f756b
      Yann Dirson 提交于
      This is a quick port of my initial patch for 1.0.7, that I had forgotten to
      post.  Possibly needs some testing before applying to master.
      Signed-off-by: NYann Dirson <ydirson@altern.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      3f0f756b
    • Y
      Document current cvsexportcommit limitations. · 0d71b31a
      Yann Dirson 提交于
      Since there is no bugtracker that I know of, let's just use the scripts
      themselves to document their limitations.
      Signed-off-by: NYann Dirson <ydirson@altern.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      0d71b31a
    • Y
      Do not call 'cmp' with non-existant -q flag. · ff4a9ceb
      Yann Dirson 提交于
      I cannot find when that flag was removed if it ever existed, I can find
      nothing about it in the ChangeLog and NEWS file of GNU diff.  The current
      flag is -s aka --quiet aka --silent, so let's use -s, assuming it is a
      portable flag.  Feel free to lart me with a POSIX bible if needed.
      Signed-off-by: NYann Dirson <ydirson@altern.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ff4a9ceb
    • L
      Fix "--abbrev=xyz" for revision listing · 508d9e37
      Linus Torvalds 提交于
      The revision argument parsing was happily parsing "--abbrev", but it
      didn't parse "--abbrev=<n>".
      
      Which was hidden by the fact that the diff options _would_ parse
      --abbrev=<n>, so it would actually silently parse it, it just
      wouldn't use it for the same things that a plain "--abbrev" was
      used for.
      
      Which seems a bit insane.
      
      With this patch, if you do "git log --abbrev=10" it will abbreviate the
      merge parent commit ID's to ten hex characters, which was probably what
      you expected.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      508d9e37
    • L
      t1002: use -U0 instead of --unified=0 · c928c67d
      Linus Torvalds 提交于
      Using "-U0" is definitely more portable than using "--unified=0",
      so we should do that regardless.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      c928c67d
    • J
      format-patch: -n and -k are mutually exclusive. · 63b398a4
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      63b398a4
  3. 27 5月, 2006 2 次提交
  4. 26 5月, 2006 6 次提交
    • M
      Add instructions to commit template. · 88a15314
      Martin Waitz 提交于
      New users can be irritated by the git status text in their editor.
      Let's give them a short help.
      Signed-off-by: NMartin Waitz <tali@admingilde.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      88a15314
    • J
      mailinfo: More carefully parse header lines in read_one_header_line() · ef29c117
      Junio C Hamano 提交于
      We exited prematurely from header parsing loop when the header
      field did not have a space after the colon but we insisted on
      it, and we got the check wrong because we forgot that we strip
      the trailing whitespace before we do the check.
      
      The space after the colon is not even required by RFC2822, so
      stop requiring it.  While we are at it, the header line is
      specified to be more strict than "anything with a colon in it"
      (there must be one or more characters before the colon, and they
      must not be controls, SP or non US-ASCII), so implement that
      check as well, lest we mistakenly think something like:
      
      	Bogus not a header line: this is not.
      
      as a header line.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ef29c117
    • J
      git-format-patch --start-number <n> · fa0f02df
      Johannes Schindelin 提交于
      Since the "a..b c..d" syntax is interpreted as "b ^a d ^c" as other
      range-ish commands, if you want to format a..b and then c..d and end
      up with files consecutively numbered, the second run needs to be able
      to tell the command what number to start from.
      
      This does not imply --numbered (which gives [PATCH n/m] to the subject).
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      fa0f02df
    • J
      Don't write directly to a make target ($@). · fc36f6a6
      Jim Meyering 提交于
      Otherwise, if make is suspended, or killed with prejudice, or if the
      system crashes, you could be left with an up-to-date, yet corrupt,
      generated file.
      
      I left off the `clean' addition, because I believe "make clean" should
      not remove wildcard patterns like "*+", on the off-chance that someone
      uses names like that for files they care about.  Besides, in practice,
      those temporary files are left behind so rarely that they're not a bother,
      and they're removed again as part of the next build.
      
      [jc: sign-off?]
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      fc36f6a6
    • L
      bogus "fatal: Not a git repository" · 4d599e6b
      Linus Torvalds 提交于
      I was just testing that "git ls-remote" change by Junio, and when you're
      not in a git repository, it gives this totally bogus warning. The _target_
      obviously has to be a git repository, but there's no reason why you'd have
      to be in a local git repo when doing an ls-remote.
      
      The reason is commit 73136b2e by Dscho: it
      adds calls to git-repo-config in git-parse-remote.sh to get the remote
      shorthands etc.
      
      Now, either we should just hide and ignore the error from git-repo-config
      (probably bad, because some errors _are_ valid - like git-repo-config
      failing due to bad syntax in the config file), or we should just make
      git-repo-config quietly handle the case of not being in a git repository.
      
      This does the latter: just quietly accepting (and doing nothing - trying
      to set a value will result in the lock-file failing) our lot in life
      sounds better than dying with a bogus error message.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Acked-By: NJohannes Schindelin <Johannes.Schindelin@gmx.de>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      4d599e6b
    • M
      Documentation/Makefile: remove extra / · c5360324
      Martin Waitz 提交于
      As both DESTDIR and the prefix are supposed to be absolute pathnames
      they can simply be concatenated without an extra / (like in the main Makefile).
      The extra slash may even break installation on Windows.
      
      [jc: adjusted an earlier workaround for this problem in the dist-doc
       target in the main Makefile as well. ]
      Signed-off-by: NMartin Waitz <tali@admingilde.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      c5360324
  5. 25 5月, 2006 12 次提交
    • J
      cvsimport: avoid "use" with :tag · e49289df
      Jeff King 提交于
      Avoid "use POSIX qw(strftime dup2 :errno_h)"; it was reported
      that a Perl installations on Mandrake 9.1 did not like it, even
      though it understood "use POSIX qw(:errno_h)".  Funny.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      e49289df
    • J
      cat-file: document -p option · ed90cbf5
      Jeff King 提交于
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ed90cbf5
    • S
      Built git-upload-tar should be ignored. · 4acdeafe
      Shawn Pearce 提交于
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      4acdeafe
    • J
      ls-remote: fix rsync:// to report HEAD · e686eba4
      Junio C Hamano 提交于
      This prevented recent git-clone from checking out the working
      tree files in the cloned repository.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      e686eba4
    • J
      fetch.c: remove an unused variable and dead code. · 84c667ff
      Junio C Hamano 提交于
      Funnily enough, this variable was never assigned ever since it
      was introduced, and has been protecting some code that has never
      been executed.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      84c667ff
    • J
      Merge branch 'master' into lt/apply · 4868f372
      Junio C Hamano 提交于
      * master: (40 commits)
        Clean up sha1 file writing
        Builtin git-cat-file
        builtin format-patch: squelch content-type for 7-bit ASCII
        CMIT_FMT_EMAIL: Q-encode Subject: and display-name part of From: fields.
        add more informative error messages to git-mktag
        remove the artificial restriction tagsize < 8kb
        git-rebase: use canonical A..B syntax to format-patch
        git-format-patch: now built-in.
        fmt-patch: Support --attach
        fmt-patch: understand old <his> notation
        Teach fmt-patch about --keep-subject
        Teach fmt-patch about --numbered
        fmt-patch: implement -o <dir>
        fmt-patch: output file names to stdout
        Teach fmt-patch to write individual files.
        Use RFC2822 dates from "git fmt-patch".
        git-fmt-patch: thinkofix to show [PATCH] properly.
        rename internal format-patch wip
        Minor tweak on subject line in --pretty=email
        Tentative built-in format-patch.
        ...
      4868f372
    • L
      Clean up sha1 file writing · 4d548150
      Linus Torvalds 提交于
      This cleans up and future-proofs the sha1 file writing in sha1_file.c.
      
      In particular, instead of doing a simple "write()" call and just verifying
      that it succeeds (or - as in one place - just assuming it does), it uses
      "write_buffer()" to write data to the file descriptor while correctly
      checking for partial writes, EINTR etc.
      
      It also splits up write_sha1_to_fd() to be a lot more readable: if we need
      to re-create the compressed object, we do so in a separate helper
      function, making the logic a whole lot more modular and obvious.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      4d548150
    • T
      Builtin git-cat-file · f81daefe
      Timo Hirvonen 提交于
      Signed-off-by: NTimo Hirvonen <tihirvon@gmail.com>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      f81daefe
    • J
      apply: force matching at the beginning. · 65aadb92
      Junio C Hamano 提交于
      When there is no leading context, the patch must match at the
      beginning of preimage; otherwise there is a "patch adds these
      lines while the other lines were added to the original file"
      conflict.
      
      This is the opposite of match_end fix earlier in this series.
      Unlike matching at the end case, we can additionally check the
      preimage line number recorded in the patch, so the change is not
      symmetrical with the earlier one.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      65aadb92
    • J
      Merge branch 'jc/fmt-patch' · d48f7168
      Junio C Hamano 提交于
      * jc/fmt-patch:
        builtin format-patch: squelch content-type for 7-bit ASCII
        CMIT_FMT_EMAIL: Q-encode Subject: and display-name part of From: fields.
      d48f7168
    • J
      Merge branch 'be/tag' · a861b58b
      Junio C Hamano 提交于
      * be/tag:
        add more informative error messages to git-mktag
        remove the artificial restriction tagsize < 8kb
      a861b58b
    • J
      Merge branch 'js/fmt-patch' · 73f0a157
      Junio C Hamano 提交于
      This makes "git format-patch" a built-in.
      
      * js/fmt-patch:
        git-rebase: use canonical A..B syntax to format-patch
        git-format-patch: now built-in.
        fmt-patch: Support --attach
        fmt-patch: understand old <his> notation
        Teach fmt-patch about --keep-subject
        Teach fmt-patch about --numbered
        fmt-patch: implement -o <dir>
        fmt-patch: output file names to stdout
        Teach fmt-patch to write individual files.
        Use RFC2822 dates from "git fmt-patch".
        git-fmt-patch: thinkofix to show [PATCH] properly.
        rename internal format-patch wip
        Minor tweak on subject line in --pretty=email
        Tentative built-in format-patch.
      73f0a157