Skip to content
Commits on Aug 26, 2010
  1. @gitster

    merge-recursive --patience

    Justin Frankel committed with gitster
    Teach the merge-recursive strategy a --patience option to use the
    "patience diff" algorithm, which tends to improve results when
    cherry-picking a patch that reorders functions at the same time as
    refactoring them.
    To support this, struct merge_options and ll_merge_options gain an
    xdl_opts member, so programs can use arbitrary xdiff flags (think
    "XDF_IGNORE_WHITESPACE") in a git-aware merge.
    git merge and git rebase can be passed the -Xpatience option to
    use this.
    [jn: split from --ignore-space patch; with documentation]
    Signed-off-by: Justin Frankel <>
    Signed-off-by: Jonathan Nieder <>
    Signed-off-by: Junio C Hamano <>
  2. @jrn @gitster

    ll-merge: replace flag argument with options struct

    jrn committed with gitster
    Keeping track of the flag bits is proving more trouble than it's
    worth.  Instead, use a pointer to an options struct like most similar
    APIs do.
    Callers with no special requests can pass NULL to request the default
    Cc: Bert Wesarg <>
    Cc: Avery Pennarun <>
    Helped-by: Justin Frankel <>
    Helped-by: Bert Wesarg <>
    Signed-off-by: Jonathan Nieder <>
    Signed-off-by: Junio C Hamano <>
Commits on Aug 6, 2010
  1. @jrn @gitster

    ll-merge: let caller decide whether to renormalize

    jrn committed with gitster
    Add a “renormalize” bit to the ll-merge options word so callers can
    decide on a case-by-case basis whether the merge is likely to have
    overlapped with a change in smudge/clean rules.
    This reveals a few commands that have not been taking that situation
    into account, though it does not fix them.
    No functional change intended.
    Cc: Eyvind Bernhardsen <>
    Improved-by: Junio C Hamano <>
    Signed-off-by: Jonathan Nieder <>
    Signed-off-by: Junio C Hamano <>
  2. @jrn @gitster

    ll-merge: make flag easier to populate

    jrn committed with gitster
    ll_merge() takes its options in a flag word, which has a few
     - options flags can be cheaply passed around in registers, while
       an option struct passed by pointer cannot;
     - callers can easily pass 0 without trouble for no options,
       while an option struct passed by value would not allow that.
    The downside is that code to populate and access the flag word can be
    somewhat opaque.  Mitigate that with a few macros.
    Cc: Avery Pennarun <>
    Cc: Bert Wesarg <>
    Signed-off-by: Jonathan Nieder <>
    Signed-off-by: Junio C Hamano <>
Commits on Mar 21, 2010
  1. @jrn @gitster

    ll_merge(): add ancestor label parameter for diff3-style output

    jrn committed with gitster
    Commands using the ll_merge() function will present conflict hunks
    imitating ‘diff3 -m’ output if the merge.conflictstyle configuration
    option is set appropriately.  Unlike ‘diff3 -m’, the output does not
    include a label for the merge base on the ||||||| line of the output,
    and some tools misparse the conflict hunks without that.
    Add a new ancestor_label parameter to ll_merge() to give callers the
    power to rectify this situation.  If ancestor_label is NULL, the output
    format is unchanged.  All callers pass NULL for now.
    Requested-by: Stefan Monnier <>
    Signed-off-by: Jonathan Nieder <>
    Signed-off-by: Junio C Hamano <>
Commits on Jan 21, 2010
  1. @gitster

    Merge branch 'jc/conflict-marker-size'

    gitster committed
    * jc/conflict-marker-size:
      rerere: honor conflict-marker-size attribute
      rerere: prepare for customizable conflict marker length
      conflict-marker-size: new attribute
      rerere: use ll_merge() instead of using xdl_merge()
      merge-tree: use ll_merge() not xdl_merge()
      xdl_merge(): allow passing down marker_size in xmparam_t
      xdl_merge(): introduce xmparam_t for merge specific parameters
      git_attr(): fix function signature
Commits on Jan 18, 2010
  1. @apenwarr @gitster

    git merge -X<option>

    apenwarr committed with gitster
    Teach "-X <option>" command line argument to "git merge" that is passed to
    strategy implementations.  "ours" and "theirs" autoresolution introduced
    by the previous commit can be asked to the recursive strategy.
    Signed-off-by: Avery Pennarun <>
    Signed-off-by: Junio C Hamano <>
Commits on Jan 17, 2010
  1. @gitster

    rerere: honor conflict-marker-size attribute

    gitster committed
    Signed-off-by: Junio C Hamano <>
Commits on Feb 18, 2008
  1. @gitster

    merge-recursive: split low-level merge functions out.

    gitster committed
    This moves low-level merge functions out of merge-recursive.c and
    places them in a new separate file, ll-merge.c
    Signed-off-by: Junio C Hamano <>
Something went wrong with that request. Please try again.