Question: I read somewhere that one of few weaknesses in data binding model is that you never explicitly handle or create the data object that’s bound to the control and as a result you don’t have a chance to add an extra item. But I’m not sure what is meant by that.

What or how exactly would you be able to add an extra item if you were allow to explicitly create a data object? Would you basically be able to bind control to data source and let the runtime automatically fill the control with data source’s data , and additionally that control could also get an extra item from data source by manually creating it?! How would it be able to do that?! 

thanx

Answer: 
From [WinMerge Command line manual](http://winmerge.org/docs/manual/CommandLine.html):

```
cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe /ub /e \"
cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe /u /e \"

```

(/u is the new /ub with latest WinMerge)

might work better as a command in your mergetool section.

However, you might have to wrap this call in a script, as described in this [SO answer](https://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-visual-diff-program/392899#392899).

Extract adapted to `merge.tool`:

> 
> Practical case for configuring `mergetool` with your custom `diff` tool:
> 
> 
> 

```
C:\myGitRepo>git config --global merge.tool winmerge
C:\myGitRepo>git config --global mergetool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
C:\myGitRepo>git config --global mergetool.prompt false

```

With `winmerge.sh` stored in a directory part of your `PATH`:

```
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" -e -ub "$1" "$2"

```

> 
> If you have another tool (`kdiff3`, `P4Diff`, ...), create another shell script, and the appropriate `mergetool.myMergeTool.cmd` config directive.  
> 
>  Then you can easily switch tools with the `merge.tool` config.
> 
> 
>
```
[mergetool "winmerge"]
    cmd = winmergeu -e -ub -wl -dl "Remote" -dr "Local" "$PWD/$REMOTE" "$PWD/$LOCAL" "$PWD/$MERGED"
    keepBackup = false

```

If you look inside `C:\Program Files\Git\share\git-gui\lib\mergetool.tcl` it has syntax for common merge tools.

I'm still trying to figure out how to invoke mergetool directly from Git GUI...