threads / discuss / 30307

Custom Merge

Subject: Custom Merge

## tl;dr

3 messages between Apr 23, 2012 and Apr 23, 2012.

replies: 2people: 2as markdown or json

Jose Ricardo· Apr 23, 2012, 12:25 UTC · lore
Hi everyone!

In my project, I have a lot of image files, that I wanted to process using a different tool. For this, after reading some posts about custom merge drivers in this forum, I make the following modifications:

In the file .gitconfig I added the following lines:
[merge "imgfile"]
        name = Driver for image files
        driver = /usr/local/bin/git-merge-img.sh %O %A %B %L
        recursive = binary
and in the .gitinfoattributes I put:
*.png   merge=imgfile
As I can see, it works calling my custom script during a merge between
 two branches that have a .png file. Unfortunately, even after a successfully 
merge, the final image is not merged with the one in the other branch. 
In order to test it, I've called my script using three images, giving me the 
corrected result.
I don't know if it could help but instead of changing the content of the file
 I create another one with the same name during a merge operation.
Does anyone could help me pointing what could be wrong with this?
Thanks a lot!
Johannes Sixt· Apr 23, 2012, 12:59 UTC · re: Jose Ricardo · lore

Re: Custom Merge

Am 4/23/2012 14:25, schrieb Jose Ricardo:
Show 24 quoted lines
> In my project, I have a lot of image files, that I wanted to process using 
> a different tool. For this, after reading some posts about custom merge 
> drivers in this forum, I make the following modifications:
> 
> In the file .gitconfig I added the following lines:
> 
> 
> [merge "imgfile"]
>         name = Driver for image files
>         driver = /usr/local/bin/git-merge-img.sh %O %A %B %L
>         recursive = binary
> 
> and in the .gitinfoattributes I put:
> 
> *.png   merge=imgfile
> 
> As I can see, it works calling my custom script during a merge between
>  two branches that have a .png file. Unfortunately, even after a successfully 
> merge, the final image is not merged with the one in the other branch. 
> In order to test it, I've called my script using three images, giving me the 
> corrected result.
> 
> I don't know if it could help but instead of changing the content of the file
>  I create another one with the same name during a merge operation.
I have my image merge script configured it like this:
[merge "imgfile"]
	driver = imgmerge %O %A %B %A

but if you do that, you must be sure that the script does not need to access $2 after it has begun writing to $4.

(I know that it worked because at one time I had forgotten that I have a custom merge driver, and was expecting a merge conflict due to an image file, but there was no conflict, and the result was correct ;-)

-- Hannes
Jose Ricardo· Apr 23, 2012, 14:28 UTC · re: Johannes Sixt · lore

Re: Custom Merge

Johannes Sixt <j.sixt <at> viscovery.net> writes:
Show 13 quoted lines
> 
> I have my image merge script configured it like this:
> 
> [merge "imgfile"]
> 	driver = imgmerge %O %A %B %A
> 
> but if you do that, you must be sure that the script does not need to
> access $2 after it has begun writing to $4.
> 
> (I know that it worked because at one time I had forgotten that I have a
> custom merge driver, and was expecting a merge conflict due to an image
> file, but there was no conflict, and the result was correct 
> 
Hi Johannes,
Thanks a lot for your help. 
I have checked it and I'm writing to the right file after reading the data from
 it. According to what I see, only the modifications made on the current 
branch are saved, even after applying the delta to the right image file.

One question is: does it matter if I save the whole file, replacing the old with this new one? Or do I need to open the old one and modify its content?

Thanks again!

← back to recent threads