-
Notifications
You must be signed in to change notification settings - Fork 363
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
FR: Implement JJ run
#1869
Comments
The |
This adds the `run` command as described in the doc. The command is hidden for now, to allow in-tree development. The next steps are: 1. Move it to `run.rs` 2. Find a good backend trait 3. Implement the workers Initial progress on jj-vcs#1869 and jj-vcs#405
This ticks another box in #1869. Co-Authored-By: arxanas <[email protected]> Co-Authored-By: hooper <[email protected]> Co-Authored-By: martinvonz <[email protected]>
This ticks another box in #1869. Co-Authored-By: arxanas <[email protected]> Co-Authored-By: hooper <[email protected]> Co-Authored-By: martinvonz <[email protected]>
This ticks another box in #1869. Co-Authored-By: arxanas <[email protected]> Co-Authored-By: hooper <[email protected]> Co-Authored-By: martinvonz <[email protected]>
This ticks another box in #1869. Co-Authored-By: arxanas <[email protected]> Co-Authored-By: hooper <[email protected]> Co-Authored-By: martinvonz <[email protected]>
This ticks another box in #1869. Co-Authored-By: arxanas <[email protected]> Co-Authored-By: hooper <[email protected]> Co-Authored-By: martinvonz <[email protected]>
This ticks another box in #1869. Co-Authored-By: arxanas <[email protected]> Co-Authored-By: hooper <[email protected]> Co-Authored-By: martinvonz <[email protected]>
This ticks another box in #1869. Co-Authored-By: arxanas <[email protected]> Co-Authored-By: hooper <[email protected]> Co-Authored-By: martinvonz <[email protected]>
This ticks another box in #1869. Co-Authored-By: arxanas <[email protected]> Co-Authored-By: hooper <[email protected]> Co-Authored-By: martinvonz <[email protected]>
As an update to the entry for bayesian bisection support, this just came out of Google pretty recently: Flake Aware Culprit Finding. https://research.google/pubs/pub52048/ This is certainly a good overview of what such a tool would try to achieve and look like, and what assumptions it would make. Algorithms 2 and 3 in Section 3 effectively summarize the whole algorithm, operationally. |
In principle this trait is a layer above an actual VFS, but should be enough to start working with them. It's responsible for caching and managing working-copies which are stored locally or on a remote. The plan is that `jj run` will query it to request working copies, which it then uses. This checks the third checkmark in #1869. Progress on #1869 and #405 cc @martinvonz, @hooper, @kevincliao, @arxanas
In principle this trait is a layer above an actual VFS, but should be enough to start working with them. It's responsible for caching and managing working-copies which are stored locally or on a remote. The plan is that `jj run` will query it to request working copies, which it then uses. The client is coming with the workqueue which is step 4 in #1869. This checks the third checkmark in #1869. Progress on #1869 and #405 cc @martinvonz, @hooper, @kevincliao, @arxanas
@matts1 Moving this conversation here, as this is the correct place for it.
Just
No, the default is to rebase the "new"/"modified" commits, as its
Yeah, this totally makes sense, but as the Design Doc was written when neither
This is another great point, which never was brought up. I agree that the |
Could you clarify what
If my understanding is correct, then surely readonly / reparent / rebase should be mutually exclusive - it doesn't make much sense to rebase something if it's readonly
This doesn't make much sense to me given my understanding of how
The reason I said that I assumed reparent would be the default is that IIRC (might be misremembering this) you said somewhere that by default it would run in parallel, and I thought that would be incompatible with rebase. I figured that that reparent and readonly can run edit in parallel on all specified revisions at once, because they have no dependency on the parent's post-run tree. On the other hand, rebase may have changed the tree by the time you got to a revision, so you can't do it in parallel, and it can create conflicts. Maybe I'm misunderstanding how you're implementing rebase (maybe you run commands then do rebasing or something like that - if so, probably worth clarifying in the docs), but here was my understanding of the difference between rebase and reparent. Suppose I have two changes A and B stacked on top of each other, with commit IDs a1 and b1 respectively. Now I run
You cannot run steps 1 and 3 at the same time because step 3 is dependent on the tree b2, which is dependent on the rebase and thus on the tree a2, which requires running step 1 to determine. On the other hand,
Note that this would also mean that if conflicts were generated with |
@PhilipMetzger do you or someone else have immediate plans to implement It doesn't make sense for
An initial implementation of I think the relevant issue for rebasing/reparenting behavior is now #3805.
I don't disagree with the idea of preserving relative paths, but I don't think it needs to go into an initial implementation?
I don't know what specifically was being referred to, but there is a useful rebase approach that does have the potential to induce conflicts, similar to |
I still plan to implement |
The VFS can arrive at a later point, as I definitely have no experience writing such a thing, as Googlers will have a their requirements and experience from already building one. |
This isn't necessarily true. IIUC, |
Ah, to be clear, I meant to describe the ideal UI: things which are logically "fixes", which includes both formatting changes and updating snapshot tests, should go into
What I'm suggesting is cutting scope rather than adding to it (i.e. don't make |
In principle this trait is a layer above an actual VFS, but should be enough to start working with them. It's responsible for caching and managing working-copies which are stored locally or on a remote. The plan is that `jj run` will query it to request working copies, which it then uses. The client is coming with the workqueue which is step 4 in jj-vcs#1869. This checks the third checkmark in jj-vcs#1869. Progress on jj-vcs#1869 and jj-vcs#405 cc @martinvonz, @hooper, @kevincliao, @arxanas
In principle this trait is a layer above an actual VFS, but should be enough to start working with them. It's responsible for caching and managing working-copies which are stored locally or on a remote. The plan is that `jj run` will query it to request working copies, which it then uses. The client is coming with the workqueue which is step 4 in jj-vcs#1869. This checks the third checkmark in jj-vcs#1869. Progress on jj-vcs#1869 and jj-vcs#405 cc @martinvonz, @hooper, @kevincliao, @arxanas
Heya @PhilipMetzger @arxanas, think there's anything here or in related issues that could use help? Is #4021 still a good place to look for the latest? I got some coding time on my hands and am still itching to get jj to support precommit hooks/checks. |
This is the tracking issue for
run
, mostly for myself.The design doc is available here (Google Docs) and here (docs/design).
Related to #405
docs/design
.this should establish the base features of
run
.And to add, here's a simple wishlist based on Discord conversations:
run --bisect
, to support agit bisect -x
like workflow based on git-branchless'sgit test
.1--files [PATHS]
Footnotes
My suggestion in Discord ↩
A suggestion from @thoughtpolice in Discord ↩
The text was updated successfully, but these errors were encountered: