Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "E4/Git"
(→Submitting for a build) |
(→Current Repos) |
||
(12 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
+ | For working in git lately I've been using the latest eGit. Functionality has been increasing week over week, so I just use their latest nightly: | ||
+ | |||
+ | http://download.eclipse.org/egit/updates-nightly | ||
+ | |||
+ | Some resources: | ||
+ | |||
+ | * Git - http://git-scm.com/ | ||
+ | * Pro Git - http://progit.org/book/ | ||
+ | * Git tutorial http://www.vogella.de/articles/Git/article.html | ||
+ | |||
== Git in e4 == | == Git in e4 == | ||
Line 8: | Line 18: | ||
* git://git.eclipse.org/gitroot/e4/org.eclipse.e4.utils.git | * git://git.eclipse.org/gitroot/e4/org.eclipse.e4.utils.git | ||
* git://git.eclipse.org/gitroot/e4/org.eclipse.e4.installer.git | * git://git.eclipse.org/gitroot/e4/org.eclipse.e4.installer.git | ||
+ | * git://git.eclipse.org/gitroot/e4/org.eclipse.e4.search.git | ||
A repo then follows our standard subdir convention: | A repo then follows our standard subdir convention: | ||
Line 15: | Line 26: | ||
* tests | * tests | ||
− | We build our git repos still using map files, | + | 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://pwebster@git.eclipse.org/gitroot/e4/component.id.git | ||
+ | # cd component.id | ||
+ | # mkdir bundles features examples 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 | ||
+ | |||
+ | |||
+ | |||
+ | Example .gitignore | ||
+ | bin/ | ||
+ | *~ | ||
+ | *.rej | ||
+ | *.bak | ||
+ | |||
+ | |||
+ | |||
+ | We build our git repos still using map files, but they have their own git repo [http://git.eclipse.org/c/e4/org.eclipse.e4.releng.git org.eclipse.e4.releng.git] . You can generate a default map file for your initial commit from your repo root using [http://dev.eclipse.org/viewcvs/index.cgi/e4/releng/org.eclipse.e4.builder/scripts/git-gen-map.sh?view=co&content-type=text/plain git-gen-map.sh]. ex: | ||
+ | |||
+ | /bin/bash git-gen-map.sh git://git.eclipse.org/gitroot/e4/org.eclipse.e4.search.git v20101124-0800 bundles tests features | ||
+ | |||
+ | === Submitting for a build === | ||
+ | <blockquote>''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. <br> </blockquote> | ||
+ | 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 e4-dev@eclipse.org | ||
+ | |||
+ | This information is now available for legacy information, as we use "auto-tagging" of an '''integration''' branch to submit changes to the build. | ||
+ | |||
+ | [http://dev.eclipse.org/viewcvs/index.cgi/e4/releng/org.eclipse.e4.builder/scripts/git-map.sh?view=co&content-type=text/plain 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.<br> | ||
+ | |||
+ | [http://dev.eclipse.org/viewcvs/index.cgi/e4/releng/org.eclipse.e4.builder/scripts/git-submission.sh?view=co&content-type=text/plain 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".<br> | ||
+ | |||
+ | <br> When submitting for a build, the git repository clones should be checked out on the branch you wish to tag.<br> | ||
+ | |||
+ | 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:<br> | |
+ | <pre>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 | |
− | #run the | + | more report.txt #examine submission report |
− | + | </pre> | |
− | # | + | |
− | + | ||
− | + | The script does not commit the map file changes. The map files should be reviewed and manually commited. | |
− | + | ||
− | + | ||
− | + | [[Category:Git]] | |
− | + |
Revision as of 08:26, 12 January 2012
For working in git lately I've been using the latest eGit. Functionality has been increasing week over week, so I just use their latest nightly:
http://download.eclipse.org/egit/updates-nightly
Some resources:
- Git - http://git-scm.com/
- Pro Git - http://progit.org/book/
- Git tutorial http://www.vogella.de/articles/Git/article.html
Git in e4
We have a place in e4 for git repositories.
Current Repos
- git://git.eclipse.org/gitroot/e4/org.eclipse.e4.deeplink.git
- git://git.eclipse.org/gitroot/e4/org.eclipse.e4.utils.git
- git://git.eclipse.org/gitroot/e4/org.eclipse.e4.installer.git
- git://git.eclipse.org/gitroot/e4/org.eclipse.e4.search.git
A repo then follows our standard subdir convention:
- bundles
- features
- examples
- tests
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://pwebster@git.eclipse.org/gitroot/e4/component.id.git
- cd component.id
- mkdir bundles features examples 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
Example .gitignore
bin/ *~ *.rej *.bak
We build our git repos still using map files, but they have their own git repo org.eclipse.e4.releng.git . You can generate a default map file for your initial commit from your repo root using git-gen-map.sh. ex:
/bin/bash git-gen-map.sh git://git.eclipse.org/gitroot/e4/org.eclipse.e4.search.git v20101124-0800 bundles tests features
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.
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 e4-dev@eclipse.org
This information is now available for legacy information, as we use "auto-tagging" of an integration branch to submit changes to the build.
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.