1. 13 4月, 2007 2 次提交
    • L
      Don't show gitlink directories when we want "other" files · ab22aed3
      Linus Torvalds 提交于
      When "show_other_directories" is set, that implies that we are looking
      for untracked files, which obviously means that we should ignore
      directories that are marked as gitlinks in the index.
      
      This fixes "git status" in a superproject, that would otherwise always
      report that subprojects were "Untracked files:"
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ab22aed3
    • L
      Teach git-update-index about gitlinks · e011054b
      Linus Torvalds 提交于
      I finally got around to looking at Alex' patch to teach update-index about
      gitlinks too, so that "git commit -a" along with any other explicit
      update-index scripts can work.
      
      I don't think there was anything wrong with Alex' patch, but the code he
      patched I felt was just so ugly that the added cases just pushed it over
      the edge. Especially as I don't think that patch necessarily did the right
      thing for a gitlink entry that already existed in the index, but that
      wasn't actually a real git repository in the working tree (just an empty
      subdirectory or a non-git snapshot because it hadn't wanted to track that
      particular subproject).
      
      So I ended up deciding to clean up the git-update-index handling the same
      way I tackled the directory traversal used by git-add earlier: by
      splitting the different cases up into multiple smaller functions, and just
      making the code easier to read (and adding more comments about the
      different cases).
      
      So this replaces the old "process_file()" with a new "process_path()"
      function that then just calls out to different helper functions depending
      on what kind of path it is. Processing a nondirectory ends up being just
      one of the simpler cases.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      e011054b
  2. 12 4月, 2007 2 次提交
    • L
      Teach directory traversal about subprojects · 09595258
      Linus Torvalds 提交于
      This is the promised cleaned-up version of teaching directory traversal
      (ie the "read_directory()" logic) about subprojects. That makes "git add"
      understand to add/update subprojects.
      
      It now knows to look at the index file to see if a directory is marked as
      a subproject, and use that as information as whether it should be recursed
      into or not.
      
      It also generally cleans up the handling of directory entries when
      traversing the working tree, by splitting up the decision-making process
      into small functions of their own, and adding a fair number of comments.
      
      Finally, it teaches "add_file_to_cache()" that directory names can have
      slashes at the end, since the directory traversal adds them to make the
      difference between a file and a directory clear (it always did that, but
      my previous too-ugly-to-apply subproject patch had a totally different
      path for subproject directories and avoided the slash for that case).
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      09595258
    • L
      Fix thinko in subproject entry sorting · 1833a925
      Linus Torvalds 提交于
      This fixes a total thinko in my original series: subprojects do *not* sort
      like directories, because the index is sorted purely by full pathname, and
      since a subproject shows up in the index as a normal NUL-terminated
      string, it never has the issues with sorting with the '/' at the end.
      
      So if you have a subproject "proj" and a file "proj.c", the subproject
      sorts alphabetically before the file in the index (and must thus also sort
      that way in a tree object, since trees sort as the index).
      
      In contrast, it you have two files "proj/file" and "proj.c", the "proj.c"
      will sort alphabetically before "proj/file" in the index. The index
      itself, of course, does not actually contain an entry "proj/", but in the
      *tree* that gets written out, the tree entry "proj" will sort after the
      file entry "proj.c", which is the only real magic sorting rule.
      
      In other words: the magic sorting rule only affects tree entries, and
      *only* affects tree entries that point to other trees (ie are of the type
      S_IFDIR).
      
      Anyway, that thinko just means that we should remove the special case to
      make S_ISDIRLNK entries sort like S_ISDIR entries. They don't.  They sort
      like normal files.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      1833a925
  3. 11 4月, 2007 4 次提交
  4. 10 4月, 2007 3 次提交
  5. 09 4月, 2007 8 次提交
  6. 08 4月, 2007 5 次提交
  7. 07 4月, 2007 16 次提交
    • J
      A new merge stragety 'subtree'. · 68faf689
      Junio C Hamano 提交于
      This merge strategy largely piggy-backs on git-merge-recursive.
      When merging trees A and B, if B corresponds to a subtree of A,
      B is first adjusted to match the tree structure of A, instead of
      reading the trees at the same level.  This adjustment is also
      done to the common ancestor tree.
      
      If you are pulling updates from git-gui repository into git.git
      repository, the root level of the former corresponds to git-gui/
      subdirectory of the latter.  The tree object of git-gui's toplevel
      is wrapped in a fake tree object, whose sole entry has name 'git-gui'
      and records object name of the true tree, before being used by
      the 3-way merge code.
      
      If you are merging the other way, only the git-gui/ subtree of
      git.git is extracted and merged into git-gui's toplevel.
      
      The detection of corresponding subtree is done by comparing the
      pathnames and types in the toplevel of the tree.
      
      Heuristics galore!  That's the git way ;-).
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      68faf689
    • J
      git-push to multiple locations does not stop at the first failure · fd1d1b05
      Junio C Hamano 提交于
      When pushing into multiple repositories with git push, via
      multiple URL in .git/remotes/$shorthand or multiple url
      variables in [remote "$shorthand"] section, we used to stop upon
      the first failure.  Continue the operation and report the
      failure at the end.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      fd1d1b05
    • J
      git-push reports the URL after failing. · 39878b0c
      Junio C Hamano 提交于
      This came up on #git when somebody was getting 'unable to create
      ./objects/tmp_oXXXX' but sweared he had write permission to that
      directory.  It turned out that the repository URL was changed
      and he was accessing a repository he does not have a write
      permission anymore.
      
      I am not sure how much this would have helped somebody who
      believed he was accessing location when the permission of that
      location was changed while he was looking the other way, though.
      But giving more information on the error path would be better,
      and the next change would be helped with this as well.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      39878b0c
    • J
      Merge branch 'jc/index-output' · ee9693e2
      Junio C Hamano 提交于
      * jc/index-output:
        git-read-tree --index-output=<file>
        _GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file.
      
      Conflicts:
      
      	builtin-apply.c
      ee9693e2
    • J
      Merge branch 'fp/make-j' · 39415449
      Junio C Hamano 提交于
      * fp/make-j:
        Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.
      39415449
    • J
      Merge branch 'cc/bisect' · 5bba1b35
      Junio C Hamano 提交于
      * cc/bisect:
        git-bisect: allow bisecting with only one bad commit.
        t6030: add a bit more tests to git-bisect
        git-bisect: modernization
        Documentation: bisect: "start" accepts one bad and many good commits
        Bisect: teach "bisect start" to optionally use one bad and many good revs.
      5bba1b35
    • J
      Merge branch 'jc/checkout' (early part) · b7108a16
      Junio C Hamano 提交于
      * 'jc/checkout' (early part):
        checkout: allow detaching to HEAD even when switching to the tip of a branch
      b7108a16
    • J
      Merge branch 'maint' · ced38ea2
      Junio C Hamano 提交于
      * maint:
        Documentation: tighten dependency for git.{html,txt}
        Makefile: iconv() on Darwin has the old interface
        t5300-pack-object.sh: portability issue using /usr/bin/stat
        t3200-branch.sh: small language nit
        usermanual.txt: some capitalization nits
        Make builtin-branch.c handle the git config file
        rename_ref(): only print a warning when config-file update fails
        Distinguish branches by more than case in tests.
        Avoid composing too long "References" header.
        cvsimport: Improve formating consistency
        cvsimport: Reorder options in documentation for better understanding
        cvsimport: Improve usage error reporting
        cvsimport: Improve documentation of CVSROOT and CVS module determination
        cvsimport: sync usage lines with existing options
      
      Conflicts:
      
      	Documentation/Makefile
      ced38ea2
    • J
      Documentation: tighten dependency for git.{html,txt} · d7907392
      Junio C Hamano 提交于
      Every time _any_ documentation page changed, cmds-*.txt files
      were regenerated, which caused git.{html,txt} to be remade.  Try
      not to update cmds-*.txt files if their new contents match the
      old ones.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      d7907392
    • A
      Makefile: iconv() on Darwin has the old interface · 63b4b7a7
      Arjen Laarhoven 提交于
      The libiconv on Darwin uses the old iconv() interface (2nd argument is a
      const char **, instead of a char **).  Add OLD_ICONV to the Darwin
      variable definitions to handle this.
      Signed-off-by: NArjen Laarhoven <arjen@yaph.org>
      Acked-by: NBrian Gernhardt <benji@silverinsanity.com>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      63b4b7a7
    • A
      t5300-pack-object.sh: portability issue using /usr/bin/stat · d93f7c18
      Arjen Laarhoven 提交于
      In the test 'compare delta flavors', /usr/bin/stat is used to get file size.
      This isn't portable.  There already is a dependency on Perl, use its '-s'
      operator to get the file size.
      Signed-off-by: NArjen Laarhoven <arjen@yaph.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      d93f7c18
    • J
      git-bisect: allow bisecting with only one bad commit. · 0a5280a9
      Junio C Hamano 提交于
      This allows you to say:
      
      	git bisect start
      	git bisect bad $bad
      	git bisect next
      
      to start bisection without knowing a good commit.  This would
      have you try a commit that is half-way since the beginning of
      the history, which is rather wasteful if you already know a good
      commit, but if you don't (or your history is short enough that
      you do not care), there is no reason not to allow this.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      0a5280a9
    • J
      t6030: add a bit more tests to git-bisect · 4f506716
      Junio C Hamano 提交于
      Verify that git-bisect does not start before getting one bad and
      one good commit.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      4f506716
    • A
      t3200-branch.sh: small language nit · 4c84f0dc
      Arjen Laarhoven 提交于
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      4c84f0dc
    • A
      usermanual.txt: some capitalization nits · ae25c67a
      Arjen Laarhoven 提交于
      Signed-off-by: NArjen Laarhoven <arjen@yaph.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ae25c67a
    • L
      Make builtin-branch.c handle the git config file · 19eba151
      Lars Hjemli 提交于
      This moves the knowledge about .git/config usage out of refs.c and into
      builtin-branch.c instead, which allows git-branch to update HEAD to point
      at the moved branch before attempting to update the config file. It also
      allows git-branch to exit with an error code if updating the config file
      should fail.
      Signed-off-by: NLars Hjemli <hjemli@gmail.com>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      19eba151