-
Notifications
You must be signed in to change notification settings - Fork 319
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement jj parallelize #3412
Implement jj parallelize #3412
Conversation
5998767
to
1804287
Compare
I still need to add a change log entry for this, but I'd like to get some feedback first. This also depends a commit from the diffbase that exposes a |
1804287
to
9284606
Compare
985c1f0
to
4c5db0a
Compare
@yuja This draft was broken by #3407 since I was using the I'm not very familiar with these APIs and haven't dug into the details yet to figure out how to fix this. If you have a suggestion please let me know. |
@yuya I got this working again by making |
5049074
to
fe267f9
Compare
We also have callers at Google that use |
For #3410, I suggested making |
1c214a2
to
dc73e84
Compare
I think this is in pretty good shape now and ready for another review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm, but I don't have much expertise.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor things, as I'm not a expert.
306d5a0
to
ffaabd5
Compare
fa59510
to
8de7a17
Compare
8de7a17
to
d1033bf
Compare
fc8db61
to
a8c29c6
Compare
Ok I have combed this over and I think I resolved all of the correctness problems. I also adjusted the rules about which revsets can be parallelized. The full description is in the commit description /
There are a bunch of comments on this PR, some of which are stale. Happy to open a new PR if would make it easier to review the current version. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
Ok I addressed the latest round of comments. I'll leave this open for a few days in case anyone else has thoughts. We can always make changes later as well. |
Thanks! I don't think you need to leave it open. It's been open for several days already and I haven't heard any objections. As you say, we can adjust things later if necessary. So feel free to merge as far as I'm concerned. |
cba24a4
to
06726f3
Compare
Ok sounds good. I forgot to push (actually I accidentally pushed a new branch with I also added one more test case and tweaked the documentation. I'll merge this soon. |
Parallelize revisions by making them siblings Running `jj parallelize 1::2` will transform the history like this: ```text 3 | 3 2 / \ | -> 1 2 1 \ / | 0 0 ``` Each of the target revisions is rebased onto the parents of the root(s) of the target revset (not to be confused with the repo root). The children of the head(s) of the target revset are rebased onto the target revisions. The target revset is the union of the REVISIONS arguments. The target revset being parallelized must satisfy several conditions, otherwise the command will fail. 1. The heads of the target revset must not have different children. 2. The roots of the target revset must not have different parents. 3. The parents of all target revisions except the roots must also be parallelized. This means that the target revisions must be connected.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LG
This is an implementation of the simple version of
jj parallelize
from FR #1079.Parallelize revisions by making them siblings
Running
jj parallelize 1::2
will transform the history like this:Each of the target revisions is rebased onto the parents of the root(s) of
the target revset (not to be confused with the repo root). The children of
the head(s) of the target revset are rebased onto the target revisions.
The target revset is the union of the REVISIONS arguments.
The target revset being parallelized must satisfy several conditions,
otherwise the command will fail.
parallelized. This means that the target revisions must be connected.