git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: RFE: support change-id generation natively

From
james.moger@gitblit.com <james.moger@gitblit.com>
Date
Oct 21, 2013, 15:41 UTC
Message-ID
<1382370119.28365.36627953.50C0496E@webmail.messagingengine.com>
In-Reply-To
<2127507934.9293293.1382367063640.JavaMail.root@openwide.fr>

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:
Show 79 quoted lines
> 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 majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > 
Previous: Jeremy RosenNext: Shawn Pearce
Message 3 of 24 in “RFE: support change-id generation natively”
  1. james.moger@gitblit.comOct 21, 2013
  2. Jeremy RosenOct 21, 2013
  3. james.moger@gitblit.comOct 21, 2013
  4. Shawn PearceOct 21, 2013
  5. Ondřej BílkaOct 21, 2013
  6. Shawn PearceOct 21, 2013
  7. Thomas KochOct 21, 2013
  8. james.moger@gitblit.comOct 21, 2013
  9. Martin FickOct 21, 2013
  10. Junio C HamanoOct 22, 2013
  11. Pyeron, Jason J CTR (US)Oct 22, 2013
  12. Junio C HamanoOct 22, 2013
  13. Duy NguyenOct 23, 2013
  14. Junio C HamanoOct 23, 2013
  15. Duy NguyenOct 24, 2013
  16. Nasser GrainawiOct 24, 2013
  17. Duy NguyenOct 24, 2013
  18. Johannes SixtOct 24, 2013
  19. james.moger@gitblit.comOct 24, 2013
  20. Thomas KochOct 24, 2013
  21. Duy NguyenOct 24, 2013
  22. Junio C HamanoOct 24, 2013
  23. Johannes SixtOct 25, 2013
  24. Shawn PearceOct 21, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.