# Custom Merge

3 messages from 2012-04-23 to 2012-04-23. Participants: Jose Ricardo, Johannes Sixt.
Thread: https://gitlist.dev/t/30307

## Jose Ricardo, 2012-04-23 12:25

Subject: Custom Merge
Message-ID: <loom.20120423T141242-348@post.gmane.org>
URL: https://gitlist.dev/e/loom.20120423T141242-348%40post.gmane.org

```
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, 2012-04-23 12:59

Subject: Re: Custom Merge
Message-ID: <4F955243.2090103@viscovery.net>
URL: https://gitlist.dev/e/4F955243.2090103%40viscovery.net
In-Reply-To: <loom.20120423T141242-348@post.gmane.org>

```
Am 4/23/2012 14:25, schrieb Jose Ricardo:
> 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, 2012-04-23 14:28

Subject: Re: Custom Merge
Message-ID: <loom.20120423T162755-821@post.gmane.org>
URL: https://gitlist.dev/e/loom.20120423T162755-821%40post.gmane.org
In-Reply-To: <4F955243.2090103@viscovery.net>

```
Johannes Sixt <j.sixt <at> viscovery.net> writes:

> 
> 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!

```
