Diff and Merge tools

Araxis has been kind enough to give us free licenses for Araxis Merge if you work on open source, just submit a request at http://www.araxis.com/buy/open-source

Download from http://www.araxis.com/url/merge/download.uri

You will be prompted for your serial number when you run the application for the first time. To enter a new serial number into an existing installation, click the Re-Register... button in the About window.

Integrating Araxis to Git as your Diff and Merge tool

After installing Araxis Merge,

On Mac OS X,

  • Drag Araxis across to your ~/Applications folder as normal

  • Copy the contents of the Utilities folder to (e.g.) /usr/local/araxis/bin

  • Add the path to your startup script: export PATH="$PATH:/usr/local/araxis/bin"

In your .gitconfig file (tested on Mac OS X),

[diff]
        tool = araxis
[difftool]
        prompt = false
[merge]
        tool = araxis_merge
[mergetool "araxis_merge"]
        cmd = araxisgitmerge "$PWD/$REMOTE" "$PWD/$BASE" "$PWD/$LOCAL" "$PWD/$MERGED"

Git Best Practices

This is just a personal preference, but it may be easier to create one Git branch per Jira/feature. E.g.,

git checkout trunk
git checkout -b AMBARI12345                             # create the branch and switch to it
git branch --set-upstream-to=origin/trunk AMBARI12345   # set the upstream so that git pull --rebase will get the HEAD from trunk
# Do work,
git commit -m "AMBARI-12345. Foo (username)"
# Do more work
git commit --amend                                      # edit the last commit
git pull --rebase
 
# If conflicts are detected, then run
git mergetool                                           # should be easy if you have Araxis Merge setup to do a 3-way merge
git rebase --continue
git push origin HEAD:trunk

 Useful Git Commands

In your .gitconfig file,

[alias]
        st = status
        ci = commit
        br = branch
        co = checkout
        dc = diff --cached
        dtc = difftool --cached
        lg = log -p
        lsd = log --graph --decorate --pretty=oneline --abbrev-commit --all
        slast = show --stat --oneline HEAD
        pshow = show --no-prefix --format=format:%H --full-index
        pconfig = config --list

Also, in your ~/.bashrc or ~/.profile file,

alias branchshow='for k in `git branch|perl -pe s/^..//`;do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k|head -n 1`\\t$k;done|sort'

This command will show all of your branches sorted by the last commit times, which is useful if you develop one feature per branch.

  • No labels