1. 06 Mar, 2014 1 commit
  2. 05 Mar, 2014 5 commits
    • Junio C Hamano's avatar
      Merge branch 'maint' · 6ab4ae2b
      Junio C Hamano authored
      * maint:
        i18n: proposed command missing leading dash
      6ab4ae2b
    • Junio C Hamano's avatar
      Merge branch 'jk/run-network-tests-by-default' · ee3a81e6
      Junio C Hamano authored
      Teach "make test" to run networking tests when possible by default.
      
      * jk/run-network-tests-by-default:
        tests: turn on network daemon tests by default
      ee3a81e6
    • Junio C Hamano's avatar
      Merge branch 'nd/daemonize-gc' · 4c4ac4db
      Junio C Hamano authored
      Allow running "gc --auto" in the background.
      
      * nd/daemonize-gc:
        gc: config option for running --auto in background
        daemon: move daemonize() to libgit.a
      4c4ac4db
    • Junio C Hamano's avatar
      Merge branch 'ks/combine-diff' · 6376463c
      Junio C Hamano authored
      Teach combine-diff to honour the path-output-order imposed by
      diffcore-order, and optimize how matching paths are found in
      the N-way diffs made with parents.
      
      * ks/combine-diff:
        tests: add checking that combine-diff emits only correct paths
        combine-diff: simplify intersect_paths() further
        combine-diff: combine_diff_path.len is not needed anymore
        combine-diff: optimize combine_diff_path sets intersection
        diff test: add tests for combine-diff with orderfile
        diffcore-order: export generic ordering interface
      6376463c
    • Sandy Carter's avatar
      i18n: proposed command missing leading dash · 16216b6a
      Sandy Carter authored
      Add missing leading dash to proposed commands in french output when
      using the command:
          git branch --set-upstream remotename/branchname
      and when upstream is gone
      Signed-off-by: default avatarSandy Carter <[email protected]>
      Signed-off-by: default avatarJunio C Hamano <[email protected]>
      16216b6a
  3. 27 Feb, 2014 21 commits
    • Junio C Hamano's avatar
      Merge branch 'nd/http-fetch-shallow-fix' · 2de34784
      Junio C Hamano authored
      Attempting to deepen a shallow repository by fetching over smart
      HTTP transport failed in the protocol exchange, when no-done
      extension was used.  The fetching side waited for the list of
      shallow boundary commits after the sending end stopped talking to
      it.
      
      * nd/http-fetch-shallow-fix:
        t5537: move http tests out to t5539
        fetch-pack: fix deepen shallow over smart http with no-done cap
        protocol-capabilities.txt: document no-done
        protocol-capabilities.txt: refer multi_ack_detailed back to pack-protocol.txt
        pack-protocol.txt: clarify 'obj-id' in the last ACK after 'done'
        test: rename http fetch and push test files
      2de34784
    • Junio C Hamano's avatar
      Merge branch 'jk/pack-bitmap' · 0f9e62e0
      Junio C Hamano authored
      Borrow the bitmap index into packfiles from JGit to speed up
      enumeration of objects involved in a commit range without having to
      fully traverse the history.
      
      * jk/pack-bitmap: (26 commits)
        ewah: unconditionally ntohll ewah data
        ewah: support platforms that require aligned reads
        read-cache: use get_be32 instead of hand-rolled ntoh_l
        block-sha1: factor out get_be and put_be wrappers
        do not discard revindex when re-preparing packfiles
        pack-bitmap: implement optional name_hash cache
        t/perf: add tests for pack bitmaps
        t: add basic bitmap functionality tests
        count-objects: recognize .bitmap in garbage-checking
        repack: consider bitmaps when performing repacks
        repack: handle optional files created by pack-objects
        repack: turn exts array into array-of-struct
        repack: stop using magic number for ARRAY_SIZE(exts)
        pack-objects: implement bitmap writing
        rev-list: add bitmap mode to speed up object lists
        pack-objects: use bitmaps when packing objects
        pack-objects: split add_object_entry
        pack-bitmap: add support for bitmap indexes
        documentation: add documentation for the bitmap format
        ewah: compressed bitmap implementation
        ...
      0f9e62e0
    • Junio C Hamano's avatar
      Merge branch 'dk/blame-janitorial' · 6784fab0
      Junio C Hamano authored
      Code clean-up.
      
      * dk/blame-janitorial:
        builtin/blame.c::find_copy_in_blob: no need to scan for region end
        blame.c: prepare_lines should not call xrealloc for every line
        builtin/blame.c::prepare_lines: fix allocation size of sb->lineno
        builtin/blame.c: eliminate same_suspect()
        builtin/blame.c: struct blame_entry does not need a prev link
      6784fab0
    • Junio C Hamano's avatar
      Merge branch 'bc/gpg-sign-everywhere' · 62bef66f
      Junio C Hamano authored
      Teach "--gpg-sign" option to many commands that create commits.
      
      * bc/gpg-sign-everywhere:
        pull: add the --gpg-sign option.
        rebase: add the --gpg-sign option
        rebase: parse options in stuck-long mode
        rebase: don't try to match -M option
        rebase: remove useless arguments check
        am: add the --gpg-sign option
        am: parse options in stuck-long mode
        git-sh-setup.sh: add variable to use the stuck-long mode
        cherry-pick, revert: add the --gpg-sign option
      62bef66f
    • Junio C Hamano's avatar
      Merge branch 'al/docs' · d8a1bac1
      Junio C Hamano authored
      A handful of documentation updates, all trivially harmless.
      
      * al/docs:
        docs/git-blame: explain more clearly the example pickaxe use
        docs/git-clone: clarify use of --no-hardlinks option
        docs/git-remote: capitalize first word of initial blurb
        docs/merge-strategies: remove hyphen from mis-merges
      d8a1bac1
    • Junio C Hamano's avatar
      Merge branch 'jk/test-ports' · bd62e7c3
      Junio C Hamano authored
      Avoid having to assign port number to be used in tests manually.
      
      * jk/test-ports:
        tests: auto-set git-daemon port
        tests: auto-set LIB_HTTPD_PORT from test name
      bd62e7c3
    • Junio C Hamano's avatar
      Merge branch 'nd/reset-intent-to-add' · 8336832a
      Junio C Hamano authored
      * nd/reset-intent-to-add:
        reset: support "--mixed --intent-to-add" mode
      8336832a
    • Junio C Hamano's avatar
      Merge branch 'ks/tree-diff-walk' · 795dd116
      Junio C Hamano authored
      * ks/tree-diff-walk:
        tree-walk: finally switch over tree descriptors to contain a pre-parsed entry
        revision: convert to using diff_tree_sha1()
        line-log: convert to using diff_tree_sha1()
        tree-diff: convert diff_root_tree_sha1() to just call diff_tree_sha1 with old=NULL
        tree-diff: allow diff_tree_sha1 to accept NULL sha1
      795dd116
    • Junio C Hamano's avatar
      Merge branch 'mw/symlinks' · 8a342058
      Junio C Hamano authored
      All subcommands that take pathspecs mishandled an in-tree symbolic
      link when given it as a full path from the root (which arguably is
      a sick way to use pathspecs).  "git ls-files -s $(pwd)/RelNotes" in
      our tree is an easy reproduction recipe.
      
      * mw/symlinks:
        setup: don't dereference in-tree symlinks for absolute paths
        setup: add abspath_part_inside_repo() function
        t0060: add tests for prefix_path when path begins with work tree
        t0060: add test for prefix_path when path == work tree
        t0060: add test for prefix_path on symlinks via absolute paths
        t3004: add test for ls-files on symlinks via absolute paths
      8a342058
    • Junio C Hamano's avatar
      Merge branch 'nd/test-rename-reset' · f813f71a
      Junio C Hamano authored
      * nd/test-rename-reset:
        t7101, t7014: rename test files to indicate what that file is for
      f813f71a
    • Junio C Hamano's avatar
      Merge branch 'wk/submodule-on-branch' · 06c27689
      Junio C Hamano authored
      Make sure 'submodule update' modes that do not detach HEADs can
      be used more pleasantly by checking out a concrete branch when
      cloning them to prime the well.
      
      * wk/submodule-on-branch:
        Documentation: describe 'submodule update --remote' use case
        submodule: explicit local branch creation in module_clone
        submodule: document module_clone arguments in comments
        submodule: make 'checkout' update_module mode more explicit
      06c27689
    • Junio C Hamano's avatar
      Merge branch 'ep/varscope' · 04347830
      Junio C Hamano authored
      Shrink lifetime of variables by moving their definitions to an
      inner scope where appropriate.
      
      * ep/varscope:
        builtin/gc.c: reduce scope of variables
        builtin/fetch.c: reduce scope of variable
        builtin/commit.c: reduce scope of variables
        builtin/clean.c: reduce scope of variable
        builtin/blame.c: reduce scope of variables
        builtin/apply.c: reduce scope of variables
        bisect.c: reduce scope of variable
      04347830
    • Junio C Hamano's avatar
      Merge branch 'bs/stdio-undef-before-redef' · a06f23c7
      Junio C Hamano authored
      When we replace broken macros from stdio.h in git-compat-util.h,
      preprocessor.
      
      * bs/stdio-undef-before-redef:
        git-compat-util.h: #undef (v)snprintf before #define them
      a06f23c7
    • Junio C Hamano's avatar
      Merge branch 'jk/config-path-include-fix' · bfef492d
      Junio C Hamano authored
      include.path variable (or any variable that expects a path that can
      use ~username expansion) in the configuration file is not a
      boolean, but the code failed to check it.
      
      * jk/config-path-include-fix:
        handle_path_include: don't look at NULL value
        expand_user_path: do not look at NULL path
      bfef492d
    • Junio C Hamano's avatar
      Merge branch 'ds/rev-parse-required-args' · 28006fb0
      Junio C Hamano authored
      "git rev-parse --default" without the required option argument did
      not diagnose it as an error.
      
      * ds/rev-parse-required-args:
        rev-parse: check i before using argv[i] against argc
      28006fb0
    • Junio C Hamano's avatar
      Merge branch 'nd/diff-quiet-stat-dirty' · 1e745453
      Junio C Hamano authored
      "git diff --quiet -- pathspec1 pathspec2" sometimes did not return
      correct status value.
      
      * nd/diff-quiet-stat-dirty:
        diff: do not quit early on stat-dirty files
        diff.c: move diffcore_skip_stat_unmatch core logic out for reuse later
      1e745453
    • Junio C Hamano's avatar
      Merge branch 'nd/submodule-pathspec-ending-with-slash' · cbaeafc3
      Junio C Hamano authored
      Allow "git cmd path/", when the 'path' is where a submodule is
      bound to the top-level working tree, to match 'path', despite the
      extra and unnecessary trailing slash.
      
      * nd/submodule-pathspec-ending-with-slash:
        clean: use cache_name_is_other()
        clean: replace match_pathspec() with dir_path_match()
        pathspec: pass directory indicator to match_pathspec_item()
        match_pathspec: match pathspec "foo/" against directory "foo"
        dir.c: prepare match_pathspec_item for taking more flags
        pathspec: rename match_pathspec_depth() to match_pathspec()
        pathspec: convert some match_pathspec_depth() to dir_path_match()
        pathspec: convert some match_pathspec_depth() to ce_path_match()
      cbaeafc3
    • Junio C Hamano's avatar
      Merge branch 'bk/refresh-missing-ok-in-merge-recursive' · 156d6ed9
      Junio C Hamano authored
      Allow "merge-recursive" to work in an empty (temporary) working
      tree again when there are renames involved, correcting an old
      regression in 1.7.7 era.
      
      * bk/refresh-missing-ok-in-merge-recursive:
        merge-recursive.c: tolerate missing files while refreshing index
        read-cache.c: extend make_cache_entry refresh flag with options
        read-cache.c: refactor --ignore-missing implementation
        t3030-merge-recursive: test known breakage with empty work tree
      156d6ed9
    • Junio C Hamano's avatar
      Merge branch 'da/pull-ff-configuration' · 7da5fd68
      Junio C Hamano authored
      "git pull" learned to pay attention to pull.ff configuration
      variable.
      
      * da/pull-ff-configuration:
        pull: add --ff-only to the help text
        pull: add pull.ff configuration
      7da5fd68
    • Junio C Hamano's avatar
      Merge branch 'kb/fast-hashmap' · d637d1b9
      Junio C Hamano authored
      Improvements to our hash table to get it to meet the needs of the
      msysgit fscache project, with some nice performance improvements.
      
      * kb/fast-hashmap:
        name-hash: retire unused index_name_exists()
        hashmap.h: use 'unsigned int' for hash-codes everywhere
        test-hashmap.c: drop unnecessary #includes
        .gitignore: test-hashmap is a generated file
        read-cache.c: fix memory leaks caused by removed cache entries
        builtin/update-index.c: cleanup update_one
        fix 'git update-index --verbose --again' output
        remove old hash.[ch] implementation
        name-hash.c: remove cache entries instead of marking them CE_UNHASHED
        name-hash.c: use new hash map implementation for cache entries
        name-hash.c: remove unreferenced directory entries
        name-hash.c: use new hash map implementation for directories
        diffcore-rename.c: use new hash map implementation
        diffcore-rename.c: simplify finding exact renames
        diffcore-rename.c: move code around to prepare for the next patch
        buitin/describe.c: use new hash map implementation
        add a hashtable implementation that supports O(1) removal
        submodule: don't access the .gitmodules cache entry after removing it
      d637d1b9
    • Junio C Hamano's avatar
      Merge branch 'nv/commit-gpgsign-config' · 810273bc
      Junio C Hamano authored
      Introduce commit.gpgsign configuration variable to force every
      commit to be GPG signed.  The variable cannot be overriden from the
      command line of some of the commands that create commits except for
      "git commit" and "git commit-tree", but I am not convinced that it
      is a good idea to sprinkle support for --no-gpg-sign everywhere,
      which in turn means that this configuration variable may not be
      such a good idea.
      
      * nv/commit-gpgsign-config:
        test the commit.gpgsign config option
        commit-tree: add and document --no-gpg-sign
        commit-tree: add the commit.gpgsign option to sign all commits
      810273bc
  4. 25 Feb, 2014 1 commit
  5. 24 Feb, 2014 12 commits
    • Eric Sunshine's avatar
      name-hash: retire unused index_name_exists() · 7b359ea6
      Eric Sunshine authored
      db5360f3 (name-hash: refactor polymorphic index_name_exists();
      2013-09-17) split index_name_exists() into index_file_exists() and
      index_dir_exists() but retained index_name_exists() as a thin wrapper
      to avoid disturbing possible in-flight topics. Since this change
      landed in 'master' some time ago and there are no in-flight topics
      referencing index_name_exists(), retire it.
      Signed-off-by: Eric Sunshine's avatarEric Sunshine <[email protected]>
      Signed-off-by: default avatarJunio C Hamano <[email protected]>
      7b359ea6
    • Karsten Blees's avatar
    • Nicolas Vigier's avatar
      test the commit.gpgsign config option · 4b8d14b4
      Nicolas Vigier authored
      The tests are checking that :
      
      - when commit.gpgsign is true, "git commit" creates signed commits
      
      - when commit.gpgsign is false, "git commit" creates unsigned commits
      
      - when commit.gpgsign is true, "git commit --no-gpg-sign" creates
        unsigned commits
      
      - when commit.gpgsign is true, "git rebase -f" creates signed commits
      Signed-off-by: default avatarNicolas Vigier <[email protected]>
      Signed-off-by: default avatarJunio C Hamano <[email protected]>
      4b8d14b4
    • Junio C Hamano's avatar
      commit-tree: add and document --no-gpg-sign · 55ca3f99
      Junio C Hamano authored
      Document how to override commit.gpgsign configuration that is set to
      true per "git commit" invocation (parse-options machinery lets us
      say "--no-gpg-sign" to do so).
      
      "git commit-tree" does not use parse-options, so manually add the
      corresponding option for now.
      Signed-off-by: default avatarJunio C Hamano <[email protected]>
      55ca3f99
    • Nicolas Vigier's avatar
      commit-tree: add the commit.gpgsign option to sign all commits · d95bfb12
      Nicolas Vigier authored
      If you want to GPG sign all your commits, you have to add the -S option
      all the time. The commit.gpgsign config option allows to sign all
      commits automatically.
      Signed-off-by: default avatarNicolas Vigier <[email protected]>
      Signed-off-by: default avatarJunio C Hamano <[email protected]>
      d95bfb12
    • Duy Nguyen's avatar
      diff: do not quit early on stat-dirty files · f34b205f
      Duy Nguyen authored
      When QUICK is set (i.e. with --quiet) we try to do as little work as
      possible, stopping after seeing the first change. stat-dirty is
      considered a "change" but it may turn out not, if no actual content is
      changed. The actual content test is performed too late in the process
      and the shortcut may be taken prematurely, leading to incorrect return
      code.
      
      Assume we do "git diff --quiet". If we have a stat-dirty file "a" and
      a really dirty file "b". We break the loop in run_diff_files() and
      stop after "a" because we have got a "change". Later in
      diffcore_skip_stat_unmatch() we find out "a" is actually not
      changed. But there's nothing else in the diff queue, we incorrectly
      declare "no change", ignoring the fact that "b" is changed.
      
      This also happens to "git diff --quiet HEAD" when it hits
      diff_can_quit_early() in oneway_diff().
      
      This patch does the content test earlier in order to keep going if "a"
      is unchanged. The test result is cached so that when
      diffcore_skip_stat_unmatch() is done in the end, we spend no cycles on
      re-testing "a".
      Reported-by: Toshihiro Iwamoto's avatarIWAMOTO Toshihiro <[email protected]>
      Signed-off-by: Duy Nguyen's avatarNguyễn Thái Ngọc Duy <[email protected]>
      Signed-off-by: default avatarJunio C Hamano <[email protected]>
      f34b205f
    • Duy Nguyen's avatar
    • Kirill Smelkov's avatar
      tests: add checking that combine-diff emits only correct paths · fce135c4
      Kirill Smelkov authored
      where "correct paths" stands for paths that are different to all
      parents.
      
      Up until now, we were testing combined diff only on one file, or on
      several files which were all different (t4038-diff-combined.sh).
      
      As recent thinko in "simplify intersect_paths() further" showed, and
      also, since we are going to rework code for finding paths different to
      all parents, lets write at least basic tests.
      Signed-off-by: default avatarKirill Smelkov <[email protected]>
      Signed-off-by: default avatarJunio C Hamano <[email protected]>
      fce135c4
    • Junio C Hamano's avatar
      combine-diff: simplify intersect_paths() further · 7b1004b0
      Junio C Hamano authored
      Linus once said:
      
          I actually wish more people understood the really core low-level
          kind of coding. Not big, complex stuff like the lockless name
          lookup, but simply good use of pointers-to-pointers etc. For
          example, I've seen too many people who delete a singly-linked
          list entry by keeping track of the "prev" entry, and then to
          delete the entry, doing something like
      
      	if (prev)
      	    prev->next = entry->next;
      	else
      	    list_head = entry->next;
      
          and whenever I see code like that, I just go "This person
          doesn't understand pointers". And it's sadly quite common.
      
          People who understand pointers just use a "pointer to the entry
          pointer", and initialize that with the address of the
          list_head. And then as they traverse the list, they can remove
          the entry without using any conditionals, by just doing a "*pp =
          entry->next".
      
      Applying that simplification lets us lose 7 lines from this function
      even while adding 2 lines of comment.
      
      I was tempted to squash this into the original commit, but because
      the benchmarking described in the commit log is without this
      simplification, I decided to keep it a separate follow-up patch.
      Signed-off-by: default avatarJunio C Hamano <[email protected]>
      7b1004b0
    • Kirill Smelkov's avatar
      combine-diff: combine_diff_path.len is not needed anymore · af82c788
      Kirill Smelkov authored
      The field was used in order to speed-up name comparison and also to
      mark removed paths by setting it to 0.
      
      Because the updated code does significantly less strcmp and also
      just removes paths from the list and free right after we know a path
      will not be needed, it is not needed anymore.
      Signed-off-by: default avatarKirill Smelkov <[email protected]>
      Signed-off-by: default avatarJunio C Hamano <[email protected]>
      af82c788
    • Kirill Smelkov's avatar
      combine-diff: optimize combine_diff_path sets intersection · 8518ff8f
      Kirill Smelkov authored
      When generating combined diff, for each commit, we intersect diff
      paths from diff(parent_0,commit) to diff(parent_i,commit) comparing
      all paths pairs, i.e. doing it the quadratic way. That is correct,
      but could be optimized.
      
      Paths come from trees in sorted (= tree) order, and so does diff_tree()
      emits resulting paths in that order too. Now if we look at diffcore
      transformations, all of them, except diffcore_order, preserve resulting
      path ordering:
      
          - skip_stat_unmatch, grep, pickaxe, filter
                                  -- just skip elements -> order stays preserved
      
          - break                 -- just breaks diff for a path, adding path
                                     dup after the path -> order stays preserved
      
          - detect rename/copy    -- resulting paths are emitted sorted
                                     (verified empirically)
      
      So only diffcore_order changes diff paths ordering.
      
      But diffcore_order meaning affects only presentation - i.e. only how to
      show the diff, so we could do all the internal computations without
      paths reordering, and order only resultant paths set. This is faster,
      since, if we know two paths sets are all ordered, their intersection
      could be done in linear time.
      
      This patch does just that.
      
      Timings for `git log --raw --no-abbrev --no-renames` without `-c` ("git log")
      and with `-c` ("git log -c") before and after the patch are as follows:
      
                      linux.git v3.10..v3.11
      
                  log     log -c
      
          before  1.9s    20.4s
          after   1.9s    16.6s
      
                      navy.git    (private repo)
      
                  log     log -c
      
          before  0.83s   15.6s
          after   0.83s    2.1s
      
      P.S.
      
      I think linux.git case is sped up not so much as the second one, since
      in navy.git, there are more exotic (subtree, etc) merges.
      
      P.P.S.
      
      My tracing showed that the rest of the time (16.6s vs 1.9s) is usually
      spent in computing huge diffs from commit to second parent. Will try to
      deal with it, if I'll have time.
      
      P.P.P.S.
      
      For combine_diff_path, ->len is not needed anymore - will remove it in
      the next noisy cleanup path, to maintain good signal/noise ratio here.
      Signed-off-by: default avatarKirill Smelkov <[email protected]>
      Signed-off-by: default avatarJunio C Hamano <[email protected]>
      8518ff8f
    • Kirill Smelkov's avatar
      diff test: add tests for combine-diff with orderfile · 91921cef
      Kirill Smelkov authored
      In the next patch combine-diff will have special code-path for taking
      orderfile into account. Prepare for making changes by introducing
      coverage tests for that case.
      Signed-off-by: default avatarKirill Smelkov <[email protected]>
      Signed-off-by: default avatarJunio C Hamano <[email protected]>
      91921cef