1. 11 9月, 2007 4 次提交
    • P
      Rework pretty_print_commit to use strbufs instead of custom buffers. · 674d1727
      Pierre Habouzit 提交于
        Also remove the "len" parameter, as:
        (1) it was used as a max boundary, and every caller used ~0u
        (2) we check for final NUL no matter what, so it doesn't help for speed.
      
        As a result most of the pp_* function takes 3 arguments less, and we need
      a lot less local variables, this makes the code way more readable, and
      easier to extend if needed.
      
        This patch also fixes some spacing and cosmetic issues.
      
        This patch also fixes (as a side effect) a memory leak intoruced in
      builtin-archive.c at commit df4a394f (fmt was xmalloc'ed and not free'd)
      Signed-off-by: NPierre Habouzit <madcoder@debian.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      674d1727
    • P
      Change semantics of interpolate to work like snprintf. · 4acfd1b7
      Pierre Habouzit 提交于
        Also fix many off-by-ones and a useless memset.
      Signed-off-by: NPierre Habouzit <madcoder@debian.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      4acfd1b7
    • P
      Strbuf API extensions and fixes. · f1696ee3
      Pierre Habouzit 提交于
        * Add strbuf_rtrim to remove trailing spaces.
        * Add strbuf_insert to insert data at a given position.
        * Off-by one fix in strbuf_addf: strbuf_avail() does not counts the final
          \0 so the overflow test for snprintf is the strict comparison. This is
          not critical as the growth mechanism chosen will always allocate _more_
          memory than asked, so the second test will not fail. It's some kind of
          miracle though.
        * Add size extension hints for strbuf_init and strbuf_read. If 0, default
          applies, else:
            + initial buffer has the given size for strbuf_init.
            + first growth checks it has at least this size rather than the
              default 8192.
      Signed-off-by: NPierre Habouzit <madcoder@debian.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      f1696ee3
    • J
      Merge branch 'master' into ph/strbuf · ddb95de3
      Junio C Hamano 提交于
      * master:
        archive - leakfix for format_subst()
        Make --no-thin the default in git-push to save server resources
        fix doc for --compression argument to pack-objects
        git-tag -s must fail if gpg cannot sign the tag.
        git-svn: understand grafts when doing dcommit
        git-diff: don't squelch the new SHA1 in submodule diffs
        Define NO_MEMMEM on Darwin as it lacks the function
        git-svn: fix "Malformed network data" with svn:// servers
        (cvs|svn)import: Ask git-tag to overwrite old tags.
        git-rebase: fix -C option
        git-rebase: support --whitespace=<option>
        Documentation / grammer nit
        archive: rename attribute specfile to export-subst
        archive: specfile syntax change: "$Format:%PLCHLDR$" instead of just "%PLCHLDR" (take 2)
        add memmem()
        Remove unused function convert_sha1_file()
        archive: specfile support (--pretty=format: in archive files)
        Export format_commit_message()
      ddb95de3
  2. 10 9月, 2007 6 次提交
    • J
      Merge branch 'rs/archive' · 6972ab7a
      Junio C Hamano 提交于
      * rs/archive:
        archive - leakfix for format_subst()
        Define NO_MEMMEM on Darwin as it lacks the function
        archive: rename attribute specfile to export-subst
        archive: specfile syntax change: "$Format:%PLCHLDR$" instead of just "%PLCHLDR" (take 2)
        add memmem()
        Remove unused function convert_sha1_file()
        archive: specfile support (--pretty=format: in archive files)
        Export format_commit_message()
      6972ab7a
    • J
      archive - leakfix for format_subst() · 20fbfd86
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      20fbfd86
    • J
      Merge branch 'sp/maint-no-thin' · 9784c5c5
      Junio C Hamano 提交于
      * sp/maint-no-thin:
        Make --no-thin the default in git-push to save server resources
        fix doc for --compression argument to pack-objects
        git-tag -s must fail if gpg cannot sign the tag.
      9784c5c5
    • S
      Make --no-thin the default in git-push to save server resources · a4503a15
      Shawn O. Pearce 提交于
      1) pushes happen less often than fetches, so the bandwidth saving is
         much less visible in that case overall.
      
      2) thin packs have to be complemented with missing delta bases to be
         valid, so many received thin packs will take more disk space.
      
      3) the bother of repacking should be distributed amongst "clients"
         i.e. fetchers and pushers as much as possible, and not the server
         being fetched or pushed, to keep disk and CPU usage low on the
         server.
      
      This is why a fetch should get thin packs but a push should not.
      
      Both Nico and I have been assuming that --no-thin was the default
      behavior of git-push ever since Nico introduced --fix-thin into the
      index-pack process, which allowed fetch and receive-pack to avoid
      exploding packfiles received during transfer.  This patch finally
      makes it so.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      a4503a15
    • N
      fix doc for --compression argument to pack-objects · 05cc2ffc
      Nicolas Pitre 提交于
      Remove obsolete details (core.legacyheaders is always true now).
      Signed-off-by: NNicolas Pitre <nico@cam.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      05cc2ffc
    • C
      git-tag -s must fail if gpg cannot sign the tag. · aba91192
      Carlos Rica 提交于
      Most of this patch code and message was written by Shawn O. Pearce.
      I made some tests to know what the problem was, and then I changed
      the code related with the SIGPIPE signal.
      
      If the user has misconfigured `user.signingkey` in their .git/config
      or just doesn't have any secret keys on their keyring and they ask
      for a signed tag with `git tag -s` we better make sure the resulting
      tag was actually signed by gpg.
      
      Prior versions of builtin git-tag allowed this failure to slip
      by without error as they were not checking the return value of
      the finish_command() so they did not notice when gpg exited with
      an error exit status.  They also did not fail if gpg produced an
      empty output or if read_in_full received an error from the read
      system call while trying to read the pipe back from gpg.
      
      Finally, we did not actually honor any return value from the do_sign
      function as it returns ssize_t but was being stored into an unsigned
      long.  This caused the compiler to optimize out the die condition,
      allowing git-tag to continue along and create the tag object.
      
      However, when gpg gets a wrong username, it exits before any read was done
      and then the writing process receives SIGPIPE and program is terminated.
      By ignoring this signal, anyway, the function write_or_die gets EPIPE from
      write_in_full and exits returning 0 to the system without a message.
      Here we better call to write_in_full directly so we can fail
      printing a message and return safely to the caller.
      
      With these issues fixed `git-tag -s` will now fail to create the
      tag and will report a non-zero exit status to its caller, thereby
      allowing automated helper scripts to detect (and recover from)
      failure if gpg is not working properly.
      Proposed-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NCarlos Rica <jasampler@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      aba91192
  3. 09 9月, 2007 4 次提交
  4. 08 9月, 2007 5 次提交
  5. 07 9月, 2007 10 次提交
  6. 06 9月, 2007 9 次提交
    • J
      Merge branch 'master' of git://repo.or.cz/git/git-p4 · b5ef6ac9
      Junio C Hamano 提交于
      * 'master' of git://repo.or.cz/git/git-p4:
        git-p4: Added support for automatically importing newly appearing perforce branches.
        git-p4: Cleanup; moved the (duplicated) code for turning a branch into a git ref (for example foo -> refs/remotes/p4/<project>/foo) into a separate method.
        git-p4: Cleanup; moved the code for the initial #head or revision import into a separate function, out of P4Sync.run.
        git-p4: Cleanup; Turn self.revision into a function local variable (it's not used anywhere outside the function).
        git-p4: Cleanup; moved the code to import a list of p4 changes using fast-import into a separate member function of P4Sync.
        git-p4: Cleanup; moved the code for getting a sorted list of p4 changes for a list of given depot paths into a standalone method.
        git-p4: After submission to p4 always synchronize from p4 again (into refs/remotes). Whether to rebase HEAD or not is still left as question to the end-user.
        git-p4: Always call 'p4 sync ...' before submitting to Perforce.
      b5ef6ac9
    • J
      Merge branch 'maint' · 7e2e69b7
      Junio C Hamano 提交于
      * maint:
        Include a git-push example for creating a remote branch
        Cleanup unnecessary file modifications in t1400-update-ref
        Makefile: Add cache-tree.h to the headers list
        Don't allow contrib/workdir/git-new-workdir to trash existing dirs
        git-apply: do not read past the end of buffer
      7e2e69b7
    • S
      Include a git-push example for creating a remote branch · 4e560158
      Shawn O. Pearce 提交于
      Many users get confused when `git push origin master:foo` works
      when foo already exists on the remote repository but are confused
      when foo doesn't exist as a branch and this form does not create
      the branch foo.
      
      This new example highlights the trick of including refs/heads/
      in front of the desired branch name to create a branch.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      4e560158
    • S
      Cleanup unnecessary file modifications in t1400-update-ref · 432e93a1
      Shawn O. Pearce 提交于
      Kristian Høgsberg pointed out that the two file modifications
      we were doing during the 'creating initial files' step are not even
      used within the test suite.  This was actually confusing as we do
      not even need these changes for the tests to pass.  All that really
      matters here is the specific commit dates are used so that these
      appear in the branch's reflog, and that the dates are different so
      that the branch will update when asked and the reflog entry is
      also updated.  There is no need for the file modification.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      432e93a1
    • D
      Makefile: Add cache-tree.h to the headers list · 6b1b40d9
      Dmitry V. Levin 提交于
      The dependency was missing.
      Signed-off-by: NDmitry V. Levin <ldv@altlinux.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      6b1b40d9
    • S
      Don't allow contrib/workdir/git-new-workdir to trash existing dirs · ea09ea22
      Shawn O. Pearce 提交于
      Recently I found that doing a sequence like the following:
      
        git-new-workdir a b
        ...
        git-new-workdir a b
      
      by accident will cause a (and now also b) to have an infinite cycle
      in its refs directory.  This is caused by git-new-workdir trying
      to create the "refs" symlink over again, only during the second
      time it is being created within a's refs directory and is now also
      pointing back at a's refs.
      
      This causes confusion in git as suddenly branches are named things
      like "refs/refs/refs/refs/refs/refs/refs/heads/foo" instead of the
      more commonly accepted "refs/heads/foo".  Plenty of commands start
      to see ambiguous ref names and others just take ages to compute.
      
      git-clone has the same safety check, so git-new-workdir should
      behave just like it.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      ea09ea22
    • J
      git-apply: do not read past the end of buffer · 6b763c42
      Junio C Hamano 提交于
      When the preimage we are patching is shorter than what the patch
      text expects, we tried to match the buffer contents at the
      "original" line with the fragment in full, without checking we
      have enough data to match in the preimage.  This caused the size
      of a later memmove() to wrap around and attempt to scribble
      almost the entire address space.  Not good.
      
      The code that follows the part this patch touches tries to match
      the fragment with line offsets.  Curiously, that code does not
      have the problem --- it guards against reading past the end of
      the preimage.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      6b763c42
    • J
      Merge branch 'ds/sendmail' · ad00a3b8
      Junio C Hamano 提交于
      * ds/sendmail:
        send-email: Add support for SSL and SMTP-AUTH
      ad00a3b8
    • C
      Function for updating refs. · 3d9f037c
      Carlos Rica 提交于
      A function intended to be called from builtins updating refs
      by locking them before write, specially those that came from
      scripts using "git update-ref".
      
      [jc: with minor fixups]
      Signed-off-by: NCarlos Rica <jasampler@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      3d9f037c
  7. 04 9月, 2007 2 次提交