Re: [git-users] How can I ignore insignificant change during merge ?

2015-10-06 Thread Konstantin Khomoutov
On Mon, 5 Oct 2015 05:11:29 -0700 (PDT)
Jens Brejner  wrote:

> I need to merge a branch, +100k changes. The vast majority of changes
> are insignificant, because they only represent a screen position in
> the editor, so these changes should never have been in git - but but
> MadCap Flare already put them there.
> 
> The files in question are xml, and the difference can be exemplifed
> like this
> 
> Original (when branches were created):
> html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd; 
> MadCap:lastBlockDepth="5" MadCap:lastHeight="32"
> MadCap:lastWidth="400" Branch1:
> html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd; 
> MadCap:lastBlockDepth="5" MadCap:lastHeight="24"
> MadCap:lastWidth="500" Branch2:
> html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd; 
> MadCap:lastBlockDepth="5" MadCap:lastHeight="41"
> MadCap:lastWidth="300"
> 
> How can git help me so files where the only difference matches
> something like this regex:
> /html xmlns:.* MadCap:lastHeight="\d+" MadCap:lastWidth="\d+"/
> 
> for the files that qualify, I want git to ignore the change, and
> therefor the merge-conflict, and then just accept "my" file for the
> merged changeset.
> 
> Any suggestions on how to I can have git help me with that ?

I can think of two solutions to try:

* Try with `git rerere` which is supposed to remember how you managed
  to resolve merge conflicts and reapply this knowledge when doing
  further merges.

  So you could try merging just a single or few commits from the source
  branch to have them memorized by `git rerere` and then proceed with
  the rest of the branch.

* Create a so-called "clean filter" for your madcap flare XML files
  which would apply some XSL transformation (say, via xmlstarlet or
  whatever is more convenient for your environment) which would simply
  remove or "normalize" -- by rewriting to the original value -- those
  "editor posititon" bits.  You can even employ a poor-man's approach
  and fix up these files with `sed` or some other crude non-XML-aware
  tool -- I think that could be just okay for a one-off operation.

  With this filter in place, try merging with

  git merge -s recursive -X renormalize

  More info are in `git help attributes` and `git help merge`.

In either case, I'd try adopting the solution with clean filter
for this repository so that it will save everyone's neck later.

-- 
You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to git-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[git-users] How can I ignore insignificant change during merge ?

2015-10-05 Thread Jens Brejner
Hi - help needed.

I need to merge a branch, +100k changes. The vast majority of changes are 
insignificant, because they only represent a screen position in the editor, 
so these changes should never have been in git - but but MadCap Flare 
already put them there.

The files in question are xml, and the difference can be exemplifed like 
this

Original (when branches were created):
html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd; 
MadCap:lastBlockDepth="5" MadCap:lastHeight="32" MadCap:lastWidth="400"
Branch1:
html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd; 
MadCap:lastBlockDepth="5" MadCap:lastHeight="24" MadCap:lastWidth="500"
Branch2:
html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd; 
MadCap:lastBlockDepth="5" MadCap:lastHeight="41" MadCap:lastWidth="300"

How can git help me so files where the only difference matches something 
like this regex:
/html xmlns:.* MadCap:lastHeight="\d+" MadCap:lastWidth="\d+"/

for the files that qualify, I want git to ignore the change, and therefor 
the merge-conflict, and then just accept "my" file for the merged changeset.

Any suggestions on how to I can have git help me with that ?

Best regards

Jens



-- 
You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to git-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.