Re: Semantics of change IDs (Re: Gerrit, GitButler, and Jujutsu projects collaborating on change-id commit footer)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 12 May 2025 at 14:07, Nico Williams <nico@xxxxxxxxxxxxxxxx> wrote:
>
> On Sat, May 10, 2025 at 01:31:32PM -0700, Martin von Zweigbergk wrote:
> > To me, the main benefit is being able to refer to an evolving change
> > by a stable ID. That enables things like `jj describe qx -m 'new
> > description'; jj new qx` (update commit message, then switch to it)
> > without having to look up the new commit ID after setting the
> > description.
>
> Notionally this is not different from renaming a file.  You have a name
> (file name, commit message subject) and you have the thing it refers to
> (file contents, tree object).
>
>   <insert sub-thread about why Git does not have inode numbers for
>    files, does not record rename/copy intent, and depends on file
>    content similarity checks to detect renames>
>
> If Git can do file content similarity checking to discover renames, then
> surely so can jj and other CR tools do commit similarity checking to
> discover commit message changes.  Is there anything that makes the
> preceding statement incorrect?

That wouldn't work in the `jj describe qx -m 'new description'; jj new
qx` example I used above, right? I think you're suggesting that when
the user runs `jj describe qx -m 'new description'`, we should compare
the reachable commits before the command to the reachable commits
after the command and then record in some storage that the new commit
is part of the same "change" as the old commit. Is that what you
meant? In this particular case, the commit message obviously changed,
so comparing the commit messages will obviously fail. We could of
course make this command record the information itself, however.

> > Given that we already have this stable ID, [...]
>
> "We" == jujutsu?

Yes, sorry :)

> How is this stable ID constructed?

It's just random bytes (16 when using the Git backend, 32 in the
Google backend).

> How would things other than jj construct these?  We spent many messages
> trying to work that out and in my estimate that wasn't settled.

Random bytes has worked well for jj.




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux