Gerrit's own Gerrit now available

543 views
Skip to first unread message

Shawn Pearce

unread,
Jan 9, 2012, 10:17:13 PM1/9/12
to repo-discuss, Martin Fick, Sasa Zivkov
Gerrit Code Review's own Gerrit instance is now available to anyone:

https://gerrit-review.googlesource.com/

User sign-in requires a Google Account. If you previously used a
different OpenID provider (e.g. Yahoo!) you will need to setup a new
user account.

= Sources by Git =

To clone/fetch the Gerrit repository with Git, use this URL:

https://gerrit.googlesource.com/gerrit

The sibling repositories for gwtorm, etc. are at:

https://gerrit.googlesource.com/gwtorm
https://gerrit.googlesource.com/gwtexpui
https://gerrit.googlesource.com/gwtjsonrpc
https://gerrit.googlesource.com/git-repo

These URLs access the same repository used by the Gerrit Code Review
interface and are always current. On individual change pages the
Gerrit web UI will advertise these URLs to you. (Dropping the
"-review" portion of the hostname allows the request to skip the
Gerrit specific processing logic, decreasing response time for
requests.)


= Uploading Changes =

A contributor must generate a password by visiting Settings > HTTP
Password, or directly jumping to the password generator URL in a web
browser:

https://gerrit-review.googlesource.com/new-password

Once a password has been saved to ~/.netrc, changes can be pushed for
review over HTTP:

 https://gerrit-review.googlesource.com/p/gerrit


= Missing: gitweb =

The new project infrastructure does not support gitweb. Web based
source browsing is available at Google Project Hosting, but this is a
stale copy that must be manually synchronized by committers.

http://code.google.com/p/gerrit/source/browse/

= Disabled: SSH or git:// =

The new project infrastructure does not support SSH, and does not
support the git:// protocol. Access is available only by HTTP or
HTTPS. Using HTTPS is strongly recommended, but not required.

= Known Bug: Login Redirect Loop =

Like any fancy new website that uses some sort of single-sign-on
system... there is a known bug where the browser can get stuck in a
redirect loop if you have not visited the site in the past few days,
but had signed-in at least once previously.

As a work-around, delete any cookies for
gerrit-review.googlesource.com and try loading the site again. Yes we
are working on it. No, it is not an easy thing to debug or fix. Please
be patient.

= Known Bug: Upload push fails with no output =

Sometimes we have seen uploads fail with no error messages on the
client side. This is a known bug somewhere in the Gerrit or JGit
portions where the reply to the client was smaller than a configured
buffer size on the server and the reply didn't get flushed to the
client at the end of the request. I thought I had this fixed upstream
in JGit but it is still showing up sometimes in Gerrit.

Double check your committer line in the commit matches with the
contact information on your Gerrit account. Verify you have a
contributor agreement in Settings > Agreements. Try fetching current
master and rebasing your new commits on top of it. Usually its one of
these.


= Environment Status =

This is a beta environment. It is running bleeding edge Gerrit Code
Review. It is not a stock Gerrit installation. We are still shaking
out problems.

The SQL database was replaced with a NoSQL system built on top of
Google Bigtable by implementing a different database backend for
gwtorm. This backend has some interesting properties, namely it is
slower than a SQL database on the same host like most Gerrit
installations use. Long story short, please be patient with the new
environment. Response times aren't where we want them to be.

The Git repositories are stored on a hybrid solution of Google
Bigtable and the Google filesystem. Most of this backend
implementation is already available in the upstream JGit project as
the storage.dfs package. It can be quite a bit slower to upload new
commits for review, or to submit changes.

Rob Heittman

unread,
Jan 9, 2012, 10:33:50 PM1/9/12
to repo-discuss
Extremely awesome! Signed in! I have some 14-month-old commits to merge as change requests ... oy! that should be fun. seeya in about March when git mergetool finishes with me ... :-)

Seriously, huge congratulations on this big milestone. I hope it will be a watershed moment in Gerrit history!

Matthias Sohn

unread,
Jan 10, 2012, 3:07:13 AM1/10/12
to Shawn Pearce, repo-discuss, Martin Fick, Sasa Zivkov
2012/1/10 Shawn Pearce <s...@google.com>

Gerrit Code Review's own Gerrit instance is now available to anyone:

 https://gerrit-review.googlesource.com/

Congratulations
we are piloting Gitblit [1] to replace gitweb in another restricted environment 
at SAP and this looks pretty good. It's more or less a drop-in replacement for 
Gitweb implemented as a Java web application fully betting on http/https 
protocol. Maybe this helps also on Google infrastructure.

 

--
Matthias

Philipp Altmann

unread,
Jan 10, 2012, 4:36:27 AM1/10/12
to Repo and Gerrit Discussion
> we are piloting Gitblit [1] to replace gitweb in another restricted
> environment
> at SAP and this looks pretty good. It's more or less a drop-in replacement
> for
> Gitweb implemented as a Java web application fully betting on http/https
> protocol. Maybe this helps also on Google infrastructure.
>
> [1]http://gitblit.com/
>

This sounds good! Gitblit is more "beautiful" as gitweb.

Cheers,
Philipp

Swindells, Thomas

unread,
Jan 10, 2012, 4:55:23 AM1/10/12
to Philipp Altmann, Repo and Gerrit Discussion
That does look better. Are you running it totally independently from Gerrit or have you got it integrated the same way as GitWeb is to share gerrit's access controls?

Thomas


**************************************************************************************
This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postm...@nds.com and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary.

NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00
**************************************************************************************

Philipp Altmann

unread,
Jan 10, 2012, 5:28:26 AM1/10/12
to Repo and Gerrit Discussion
Will be this Gerrit integrated with Jennkins / Hudson setup?

Philipp

Peter Jönsson P

unread,
Jan 10, 2012, 6:05:35 AM1/10/12
to Philipp Altmann, Repo and Gerrit Discussion

Hi!

There is a Jenkins-job on Jenkins internal-CI wich is supposed to build master of Gerrit [1]. Not sure who set this up, Luca should know more. Also, this does not provide per-commit-build-verficiation using the Gerrit-trigger plugin for Jenkins. But i guess that is a small thing to setup if it is wanted.

// peter

[1] http://ci.jenkins-ci.org/job/gerrit_master/

> -----Original Message-----
> From: repo-d...@googlegroups.com
> [mailto:repo-d...@googlegroups.com] On Behalf Of Philipp Altmann
> Sent: den 10 januari 2012 11:28
> To: Repo and Gerrit Discussion
> Subject: Re: Gerrit's own Gerrit now available
>

> Will be this Gerrit integrated with Jennkins / Hudson setup?
>
> Philipp
>

Lundh, Gustaf

unread,
Jan 10, 2012, 8:08:49 AM1/10/12
to Peter Jönsson P, Philipp Altmann, Repo and Gerrit Discussion
Since gerrit-review.googlesource.com does not run with an SSHD, it will sadly not be possible to use the Gerrit Trigger Plug-in.

Best regards
Gustaf

Luca Milanesio

unread,
Jan 10, 2012, 8:08:51 AM1/10/12
to Peter Jönsson P, Kohsuke Kawaguchi, Philipp Altmann, Repo and Gerrit Discussion
Actually it is configured here:

... but it is broken since Dec 21st :-(
(probably the GIT URL needs to be updated again and pointing now to Gerrit)

I would be nice to have the Gerrit trigger plug-in as well, in order to have the feedback on Gerrit about the status of the builded change-set.
I remember that Kohsuke probably would have set-up something more specific for Gerrit with CloudBees.

Luca.
---
Luca Milanesio
Lu...@Milanesio.org
Mobile: +44-(0)7928-617383
Skype: lucamilanesio


Luca Milanesio

unread,
Jan 10, 2012, 8:18:46 AM1/10/12
to Lundh, Gustaf, Peter Jönsson P, Philipp Altmann, Repo and Gerrit Discussion
Yes, valid point.

IMHO Gerrit Trigger Plug-in should be extended to support HTTP and HTTP/S ;-)

Luca.
---
Luca Milanesio
Lu...@Milanesio.org
Mobile: +44-(0)7928-617383
Skype: lucamilanesio



Philipp Altmann

unread,
Jan 10, 2012, 8:20:02 AM1/10/12
to Repo and Gerrit Discussion
I would be very good when you have the Gerrit trigger-plugin in this
setup. In my opinion this is one of the best plugins for Jenkins to
work with Gerrit because you get instant feedback from the build
server when you are building for different os / settings.

Philipp

On Jan 10, 2:08 pm, Luca Milanesio <luca.milane...@gmail.com> wrote:
> Actually it is configured here:http://ci.jenkins-ci.org/job/gerrit_master/
>
> ... but it is broken since Dec 21st :-(
> (probably the GIT URL needs to be updated again and pointing now to Gerrit)
>
> I would be nice to have the Gerrit trigger plug-in as well, in order to have the feedback on Gerrit about the status of the builded change-set.
> I remember that Kohsuke probably would have set-up something more specific for Gerrit with CloudBees.
>
> Luca.
> ---
> Luca Milanesio
> L...@Milanesio.org
> Mobile: +44-(0)7928-617383
> Skype: lucamilanesio
>
> On 10 Jan 2012, at 12:05, Peter Jönsson P wrote:
>
>
>
>
>
>
>
>
>
> > Hi!
>
> > There is a Jenkins-job on Jenkins internal-CI wich is supposed to build master of Gerrit [1]. Not sure who set this up, Luca should know more. Also, this does not provide per-commit-build-verficiation using the Gerrit-trigger plugin for Jenkins. But i guess that is a small thing to setup if it is wanted.
>
> > // peter
>
> > [1]http://ci.jenkins-ci.org/job/gerrit_master/
>
> >> -----Original Message-----
> >> From: repo-d...@googlegroups.com
> >> [mailto:repo-d...@googlegroups.com] On Behalf Of Philipp Altmann
> >> Sent: den 10 januari 2012 11:28
> >> To: Repo and Gerrit Discussion
> >> Subject: Re: Gerrit's own Gerrit now available
>
> >> Will be this Gerrit integrated with Jennkins / Hudson setup?
>
> >> Philipp
>
> >> --
> >> To unsubscribe, email repo-discuss...@googlegroups.com
> >> More info athttp://groups.google.com/group/repo-discuss?hl=en

Philipp Altmann

unread,
Jan 10, 2012, 8:43:53 AM1/10/12
to Repo and Gerrit Discussion
Hi Gustaf,

have you time to implement this :-).

Philipp

On Jan 10, 2:08 pm, "Lundh, Gustaf" <Gustaf.Lu...@sonyericsson.com>
wrote:
> Since gerrit-review.googlesource.com does not run with an SSHD, it will sadly not be possible to use the Gerrit Trigger Plug-in.
>
> Best regards
> Gustaf
>
>
>
>
>
>
>
> -----Original Message-----
> From: repo-d...@googlegroups.com [mailto:repo-d...@googlegroups.com] On Behalf Of Peter Jönsson P
> Sent: den 10 januari 2012 12:06
> To: Philipp Altmann; Repo and Gerrit Discussion
> Subject: RE: Gerrit's own Gerrit now available
>
> Hi!
>
> There is a Jenkins-job on Jenkins internal-CI wich is supposed to build master of Gerrit [1]. Not sure who set this up, Luca should know more. Also, this does not provide per-commit-build-verficiation using the Gerrit-trigger plugin for Jenkins. But i guess that is a small thing to setup if it is wanted.
>
> // peter
>
> [1]http://ci.jenkins-ci.org/job/gerrit_master/
>
> > -----Original Message-----
> > From: repo-d...@googlegroups.com
> > [mailto:repo-d...@googlegroups.com] On Behalf Of Philipp Altmann
> > Sent: den 10 januari 2012 11:28
> > To: Repo and Gerrit Discussion
> > Subject: Re: Gerrit's own Gerrit now available
>
> > Will be this Gerrit integrated with Jennkins / Hudson setup?
>
> > Philipp
>
> > --
> > To unsubscribe, email repo-discuss...@googlegroups.com
> > More info athttp://groups.google.com/group/repo-discuss?hl=en

Lundh, Gustaf

unread,
Jan 10, 2012, 8:53:00 AM1/10/12
to Philipp Altmann, Repo and Gerrit Discussion
Hi Philipp!

Sadly no. It really needs the stream-event & review-cmd functionality of Gerrit.

I guess we won't have much of a change of getting around that, at least not until we see some plug-in support in Gerrit :/

Matthias Sohn

unread,
Jan 10, 2012, 11:44:47 AM1/10/12
to Swindells, Thomas, Philipp Altmann, Repo and Gerrit Discussion
Currently we run Gitblit independently without respecting Gerrit's access controls
and we also didn't try to integrate this yet.

--
Matthias

2012/1/10 Swindells, Thomas <TSwin...@nds.com>



--
Matthias

Matthias Sohn

unread,
Jan 10, 2012, 11:57:28 AM1/10/12
to Luca Milanesio, Peter Jönsson P, Kohsuke Kawaguchi, Philipp Altmann, Repo and Gerrit Discussion
2012/1/10 Luca Milanesio <luca.mi...@gmail.com>

Actually it is configured here:

... but it is broken since Dec 21st :-(
(probably the GIT URL needs to be updated again and pointing now to Gerrit)
 
I updated the GIT URL and the build is underway
 
I would be nice to have the Gerrit trigger plug-in as well, in order to have the feedback on Gerrit about the status of the builded change-set.

AFAIK this would require that Gerrit exposes the following currently available 
ssh commands "gerrit reviews" and "gerrit stream-events" also over http
 
--
Matthias

Luca Milanesio

unread,
Jan 10, 2012, 12:01:00 PM1/10/12
to Repo and Gerrit Discussion, Matthias Sohn
Thanks Matthias :-)

I could have a look at this.
If the business logic is inside the gerrit-sshd part, this would require a bit of refactoring moving that part to gerrit-server.

@Shawn: do you have any concern in moving those commands to a JSON-RPC level ? (and thus exposed via HTTP/S)

Luca.
---
Luca Milanesio
Lu...@Milanesio.org
Mobile: +44-(0)7928-617383
Skype: lucamilanesio



Shawn Pearce

unread,
Jan 10, 2012, 12:50:22 PM1/10/12
to Luca Milanesio, Repo and Gerrit Discussion, Matthias Sohn
On Tue, Jan 10, 2012 at 09:01, Luca Milanesio <luca.mi...@gmail.com> wrote:
> I could have a look at this.
> If the business logic is inside the gerrit-sshd part, this would require a
> bit of refactoring moving that part to gerrit-server.

A fair chunk of it is, yes. It will require some refactoring to move
this around.

> @Shawn: do you have any concern in moving those commands to a JSON-RPC level
> ? (and thus exposed via HTTP/S)

review should be moved to a JSON-RPC interface, yes. We may need to be
careful with gwtjsonrpc's extension of the JSON-RPC 2.0 specification
where it embeds the xsrfToken in the request body. This is
non-standard, so makes it harder for a JSON-RPC client to use the
interface. User authentication is also difficult with JSON-RPC because
we don't have a good standard like the public/private SSH key to rely
on. Aside from that, it should be simple to define the review command
arguments as a structure, make a JSON-RPC interface to parse that
structure and feed it to a common Review implementation, and have the
SSH Review class convert its arguments into the same structure and
feed it to the same implementation class that the JSON-RPC code uses.

stream-events is more difficult. It should also be available as a
JSON-RPC interface. But its way more complex. Just to give you an
idea, gerrit-review is actually a group of machines, in geographically
diverse regions. An event processed in a server in the EU isn't
available to the other servers. In order to do stream-events all
events need to be aggregated and then redistributed. Until that is
done, stream-events on gerrit-review.googlesource.com isn't going to
be useful. stream-events could be done as a JSON-RPC request to supply
the parameters to configure what the stream receives, but then it
needs to really be a stream of JSON just like the SSH command does, so
its not quite JSON-RPC. The HTTP stream will be broken every so often,
and need to be setup again by the client. Which means the stream needs
to be able to resume from where the client last left off. We discussed
this at GitTogether as being necessary for the SSH version too, but I
think its even more critical with the HTTP interface.

So yes, we should expose these by HTTP. And it would be great if
someone could do some (or all!) of the work. :-)

Deen Sethanandha

unread,
Jan 11, 2012, 12:59:28 PM1/11/12
to Shawn Pearce, Repo and Gerrit Discussion
Shawn, 

Thanks for the hard work.  I am wondering if you plan to put the full history of Gerrit on the server?  Right now, the oldest change is on Nov 5, 2009.

-- Deen

Shawn Pearce

unread,
Jan 11, 2012, 2:58:47 PM1/11/12
to Deen Sethanandha, Repo and Gerrit Discussion

I don't know what you are talking about. We have history going back to
Oct 21, 2008:

https://gerrit-review.googlesource.com/#/q/status:merged,n,00007ae200000318

Any history predating the launch of the Android Open Source Project
doesn't exist anymore. Nor is it relevant. Gerrit this old is Python
running on Google AppEngine. You really don't want to look at that.

Deen Sethanandha

unread,
Jan 11, 2012, 4:08:38 PM1/11/12
to Shawn Pearce, Repo and Gerrit Discussion


I don't know what you are talking about. We have history going back to
Oct 21, 2008:

https://gerrit-review.googlesource.com/#/q/status:merged,n,00007ae200000318

I am sorry for the confusion. I was looking at the open list.

Pravin

unread,
Jan 22, 2012, 4:24:32 AM1/22/12
to Repo and Gerrit Discussion
I created a google account but when I login to
https://gerrit-review.googlesource.com/#/settings/contact it does
not allow me to edit my contact details i.e First and Last Name.
Besides, it displays logged in name as 'Anonymous Coward'.

Have I missed upon something?

Thanks

Shawn Pearce

unread,
Jan 23, 2012, 10:00:52 AM1/23/12
to Pravin, Repo and Gerrit Discussion

You may need to edit your profile information with Google Accounts,
try this link:

https://www.google.com/accounts/EditUserInfo

After changes are made there, you need to trigger login with Gerrit to
import the updated name:

https://gerrit-review.googlesource.com/login/

We run Gerrit Code Review in a mode similar to LDAP, where the Google
Account system provides the name and primary email address for each
account.

Luca Milanesio

unread,
Jan 23, 2012, 10:14:08 AM1/23/12
to Shawn Pearce, Repo and Gerrit Discussion
Hi Shawn,
did you implement already the "pluggable-login" in Gerrit or just a small customisation on the LDAP Realm ?

Luca.
---
Luca Milanesio
Lu...@Milanesio.org
Mobile: +44-(0)7928-617383
Skype: lucamilanesio



Shawn Pearce

unread,
Jan 23, 2012, 10:32:43 AM1/23/12
to Luca Milanesio, Repo and Gerrit Discussion
On Mon, Jan 23, 2012 at 07:14, Luca Milanesio <luca.mi...@gmail.com> wrote:
> did you implement already the "pluggable-login" in Gerrit or just a small
> customisation on the LDAP Realm ?

Neither. :-(

We don't run as a normal web application. So we don't use the Daemon
(used by gerrit.sh start) or the WebAppInjector (used by Gerrit in a
standard WAR deployment scheme) classes. Instead we build up the
application ourselves by creating new Guice injectors that mirror what
the Daemon class does, only using Google Servlet Engine instead of
Jetty. FWIW, I would never use Google Servlet Engine in the real
Gerrit build. Jetty is a much cleaner HTTP server to work with. Google
Servlet Engine is however required in order to run in our data
centers, so I had to hack Gerrit to run within it. I vastly prefer
debugging/working with Jetty. :-)

Because we are setting up our own custom injection environment, we
rebind some implementations of interfaces in the Gerrit application to
different backends. So Realm is bound to GoogleAccountRealm, which it
turns out is entirely a no-op class for us, because we aren't fully
integrated with Google Accounts. We don't for example integrate with
Google Groups so there are no group membership lookups to perform in
the Realm implementation. In order to do group integration, I have to
rethink the Realm API. We cannot ask the Google Account system for all
groups you are a member of, this could be a huge set (e.g. 3000) if
you joined a lot of mailing lists, and only maybe 2 will apply to this
Gerrit environment. LDAP directories have this exact same problem, it
is not uncommon for companies to have users in a large number of
groups to reflect company email distributions, project teams, access
controls, etc. So either way we really need to refactor the Realm API
to better support large directories.

We also bind our own WebSession implementation, and our own
GoogleAccountPostLoginServlet for /login/*. Combined with Google
proprietary filters to manage cookie state, we get single sign-on with
Google Accounts.

Since SSH is not available, we omit most of the SSH stuff from the
Guice environment.

So we have a huge duplicate of Daemon in our environment that sets up
our Google Servlet Engine, our integration with Google Accounts, and
our custom database backend (which is Google Megastore sitting on top
of Google Bigtable, similar to Google AppEngine but not).


It would be much nicer if we had real pluggable authentication. But we
don't, yet. Its on my list of things that we should do as a project.

Using Guice injection to manage it is probably the right short term
approach. We have some of that using the Realm interface and its
various implementations that are already present, but the way this is
done is incredibly messy and difficult to follow. Long term we may
find another way to do plugins other than Guice injection, but for
something so key to a server like authentication its unlikely to need
to change at runtime so it isn't very important for authentication to
be hot swappable. :-)

Luca Milanesio

unread,
Jan 23, 2012, 10:44:19 AM1/23/12
to Shawn Pearce, Repo and Gerrit Discussion
Thanks Shawn,
good to know :-)

Congratulation for the deep surgery ... Guice does miracles :-)
(more than a real surgeon)

Let me know when you'll start on the plug-in stuff, we would be highly interested and possibly provide some help ;-)

Luca.
---
Luca Milanesio
Lu...@Milanesio.org
Mobile: +44-(0)7928-617383
Skype: lucamilanesio



Pravin

unread,
Jan 22, 2012, 4:16:18 AM1/22/12
to Repo and Gerrit Discussion
I created a google account but when I login to
https://gerrit-review.googlesource.com/#/settings/contact it does
not allow me to edit my contact details i.e First and Last Name.
Besides, it displays logged in name as 'Anonymous Coward'.

Have I missed upon something?

Thanks

Pravin

unread,
Jan 22, 2012, 4:14:56 AM1/22/12
to Repo and Gerrit Discussion
> As a work-around, delete any cookies forgerrit-review.googlesource.comand try loading the site again. Yes we

Shawn Pearce

unread,
Jan 25, 2012, 6:00:16 PM1/25/12
to Pravin, Repo and Gerrit Discussion
On Sun, Jan 22, 2012 at 01:14, Pravin <pra...@nvidia.com> wrote:
> I created a google account but when I login to
> https://gerrit-review.googlesource.com/#/settings/contact it does
> not allow me to edit my contact details i.e First and Last Name.
> Besides, it displays logged in name as 'Anonymous Coward'.

The name is imported from the Google Account.

You need to edit your profile information with Google Accounts,

Pravin

unread,
Jan 27, 2012, 1:51:05 PM1/27/12
to Repo and Gerrit Discussion
Hi,

I was able to update my contact details using Google Accounts.

Now, when I login to https://gerrit-review.googlesource.com/#/settings/contact
it does not display anything in the Username field.

Besides, my user account is not getting added to a group.

Could you please help?

Thanks

Shawn Pearce

unread,
Jan 27, 2012, 1:54:08 PM1/27/12
to Pravin, Repo and Gerrit Discussion
On Fri, Jan 27, 2012 at 10:51, Pravin <pra...@nvidia.com> wrote:
> I was able to update my contact details using Google Accounts.
>
> Now, when I login to https://gerrit-review.googlesource.com/#/settings/contact
> it does not display anything in the Username field.

The username is always empty. We don't populate it because the
username is actually just "git" for everyone.

> Besides, my user account is not getting added to a group.

What group do you think your user account should be added to? If you
are talking about the NVIDIA Contributors group, you would need to ask
the owners of it to add your account.

Chengwei

unread,
Feb 19, 2012, 10:02:53 PM2/19/12
to Repo and Gerrit Discussion
Hi

How can I get Gerrit commit-msg hook to generate Change-Id now?

Thanks,
Chengwei

Shawn Pearce

unread,
Feb 21, 2012, 9:58:45 AM2/21/12
to Chengwei, Repo and Gerrit Discussion
On Sun, Feb 19, 2012 at 19:02, Chengwei <chengwei...@gmail.com> wrote:
> How can I get Gerrit commit-msg hook to generate Change-Id now?

According to [1] in the documentation the URL would be:

https://gerrit-review.googlesource.com/tools/hooks/commit-msg


[1] http://gerrit-documentation.googlecode.com/svn/Documentation/2.2.2/user-changeid.html#_creation

Reply all
Reply to author
Forward
0 new messages