Working with Git and Gerrit » History » Version 33
Stefano Kowalke, 2011-02-28 22:32
Add paragraph about "pushInsteadOf " here
1 | 1 | Karsten Dambekalns | h1. Working with Git and Gerrit Code Review |
---|---|---|---|
2 | 22 | Karsten Dambekalns | |
3 | {{>toc}} |
||
4 | 1 | Karsten Dambekalns | |
5 | For FLOW3 and TYPO3 Phoenix we are using Git and the Gerrit Code Review system to channel commits for review. |
||
6 | 20 | Karsten Dambekalns | |
7 | 29 | Bastian Waidelich | Here is what you need to know to contribute, more details on Git are available in the "Pro Git book":http://progit.org/book/, the "Gerrit documentation":https://review.typo3.org/Documentation/index.html and other resources (see "helpful links" section below). |
8 | 1 | Karsten Dambekalns | |
9 | 28 | Karsten Dambekalns | h2. What <projectname> means in this documentation |
10 | |||
11 | When we use <projectname> in the following documentation and examples, this means the project name as used in gerrit. If you are unsure you can find out the correct URL to clone from by going to git.typo3.org and copy it from the summary page of the project you're interested in. Here are some examples of <projectname>: |
||
12 | |||
13 | FLOW3/Distributions/Base |
||
14 | FLOW3/Packages/Party |
||
15 | TYPO3v5/Distributions/Base |
||
16 | |||
17 | 26 | Karsten Dambekalns | h2. Quickstart Guides |
18 | 1 | Karsten Dambekalns | |
19 | 26 | Karsten Dambekalns | * For a quick "Getting Started" guide, see the [[Gerrit and Git Quickstart]] |
20 | * Here is a transcript of a session [[Cloning the FLOW3 Base Distribution]] |
||
21 | * Here is a transcript of a session [[Cloning the TYPO3 Phoenix Base Distribution]] |
||
22 | 25 | Sebastian Kurfuerst | |
23 | 26 | Karsten Dambekalns | *Note:* Take time to learn and explore git and gerrit! |
24 | |||
25 | 1 | Karsten Dambekalns | h2. Git |
26 | 24 | Karsten Dambekalns | |
27 | 32 | Stefano Kowalke | * See [[Working with Git]] |
28 | 1 | Karsten Dambekalns | |
29 | 24 | Karsten Dambekalns | h2. Gerrit Code Review |
30 | 1 | Karsten Dambekalns | |
31 | h3. Registering with gerrit |
||
32 | |||
33 | 26 | Karsten Dambekalns | To register with gerrit, you need to have an account on typo3.org. Then visit https://review.typo3.org/ and log in using your typo3.org username and password. Click on 'Settings' -> 'Profile', and check that gerrit correctly knows your name and email address (it should; if not it might take a while for the synchronization to take place). |
34 | 1 | Karsten Dambekalns | |
35 | In order to be able to upload code, you now need to create a ssh key that gerrit can use to identify you, or tell gerrit about one that already exists. |
||
36 | |||
37 | To create a new ssh key, if you don't already have one, run |
||
38 | <pre>ssh-keygen -t dsa -f ~/.ssh/id_dsa</pre> |
||
39 | The public key for this is now stored in ~/.ssh/id_dsa.pub. |
||
40 | 23 | Karsten Dambekalns | |
41 | To tell gerrit about your key, log in, and go to 'Settings'. Select 'SSH Keys', and paste your public key into the "Add SSH Public Key" box, or click on the 'Open Key...' option to load it from the filesystem. Click on 'Add' to add the new public key. |
||
42 | 27 | Karsten Dambekalns | |
43 | 33 | Stefano Kowalke | h3. Push and Pull from different URLS |
44 | |||
45 | In our environment its necessary to pull from git://git.typo3.org but push to review.typo3.org. |
||
46 | You can set this globally for git by editing the git config file. |
||
47 | |||
48 | *Note:* You need git > 1.6.4 |
||
49 | |||
50 | <pre>git config --global url."ssh://USERNAME@review.typo3.org:29418".pushInsteadOf git://git.typo3.org</pre> |
||
51 | |||
52 | Now you can clone from git://git.typo3.org and a push on that clone would go into ssh://USERNAME@git.typo3.org:29418. |
||
53 | You can leave out username and port, if you configure those centrally in your SSH configuration. |
||
54 | |||
55 | 31 | Stefano Kowalke | h3. Setting up ssh config |
56 | |||
57 | 1 | Karsten Dambekalns | To make things easier, set up ssh so that it knows about the defaults for the gerrit server. Edit @~/.ssh/config@, and add a section like: |
58 | <pre>Host review.typo3.org |
||
59 | 23 | Karsten Dambekalns | User <username> |
60 | 1 | Karsten Dambekalns | IdentityFile ~/.ssh/id_dsa |
61 | Port 29418</pre> |
||
62 | 23 | Karsten Dambekalns | (where <username> is what you logged in with, i.e. your typo3.org username) |
63 | 1 | Karsten Dambekalns | |
64 | 23 | Karsten Dambekalns | To verify your ssh key is working correctly, try using an ssh client to connect to gerrit. You should get the following output if it all works: |
65 | 1 | Karsten Dambekalns | <pre>$ ssh review.typo3.org |
66 | 23 | Karsten Dambekalns | gerrit: no shell available |
67 | Connection to review.typo3.org closed.</pre> |
||
68 | 4 | Karsten Dambekalns | |
69 | 30 | Karsten Dambekalns | Now you can configure git to push to Gerrit whenever you clone something from git.tyo3.org. All you need to do (for git > 1.6.4) is this |
70 | |||
71 | <pre>git config --global url."ssh://review.typo3.org".pushInsteadOf git://git.typo3.org</pre> |
||
72 | |||
73 | Now you can clone from git://git.typo3.org and a push on that clone would go into ssh://git.typo3.org using your configure username and port from above. |
||
74 | |||
75 | 24 | Karsten Dambekalns | h3. [[Working with Gerrit as a Developer]] |
76 | 4 | Karsten Dambekalns | |
77 | 1 | Karsten Dambekalns | h3. [[Working with Gerrit as a Reviewer]] |
78 | 29 | Bastian Waidelich | |
79 | h2. Helpful links |
||
80 | |||
81 | * "Git Homepage":http://www.git-scm.com/ |
||
82 | * "Pro Git book":http://progit.org/book/ |
||
83 | * "Git ready - tutorials":http://gitready.com/ |
||
84 | * "Gerrit documentation":https://review.typo3.org/Documentation/index.html |
||
85 | 4 | Karsten Dambekalns | |
86 | h2. Thanks |
||
87 | 1 | Karsten Dambekalns | |
88 | ... to the folks over at "OpenAFS":http://openafs.org/ that made us stumble over gerrit and whose wiki page we shamelessly used as a base for this page. |
||
89 | 2 | Karsten Dambekalns | |
90 | ... to Sebastian Kurfürst, Peter Niederlag, Christopher Hlubek for their help with git, gerrit and redmine. |
||
91 | |||
92 | 23 | Karsten Dambekalns | ... Bastian Waidelich for being the brave Windows test user. |
93 | 26 | Karsten Dambekalns | |
94 | ... to Shawn Pearce for being helpful on the gerrit mailing list. |
||
95 | 5 | Karsten Dambekalns | |
96 | 1 | Karsten Dambekalns | ... to the TYPO3 Core Team for being open towards a change in SCM flavor. |