- Git - http://git-scm.com/
- Pro Git - http://progit.org/book/
- Git tutorial http://www.vogella.de/articles/Git/article.html
- Platform-releng/Git Workflows
Git in e4
We have a place in e4 for git repositories.
See them at http://git.eclipse.org/c/e4/.
A repo then follows our standard subdir convention:
When creating a repo on the server, follow these steps (Please update them if there are better steps :-)
- log into git.eclipse.org
- cd /gitroot/e4
- mkdir component.id.git # ex: mkdir org.eclipse.e4.search.git
- cd component.id.git
- git init --bare
This creates a bare repo that can be cloned. Then on your work machine
- git clone ssh://email@example.com/gitroot/e4/component.id.git
- cd component.id
- mkdir bundles features examples releng tests
- add a useful .gitignore. See below
- copy in your plugins into bundles, features into features, test plugins into tests, etc
- add all of your files: git add -A
- commit them with a useful commit message
- add 2 tags. One will be initial-import. The other should be a time tag, like v20101124-0800
- I split the next step up into 2:
- git push origin master
- git push --tags origin
bin/ *~ *.rej *.bak javacore.* heapdump.* core.* Snap.*
Our git repos no longer use the map files.
Submitting for a build
Note: We have a policy that all commits have the associated bug number. Usually our format is: "Bug <number> - <bug title>" and then any specific comments after the title or on the next line. It's important that we only list 1 bug # per line, and at the beginning of the line. A line with "bug #" or "Bug #" without the title is also acceptable.
This information is now available for legacy information, as we use "auto-tagging" of the master branch to submit changes to the build.
We have 2 scripts used for submitting for the build. One to update the map files, and one to generate the submission report for our mailing list firstname.lastname@example.org
git-map.sh is used to update the map files.The output is a set of commands which should be captured, reviewed and then executed to update the map files.
git-submission.sh is used to generate a build submission report. The last command output by git-map.sh will be a call to git-submission.sh saving the output to "report.txt".
When submitting for a build, the git repository clones should be checked out on the branch you wish to tag.
The git-map.sh takes the following arguments:
git-map.sh repoRoot relengRoot repoUrl [repoUrl]*
- repoRoot: an absolute path to a folder containing cloned git repositories
- relengRoot: an absolute path to the releng project containing the map files
- repoUrl - git repository URLs to tag
The script performs the following steps:
- Find all the map files under relengRoot
- For each map file, find all entries containing "repo=repoUrl" where repoUrl is one of the passed in git repositories
- For each git map file entry, find the corresponding project under the git repository clone under repoRoot.
- Check if the last commit in the project has the current tag from the map file, if not tag and output a command to update the map file
For example, consider a git repository git://git.eclipse.org/gitroot/org.eclipse.e4.deeplink.git. If repoRoot=/eclipse/git then the script expects a subfolder /eclipse/git/org.eclipse.e4.deeplink which is a clone of this repository. The releng map files are under /eclipse/workspace/e4-releng. The command line to invoke git-map.sh would be:
repoRoot: /eclipse/git /eclipse/git/org.eclipse.e4.deeplink #deeplink clone /eclipse/git/org.eclipse.e4.search #search clone relengRoot: /eclipse/workspace/e4-releng #project containing map files /eclipse/workspace/e4-releng/org.eclipse.e4.deeplink.releng/maps/deeplink.map /eclipse/workspace/e4-releng/org.eclipse.e4.search.releng/maps/search.map /bin/bash git-map.sh /eclipse/git \ /eclipse/workspace/e4-releng \ git://git.eclipse.org/gitroot/e4/org.eclipse.e4.deeplink.git \ git://git.eclipse.org/gitroot/e4/org.eclipse.e4.search.git > maps.txt more maps.txt #examine maps.txt grep -v ^OK maps.txt | grep -v ^Executed > run.txt #filter out status lines to create a runnable script /bin/bash run.txt #run the commands, the last command is a call to git-submission.sh more report.txt #examine submission report
The script does not commit the map file changes. The map files should be reviewed and manually commited.