This Confluence has been LDAP enabled, if you are an ASF Committer, please use your LDAP Credentials to login. Any problems file an INFRA jira ticket please.

Child pages
  • Developer Tools
Skip to end of metadata
Go to start of metadata

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