Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Jan 18, 2010
  1. @gitster

    Make "subtree" part more orthogonal to the rest of merge-recursive.

    gitster authored
    This makes "subtree" more orthogonal to the rest of recursive merge, so
    that you can use subtree and ours/theirs features at the same time.  For
    example, you can now say:
    	git merge -s subtree -Xtheirs other
    to merge with "other" branch while shifting it up or down to match the
    shape of the tree of the current branch, and resolving conflicts favoring
    the changes "other" branch made over changes made in the current branch.
    It also allows the prefix used to shift the trees to be specified using
    the "-Xsubtree=$prefix" option.  Giving an empty prefix tells the command
    to figure out how much to shift trees automatically as we have always
    done.  "merge -s subtree" is the same as "merge -s recursive -Xsubtree="
    (or "merge -s recursive -Xsubtree").
    Based on an old patch done back in the days when git-merge was a script;
    Avery ported the script part to builtin-merge.c.  Bugs in shift_tree()
    is mine.
    Signed-off-by: Avery Pennarun <>
    Signed-off-by: Junio C Hamano <>
Commits on Oct 21, 2007
  1. @spearce

    Improved const correctness for strings

    spearce authored
    Signed-off-by: Shawn O. Pearce <>
Commits on Jun 7, 2007
  1. @gitster

    War on whitespace

    gitster authored
    This uses "git-apply --whitespace=strip" to fix whitespace errors that have
    crept in to our source files over time.  There are a few files that need
    to have trailing whitespaces (most notably, test vectors).  The results
    still passes the test, and build result in Documentation/ area is unchanged.
    Signed-off-by: Junio C Hamano <>
Commits on Apr 7, 2007
  1. A new merge stragety 'subtree'.

    Junio C Hamano authored
    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: Junio C Hamano <>
Something went wrong with that request. Please try again.