The change-id is exactly like a commit-id, it is an SHA-1 value, but it
is a constant embedded in the commit message.

Why does Gerrit need this value?
Gerrit is based on the concept of revising/polishing a commit or a
series of commits.

For clarity, consider the case of revising a proposed bug fix.

You checkout the current revision of a proposed bug fix commit that has
a change-id value in it's message.  You revise and _amend_ this commit,
preserving the change-id in the commit message.  Now your commit-id has
changed, but your change-id is still the same.  You then upload your
amended commit to Gerrit which links the amended commit with the
discussion/review.

Commit-ids change all the time because of amend; change-ids are constant
and they are the key that links commit revisions to a discussion.

What I am requesting is a feature that generates and injects the
Change-Id value for the very first commit revision.  This commit is
special because it will create the discussion in Gerrit for the commit. 
Gerrit relies on client-side change-id generation for this initial
commit.  This allows contributors to propose new ideas by implementing
that idea and pushing the proposed implementation to Gerrit.  Gerrit
intercepts this and automatically creates a discussion/review keyed by
the specified Change-Id value.  And now through the --amend process,
this commit can be revised and polished until it is blessed by a
reviewer for merging to some integration branch.

-J



On Mon, Oct 21, 2013, at 10:51 AM, Jeremy Rosen wrote:
> for those of us that are not using gerrit...
> 
> what is a change-id (semantically, I got from your mail that it is some
> sort
> of unit id set at commit time) and in what way is it different from the 
> commit-id ?
> 
> Cordialement 
> 
> Jérémy Rosen 
> +33 (0)1 42 68 28 04
> 
> fight key loggers : write some perl using vim 
> 
> 
> Open Wide Ingenierie
> 
> 23, rue Daviel
> 75012 Paris - France
> www.openwide.fr
> 
> 
> 
> 
> 
> ----- Mail original -----
> > Hello Git Community,
> > 
> > TL;DR:
> > It would be a really nice enhancement if the commit command natively
> > supported _optionally_ injecting a "Change-Id: I000..." footer in the
> > last paragraph of the commit message template and then substituting
> > the
> > "I000..." value, on commit, with a generated value _without_ having
> > to
> > rely on a per-repository, native hook or a global hook that affects
> > every local repository.
> > 
> > Full Request:
> > Gerrit has established the change-id footer as a prominent and
> > wide-spread collaboration identifier.  For those contributing new
> > patches to a Gerrit server, it is required to either use EGit/JGit
> > (Eclipse) to generate commits [1] OR to use a commit hook script with
> > native git to insert a change-id footer during the commit process
> > [2].
> > This per-repository hook script requirement is an obstacle.  These
> > communities would be better served and it would lower the
> > contribution
> > barrier for many open source projects if native git supported
> > change-id
> > generation & injection.
> > 
> > I acknowledge that not everyone uses nor wants to use Gerrit and the
> > change-id footer.  That is fine, but it would be a _tremendous_
> > usability improvement for those contributing to open source projects
> > (myself included) if something like a "--change-id" flag  was
> > implemented and maybe even a config setting to always generate a
> > change-id on commit (EGit currently supports this as
> > "gerrit.createchangeid=true").
> > 
> > Sadly, my C skills are lacking as I live mostly in the world of
> > managed
> > code, but I'd be very happy to cheer for a change-id champion; I
> > suspect
> > there are some out there who might rally to this cause.
> > 
> > Thanks for your consideration.
> > James Moger
> > gitblit.com
> > 
> > [1]
> > https://git.eclipse.org/c/jgit/jgit.git/tree/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java?h=stable-3.1#n288
> > [2]
> > http://gerrit-documentation.googlecode.com/svn/Documentation/2.0/cmd-hook-commit-msg.html
> > --
> > To unsubscribe from this list: send the line "unsubscribe git" in
> > the body of a message to majord...@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > 
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to