1. 12 8月, 2015 1 次提交
  2. 27 6月, 2015 1 次提交
    • J
      read_gitfile_gently: fix use-after-free · 38ae8784
      Jeff King 提交于
      The "dir" variable is a pointer into the "buf" array. When
      we hit the cleanup_return path, the first thing we do is
      free(buf); but one of the error messages prints "dir", which
      will access the memory after the free.
      
      We can fix this by reorganizing the error path a little. We
      act on the fatal, error-printing conditions first, as they
      want to access memory and do not care about freeing. Then we
      free any memory, and finally return.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      38ae8784
  3. 16 6月, 2015 4 次提交
    • E
      clean: improve performance when removing lots of directories · 0179ca7a
      Erik Elfström 提交于
      "git clean" uses resolve_gitlink_ref() to check for the presence of
      nested git repositories, but it has the drawback of creating a
      ref_cache entry for every directory that should potentially be
      cleaned. The linear search through the ref_cache list causes a massive
      performance hit for large number of directories.
      
      Modify clean.c:remove_dirs to use setup.c:is_git_directory and
      setup.c:read_gitfile_gently instead.
      
      Both these functions will open files and parse contents when they find
      something that looks like a git repository. This is ok from a
      performance standpoint since finding repository candidates should be
      comparatively rare.
      
      Using is_git_directory and read_gitfile_gently should give a more
      standardized check for what is and what isn't a git repository but
      also gives three behavioral changes.
      
      The first change is that we will now detect and avoid cleaning empty
      nested git repositories (only init run). This is desirable.
      
      Second, we will no longer die when cleaning a file named ".git" with
      garbage content (it will be cleaned instead). This is also desirable.
      
      The last change is that we will detect and avoid cleaning empty bare
      repositories that have been placed in a directory named ".git". This
      is not desirable but should have no real user impact since we already
      fail to clean non-empty bare repositories in the same scenario. This
      is thus deemed acceptable.
      
      On top of this we add some extra precautions. If read_gitfile_gently
      fails to open the git file, read the git file or verify the path in
      the git file we assume that the path with the git file is a valid
      repository and avoid cleaning.
      
      Update t7300 to reflect these changes in behavior.
      
      The time to clean an untracked directory containing 100000 sub
      directories went from 61s to 1.7s after this change.
      Helped-by: NJeff King <peff@peff.net>
      Signed-off-by: NErik Elfström <erik.elfstrom@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0179ca7a
    • E
      p7300: add performance tests for clean · f49a5650
      Erik Elfström 提交于
      The tests are run in dry-run mode to avoid having to restore the test
      directories for each timed iteration. Using dry-run is an acceptable
      compromise since we are mostly interested in the initial computation
      of what to clean and not so much in the cleaning it self.
      Signed-off-by: NErik Elfström <erik.elfstrom@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      f49a5650
    • E
    • E
      setup: sanity check file size in read_gitfile_gently · 921bdd96
      Erik Elfström 提交于
      read_gitfile_gently will allocate a buffer to fit the entire file that
      should be read. Add a sanity check of the file size before opening to
      avoid allocating a potentially huge amount of memory if we come across
      a large file that someone happened to name ".git". The limit is set to
      a sufficiently unreasonable size that should never be exceeded by a
      genuine .git file.
      Signed-off-by: NErik Elfström <erik.elfstrom@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      921bdd96
  4. 10 6月, 2015 1 次提交
  5. 06 6月, 2015 31 次提交
    • J
      Sync with 2.4.3 · 7974889a
      Junio C Hamano 提交于
      7974889a
    • J
      Git 2.4.3 · 69f9a6e5
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      69f9a6e5
    • J
      The first half of the seventh batch for 2.5 · f1673dc4
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      f1673dc4
    • J
      Merge branch 'ld/p4-editor-multi-words' · 9fb0a798
      Junio C Hamano 提交于
      Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the
      command and initial options (e.g. "/path/to/emacs -nw"), 'git p4'
      did not let the shell interpolate the contents of the environment
      variable that name the editor "$P4EDITOR" (and "$EDITOR", too).
      Make it in line with the rest of Git, as well as with Perforce.
      
      * ld/p4-editor-multi-words:
        git-p4: tests: use test-chmtime in place of touch
        git-p4: fix handling of multi-word P4EDITOR
        git-p4: add failing test for P4EDITOR handling
      9fb0a798
    • J
      Merge branch 'bc/object-id' · 5455ee05
      Junio C Hamano 提交于
      for_each_ref() callback functions were taught to name the objects
      not with "unsigned char sha1[20]" but with "struct object_id".
      
      * bc/object-id: (56 commits)
        struct ref_lock: convert old_sha1 member to object_id
        warn_if_dangling_symref(): convert local variable "junk" to object_id
        each_ref_fn_adapter(): remove adapter
        rev_list_insert_ref(): remove unneeded arguments
        rev_list_insert_ref_oid(): new function, taking an object_oid
        mark_complete(): remove unneeded arguments
        mark_complete_oid(): new function, taking an object_oid
        clear_marks(): rewrite to take an object_id argument
        mark_complete(): rewrite to take an object_id argument
        send_ref(): convert local variable "peeled" to object_id
        upload-pack: rewrite functions to take object_id arguments
        find_symref(): convert local variable "unused" to object_id
        find_symref(): rewrite to take an object_id argument
        write_one_ref(): rewrite to take an object_id argument
        write_refs_to_temp_dir(): convert local variable sha1 to object_id
        submodule: rewrite to take an object_id argument
        shallow: rewrite functions to take object_id arguments
        handle_one_ref(): rewrite to take an object_id argument
        add_info_ref(): rewrite to take an object_id argument
        handle_one_reflog(): rewrite to take an object_id argument
        ...
      5455ee05
    • J
      Merge branch 'jk/at-push-sha1' · c4a8354b
      Junio C Hamano 提交于
      Introduce <branch>@{push} short-hand to denote the remote-tracking
      branch that tracks the branch at the remote the <branch> would be
      pushed to.
      
      * jk/at-push-sha1:
        for-each-ref: accept "%(push)" format
        for-each-ref: use skip_prefix instead of starts_with
        sha1_name: implement @{push} shorthand
        sha1_name: refactor interpret_upstream_mark
        sha1_name: refactor upstream_mark
        remote.c: add branch_get_push
        remote.c: return upstream name from stat_tracking_info
        remote.c: untangle error logic in branch_get_upstream
        remote.c: report specific errors from branch_get_upstream
        remote.c: introduce branch_get_upstream helper
        remote.c: hoist read_config into remote_get_1
        remote.c: provide per-branch pushremote name
        remote.c: hoist branch.*.remote lookup out of remote_get_1
        remote.c: drop "remote" pointer from "struct branch"
        remote.c: refactor setup of branch->merge list
        remote.c: drop default_remote_name variable
      c4a8354b
    • J
      Merge branch 'dl/branch-error-message' into maint · cbac7067
      Junio C Hamano 提交于
      Error messages from "git branch" called remote-tracking branches as
      "remote branches".
      
      * dl/branch-error-message:
        branch: do not call a "remote-tracking branch" a "remote branch"
      cbac7067
    • J
      Merge branch 'jk/skip-http-tests-under-no-curl' into maint · c538004c
      Junio C Hamano 提交于
      Test clean-up.
      
      * jk/skip-http-tests-under-no-curl:
        tests: skip dav http-push tests under NO_EXPAT=NoThanks
        t/lib-httpd.sh: skip tests if NO_CURL is defined
      c538004c
    • J
      Merge branch 'ps/doc-packfile-vs-pack-file' into maint · e41f8d98
      Junio C Hamano 提交于
      Doc consistency updates.
      
      * ps/doc-packfile-vs-pack-file:
        doc: fix inconsistent spelling of "packfile"
        pack-protocol.txt: fix insconsistent spelling of "packfile"
        git-unpack-objects.txt: fix inconsistent spelling of "packfile"
        git-verify-pack.txt: fix inconsistent spelling of "packfile"
      e41f8d98
    • J
      Merge branch 'fg/document-commit-message-stripping' into maint · 48feda58
      Junio C Hamano 提交于
      * fg/document-commit-message-stripping:
        Documentation: clarify how "git commit" cleans up the edited log message
      48feda58
    • J
      Merge branch 'jk/rerere-forget-check-enabled' into maint · 5c2e6549
      Junio C Hamano 提交于
      "git rerere forget" in a repository without rerere enabled gave a
      cryptic error message; it should be a silent no-op instead.
      
      * jk/rerere-forget-check-enabled:
        rerere: exit silently on "forget" when rerere is disabled
      5c2e6549
    • J
      Merge branch 'pt/pull-log-n' into maint · 4cb9fe35
      Junio C Hamano 提交于
      "git pull --log" and "git pull --no-log" worked as expected, but
      "git pull --log=20" did not.
      
      * pt/pull-log-n:
        pull: handle --log=<n>
      4cb9fe35
    • J
      Merge branch 'pt/pull-ff-vs-merge-ff' into maint · 7e46f27f
      Junio C Hamano 提交于
      The pull.ff configuration was supposed to override the merge.ff
      configuration, but it didn't.
      
      * pt/pull-ff-vs-merge-ff:
        pull: parse pull.ff as a bool or string
        pull: make pull.ff=true override merge.ff
      7e46f27f
    • J
      Merge branch 'rs/plug-leak-in-pack-bitmaps' into maint · 06629901
      Junio C Hamano 提交于
      The code to read pack-bitmap wanted to allocate a few hundred
      pointers to a structure, but by mistake allocated and leaked memory
      enough to hold that many actual structures.  Correct the allocation
      size and also have it on stack, as it is small enough.
      
      * rs/plug-leak-in-pack-bitmaps:
        pack-bitmaps: plug memory leak, fix allocation size for recent_bitmaps
      06629901
    • J
      Merge branch 'ja/tutorial-asciidoctor-fix' into maint · 7c1ff53d
      Junio C Hamano 提交于
      A literal block in the tutorial had lines with unequal lengths to
      delimit it from the rest of the document, which choke GitHub's
      AsciiDoc renderer.
      
      * ja/tutorial-asciidoctor-fix:
        doc: fix unmatched code fences
      7c1ff53d
    • J
      Merge branch 'jk/stripspace-asciidoctor-fix' into maint · 413a715f
      Junio C Hamano 提交于
      A literal block in the tutorial had lines with unequal lengths to
      delimit it from the rest of the document, which choke GitHub's
      AsciiDoc renderer.
      
      * jk/stripspace-asciidoctor-fix:
        doc: fix unmatched code fences in git-stripspace
      413a715f
    • J
      Merge branch 'jk/asciidoc-markup-fix' into maint · 96b7f93a
      Junio C Hamano 提交于
      Various documentation mark-up fixes to make the output more
      consistent in general and also make AsciiDoctor (an alternative
      formatter) happier.
      
      * jk/asciidoc-markup-fix:
        doc: convert AsciiDoc {?foo} to ifdef::foo[]
        doc: put example URLs and emails inside literal backticks
        doc: drop backslash quoting of some curly braces
        doc: convert \--option to --option
        doc/add: reformat `--edit` option
        doc: fix length of underlined section-title
        doc: fix hanging "+"-continuation
        doc: fix unquoted use of "{type}"
        doc: fix misrendering due to `single quote'
      96b7f93a
    • J
      Merge branch 'ps/bundle-verify-arg' into maint · 51f319c0
      Junio C Hamano 提交于
      "git bundle verify" did not diagnose extra parameters on the
      command line.
      
      * ps/bundle-verify-arg:
        bundle: verify arguments more strictly
      51f319c0
    • J
      Merge branch 'mh/write-refs-sooner-2.4' into maint · 7c997bcb
      Junio C Hamano 提交于
      Multi-ref transaction support we merged a few releases ago
      unnecessarily kept many file descriptors open, risking to fail with
      resource exhaustion.  This is for 2.4.x track.
      
      * mh/write-refs-sooner-2.4:
        ref_transaction_commit(): fix atomicity and avoid fd exhaustion
        ref_transaction_commit(): remove the local flags variable
        ref_transaction_commit(): inline call to write_ref_sha1()
        rename_ref(): inline calls to write_ref_sha1() from this function
        commit_ref_update(): new function, extracted from write_ref_sha1()
        write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
        t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
        update-ref: test handling large transactions properly
        ref_transaction_commit(): fix atomicity and avoid fd exhaustion
        ref_transaction_commit(): remove the local flags variable
        ref_transaction_commit(): inline call to write_ref_sha1()
        rename_ref(): inline calls to write_ref_sha1() from this function
        commit_ref_update(): new function, extracted from write_ref_sha1()
        write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
        t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
        update-ref: test handling large transactions properly
      7c997bcb
    • J
      Merge branch 'mh/ref-directory-file' into maint · 4ba88462
      Junio C Hamano 提交于
      The ref API did not handle cases where 'refs/heads/xyzzy/frotz' is
      removed at the same time as 'refs/heads/xyzzy' is added (or vice
      versa) very well.
      
      * mh/ref-directory-file:
        reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
        ref_transaction_commit(): delete extra "the" from error message
        ref_transaction_commit(): provide better error messages
        rename_ref(): integrate lock_ref_sha1_basic() errors into ours
        lock_ref_sha1_basic(): improve diagnostics for ref D/F conflicts
        lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
        verify_refname_available(): report errors via a "struct strbuf *err"
        verify_refname_available(): rename function
        refs: check for D/F conflicts among refs created in a transaction
        ref_transaction_commit(): use a string_list for detecting duplicates
        is_refname_available(): use dirname in first loop
        struct nonmatching_ref_data: store a refname instead of a ref_entry
        report_refname_conflict(): inline function
        entry_matches(): inline function
        is_refname_available(): convert local variable "dirname" to strbuf
        is_refname_available(): avoid shadowing "dir" variable
        is_refname_available(): revamp the comments
        t1404: new tests of ref D/F conflicts within transactions
      4ba88462
    • J
      Merge branch 'mg/log-decorate-HEAD' into maint · 5efef305
      Junio C Hamano 提交于
      The "log --decorate" enhancement in Git 2.4 that shows the commit
      at the tip of the current branch e.g. "HEAD -> master", did not
      work with --decorate=full.
      
      * mg/log-decorate-HEAD:
        log: do not shorten decoration names too early
        log: decorate HEAD with branch name under --decorate=full, too
      5efef305
    • J
      Merge branch 'sb/t1020-cleanup' into maint · 5e896a37
      Junio C Hamano 提交于
      There was a commented-out (instead of being marked to expect
      failure) test that documented a breakage that was fixed since the
      test was written; turn it into a proper test.
      
      * sb/t1020-cleanup:
        subdirectory tests: code cleanup, uncomment test
      5e896a37
    • J
      Merge branch 'jc/gitignore-precedence' into maint · e9f767ec
      Junio C Hamano 提交于
      core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
      to be overridden by repository-specific .git/info/exclude file, but
      the order was swapped from the beginning. This belatedly fixes it.
      
      * jc/gitignore-precedence:
        ignore: info/exclude should trump core.excludesfile
      e9f767ec
    • J
      Merge branch 'bc/connect-plink' into maint · 2d8bb468
      Junio C Hamano 提交于
      The connection initiation code for "ssh" transport tried to absorb
      differences between the stock "ssh" and Putty-supplied "plink" and
      its derivatives, but the logic to tell that we are using "plink"
      variants were too loose and falsely triggered when "plink" appeared
      anywhere in the path (e.g. "/home/me/bin/uplink/ssh").
      
      * bc/connect-plink:
        connect: improve check for plink to reduce false positives
        t5601: fix quotation error leading to skipped tests
        connect: simplify SSH connection code path
      2d8bb468
    • J
      Merge branch 'ph/rebase-i-redo' into maint · c7b4de2c
      Junio C Hamano 提交于
      "git rebase -i" moved the "current" command from "todo" to "done" a
      bit too prematurely, losing a step when a "pick" did not even start.
      
      * ph/rebase-i-redo:
        rebase -i: redo tasks that die during cherry-pick
      c7b4de2c
    • J
      Merge branch 'jk/add-e-kill-editor' into maint · 8d5ef5a0
      Junio C Hamano 提交于
      "git add -e" did not allow the user to abort the operation by
      killing the editor.
      
      * jk/add-e-kill-editor:
        add: check return value of launch_editor
      8d5ef5a0
    • J
      Merge branch 'mh/clone-verbosity-fix' into maint · a3821a1a
      Junio C Hamano 提交于
      Git 2.4 broke setting verbosity and progress levels on "git clone"
      with native transports.
      
      * mh/clone-verbosity-fix:
        clone: call transport_set_verbosity before anything else on the newly created transport
      a3821a1a
    • J
      Merge branch 'jk/sha1-file-reduce-useless-warnings' into maint · 3c91e996
      Junio C Hamano 提交于
      * jk/sha1-file-reduce-useless-warnings:
        sha1_file: squelch "packfile cannot be accessed" warnings
      3c91e996
    • J
      Merge branch 'tb/blame-resurrect-convert-to-git' into maint · 1d93ec93
      Junio C Hamano 提交于
      Some time ago, "git blame" (incorrectly) lost the convert_to_git()
      call when synthesizing a fake "tip" commit that represents the
      state in the working tree, which broke folks who record the history
      with LF line ending to make their project portabile across
      platforms while terminating lines in their working tree files with
      CRLF for their platform.
      
      * tb/blame-resurrect-convert-to-git:
        blame: CRLF in the working tree and LF in the repo
      1d93ec93
    • J
      Merge branch 'jc/plug-fmt-merge-msg-leak' into maint · bdf204f2
      Junio C Hamano 提交于
      * jc/plug-fmt-merge-msg-leak:
        fmt-merge-msg: plug small leak of commit buffer
      bdf204f2
    • J
      Merge branch 'pt/xdg-config-path' into maint · d9c82fa7
      Junio C Hamano 提交于
      Code clean-up for xdg configuration path support.
      
      * pt/xdg-config-path:
        path.c: remove home_config_paths()
        git-config: replace use of home_config_paths()
        git-commit: replace use of home_config_paths()
        credential-store.c: replace home_config_paths() with xdg_config_home()
        dir.c: replace home_config_paths() with xdg_config_home()
        attr.c: replace home_config_paths() with xdg_config_home()
        path.c: implement xdg_config_home()
        t0302: "unreadable" test needs POSIXPERM
        t0302: test credential-store support for XDG_CONFIG_HOME
        git-credential-store: support XDG_CONFIG_HOME
        git-credential-store: support multiple credential files
      d9c82fa7
  6. 02 6月, 2015 2 次提交