Difference between revisions of "Git"
(→Committers new to Git)
(→Committing and pushing)
|Line 70:||Line 70:|
[[Image:Git.png|thumb|The wrong way]]
[[Image:Git.png|thumb|The wrong way]]
[[Image:Git-correct.png|thumb|The right way]] Before committing code to your cloned repo, please ensure that your Git environment is properly set. Otherwise, the email address stored in the commit transaction in your repository will not match
[[Image:Git-correct.png|thumb|The right way]] Before committing code to your cloned repo, please ensure that your Git environment is properly set. Otherwise, the email address stored in the commit transaction in your repository will not match email address of your Eclipse Committer record with the Eclipse Foundation, and your push will fail.
=== IP process implications of DVCS ===
=== IP process implications of DVCS ===
Revision as of 13:18, 15 June 2011
- 1 Git mirrors of CVS repositories
- 2 Git repositories
- 2.1 List of Git repositories available
- 2.2 My Eclipse project wants to use Git
- 2.3 Migrating from CVS/SVN to Git
- 2.4 Committers new to Git
- 2.5 Connecting, cloning a repo
- 2.6 Committing and pushing
- 2.7 IP process implications of DVCS
- 2.8 Creating a new repository
- 2.9 Permanently deleting code from Git
- 2.10 Setting up ssh keys
- 2.11 Setting up https for pushing
- 2.12 Referencing git repositories on the wiki
- 2.13 GitHub mirrors
Git mirrors of CVS repositories
The CVS repositories at Eclipse.org are being mirrored to read-only Git repositories. Please see the git cvs mirror page for the full list of repositories. Please note that while Git mirrors will eventually be deleted for those projects that migrate to Git, projects may exist in both places. So check the fully hosted git repositories first!
Eclipse projects may use either CVS, SVN or Git. The project you are looking for may not be using Git. Please see CVS Howto and SVN Howto for more information. If you are unsure which type of repository a project is using, please go to that project's home page.
List of Git repositories available
Please connect to http://git.eclipse.org/
My Eclipse project wants to use Git
- New projects may choose Git as their repository in the New Project Provisioning Request.
- Existing projects may migrate to Git from SVN or CVS. Please see Git/Migrating to Git for more details.
Migrating from CVS/SVN to Git
Please see Git/Migrating to Git.
Committers new to Git
Before working on a Git repository, please:
- Read Git for Dummies
- Read The Git Parable
- Have the Git Guide handy
- Note that anyone can commit to their repo, but only Eclipse committers can push their repo to git.eclipse.org
- DON'T FORGET to configure your git environment. The 'commit' record must contain either your Eclipse User ID, or the email address registered with the Eclipse Foundation.
git config --global user.email email@example.com git config --global user.name "John Doe"
- Note that the above will set this as the default user name and email address to use when writing commits. You can set user.name and password on a per repository basis.
git config user.email firstname.lastname@example.org git config user.name "John Doe"
This will set the username and email address on just the current git repository.
Connecting, cloning a repo
Please see the list of Git repositories (above).
git clone ssh://email@example.com/gitroot/project/repo git clone https://firstname.lastname@example.org/gitroot/project/repo (if enabled for your repository)
Committer access via https is disabled (and discouraged), but it is available. Please ask Webmaster if you absolutely need commit access over https.
Anonymous, read-only access:
git clone git://git.eclipse.org/gitroot/project/repo git clone http://git.eclipse.org/gitroot/project/repo
git clone ssh://email@example.com/gitroot/babel/org.eclipse.babel.server.git git clone git://git.eclipse.org/gitroot/babel/org.eclipse.babel.server.git
Committing and pushing
IP process implications of DVCS
Due to our rigorous IP process, the Eclipse.org use-case for a DVCS is different than that of other Open Source organizations. For this reason, an update hook is installed and must remain in place on every Git repository to ensure a clean IP provenance.
The Eclipse update hook will examine the Committer entries of an incoming push. All the committer entries must be made by the committer performing the push, or the push will fail. Furthermore, your committer ID, or the committer email address registered with your committer account at the Eclipse Foundation must be present in the Committer Email record. Here are some scenarios to help understand this restriction:
Scenario 1 Jane Contributor is Author of code. Commits to her local repo. Jane Contributer pushes (publishes) to a committer's local repo. Committer pushes code to git.eclipse.org will fail. Committer cannot push code to us that they did not Commit.
Scenario 2 Jane Committer is Author of code. Commits to her local repo. Jane Committer pushes (publishes) to another committer's local repo. Committer pushes code to git.eclipse.org will fail. Committer cannot push code to us that they did not commit (even if it is from another committer).
Scenario 3 Jane Committer, known as firstname.lastname@example.org to the Eclipse Foundation, is Author of code. Commits to her local repo as email@example.com. Jane Committer pushes code to git.eclipse.org will fail. Eclipse.org does not recognize firstname.lastname@example.org.
Scenario 4 Joe Contributor Authors code. Commits to his local repo. Joe Contributor attaches patch to Bugzilla. Committer applies patch to his local repo, commits to his local repo. Committer pushes code to git.eclipse.org will succeed. Committer can push their committed code to us, preserving the Author information in the transaction.
Please see Handling Git Contributions for information on how to handle "pull" requests from non-committers.
Creating a new repository
Webmaster can create a new repository for you. Just open a bug against Eclipse Foundation > Community > Git. However, Eclipse committers with shell accounts can create new repositories:
For consistency, the name of the repository must end with .git.
Permanently deleting code from Git
If you are required to permanently remove code from a Git repository, please open a bug against Community/Git and Webmaster will do this for you.
Setting up ssh keys
[This doesn't work unless you are a project lead or are granted a proper shell to work in (only project leads at the moment). See bug 312034.]
To avoid having to type in your password for each interaction with the server when using git from the command line:
- Generate a public/private key pair if you don't already have one on your own machine
- sftp email@example.com and transfer the id_xxx.pub files from your .ssh directory
- ssh firstname.lastname@example.org
- mkdir .ssh
- chmod 700 .ssh
- cd .ssh
- cat ../id_xxx.pub >>authorized_keys (for each .pub file you transferred)
- chmod 600 authorized_keys
[At the moment, sftp is blocked, and using scp works, but you cannot run the mkdir command so cannot put the *.pub files into authorized_keys.]
Setting up https for pushing
Here is a sample .gitconfig file which is used for git push via https. It is expected to be into your user's system directory (e.g. for Windows Vista "C:\Users\dtenev\.gitconfig").
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = https://email@example.com/gitroot/webtools/incubator/org.eclipse.webtools.incubator.sieditor.git [branch "master"] remote = origin merge = refs/heads/master [http] proxy = http://proxy:8080 [user] name = dtenev email = firstname.lastname@example.org
It is configured for the following git project (notice that you got the 'c' letter into the following path): https://git.eclipse.org/c/webtools/incubator/org.eclipse.webtools.incubator.sieditor.git/
Do notice few things:
- URL to the remote contains user's name. Git will require your password on git push execution.
- URL to the remote does not contain the 'c' letter from the https browse URL above.
You may be curious to see the bugzilla issue (https://bugs.eclipse.org/bugs/show_bug.cgi?id=326992) which enabled https push in git repository, and do lead to the above contents of .gitconfig file.
Referencing git repositories on the wiki
To include a reference to your Git repository on your wiki page, you can use the Git Link Template. This links to the web interface where readers can get an overview of the repository, browse the source code, and see some commit stats. Here is an example:
Git repositories hosted on eclipse.org are now mirrored at GitHub.
See the Git/GitHub wiki page on Eclipsepedia for more information.
The Eclipse organization at GitHub is maintained by: