Developing with Git source controlled projects
Git Configurations
Here are some suggested tweaks you can make to the base git configuration.
[alias] ci = commit st = status br = branch co = checkout df = diff lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative [core] # WINDOWS # autocrlf = true # Mac or Linux autocrlf = input
Developing for Pentaho with Git
Pentaho is in the process of migrating all active projects from Subversion to Git hosted on GitHub.com. You can track which projects have been migrated, see their old and new locations at Git Migration List
Tips and tricks
Avoid the issue where you have modified files that you don't want to prevent you from "pull"'ing in new code.
Thanks to Tim Kafalas for this one
Git detects .classpath as local changes and will not allow a “pull” while these changes are present in your working folder. One way to get around this is to stash the local changes, do the pull, then pop the stash. There is another way, however, that will not stress out Eclipse with a re-index.
By default, Git uses a bit in git metadata to determine if a file has changed. This is much more efficient than actually comparing the contents of the file.
The command…
git update-index --assume-unchanged {myClassPathFile}
… will reset that bit so that it looks like the file is unchanged. So if you issue this command for each classpath file you should never have to stash them again.
This bit can be changed in Egit by selecting Team -> Advanced -> Assume Unchanged on the file in question.
Note that this setting will “stick” until turned off manually, or until you re-clone the repository. So don’t use it on files you have changed but don’t want to commit yet, unless you are prepared to manually set the bit afterword.
Ignore whitespace when viewing pull requests on github
Github easter egg: add ?w=0 to diff URLs (eg a commit, compare view or pull request) to ignore whitespace
Good article on pull request best practices:
http://codeinthehole.com/writing/pull-requests-and-other-good-practices-for-teams-using-github/
Get Git
Follow the instructions for your environment here:
http://git-scm.com/
git-completion
For the linux/mac users, there is a nice script available called git-completion that provides auto-completion of git commands, branch names and other helpful things. It also provides a way to display the active branch on your commandline prompt.
Download the appropriate git-completion script (https://github.com/git/git/tree/master/contrib/completion) and put it in your ~/bin folder. Then source this file in your .profile or .bash-profile. To add the active git branch to your prompt, set your PS1 setting (for the display prompt on a terminal) to something like this:
PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ '
Sign-up for a GitHub account.
Accessing Pentaho code hosted on GitHub
All projects migrated to Git are hosted on the Pentaho organization: https://github.com/pentaho
Contributing code
Pentaho has no special procedures for working with our GitHub repositories. Follow the general workflow and instruction on GitHub:
https://help.github.com/
When you're ready to submit code with a Pull Request, create a Jira case and use the case number in your commit messages, e.g. "[JIRA-1234] adding new functionality". When submitted update the Jira case with a link to the pull request on GitHub.
Advanced Topics
Advanced Git Topics - Preferred workflow, get yourself out of git trouble, and other cool stuff