RFR: 1690: Make jcheck cli able to use conf from workspace or other commit
Erik Joelsson
erikj at openjdk.org
Tue Nov 29 21:59:58 UTC 2022
On Tue, 29 Nov 2022 18:24:50 GMT, Zhao Song <zsong at openjdk.org> wrote:
> Currently, the command `git skara jcheck` can only use the `.jcheck/conf` configuration file in the current checking commit.
> However, sometimes users want to run jcheck with different configurations to validate their commits. Therefore, we need to upgrade `git skara jcheck`.
>
> In this patch, `git skara jcheck` would be able to support following usecases.
>
> 1. Run jcheck on a commit or a series of commits using the .jcheck/conf in the same commit. (what we do by default today)
> `git skara jcheck`
>
> 2. Run jcheck on a commit or a series of commits using the .jcheck/conf in a different specified commit.
> `git skara jcheck --specified-conf-commit <COMMIT HASH>`
>
> 3. Run jcheck on a commit or a series of commits using the .jcheck/conf in my workspace.
> `git skara jcheck --workspace-conf`
>
> 4. Run jcheck on a commit or a series of commits using a config file that I point to directly, that may have any name.
> `git skara jcheck --workspace-conf --conf-file <FILENAME>`
>
> 5. Run jcheck on the diff in my current workspace, either --staged or not using the .jcheck/conf in my workspace.
> `git skara jcheck --workspace-diff`
We need to work on the parameter names.
> 2. Run jcheck on a commit or a series of commits using the .jcheck/conf in a different specified commit.
> `git skara jcheck --specified-conf-commit <COMMIT HASH>`
I would suggest `--conf-rev REV`. In Git we want to operate on revisions rather than just hashes. A REV can be at least either a hash, branch or tag.
> 3. Run jcheck on a commit or a series of commits using the .jcheck/conf in my workspace.
> `git skara jcheck --workspace-conf`
Thinking on this more, we have two different possibilities, the staged file or the one in the working tree. I would suggest: `--conf-staged` and `--conf-working-tree` for those two cases.
> 4. Run jcheck on a commit or a series of commits using a config file that I point to directly, that may have any name.
> `git skara jcheck --workspace-conf --conf-file <FILENAME>`
I think `--conf-file` is good, but I hope you aren't requiring `--workspace-conf` to go along with it?
> 5. Run jcheck on the diff in my current workspace, either --staged or not using the .jcheck/conf in my workspace.
> `git skara jcheck --workspace-diff`
I should have been clearer in that I wanted to cover two different cases here, either working tree, or staged. I would suggest the following to match with the conf arguments: `--staged` and `--working-tree`.
> 1. For point 4, "Run jcheck on a commit or a series of commits using a config file that I point to directly, that may have any name.", currently, I think in most cases it will be used with point 3. So in my implementation, user could only point a config file with any name in workspace.
My intention here was that the file would be anywhere on the local filesystem. That could be in a different repository or a directory outside of the repository.
> If needed, I can make user be able to point any file in any commit as the configuration file.
No, I don't think we need to be able to treat any historic file as the `.jcheck/conf` file. I don't see a usecase for that.
> 2. For point 5, to run jcheck on the diff in workspace, I don't have some good ideas. So I just commit the changes temporarily and then reset the head after running jcheck. But it will make user's staged changes to be unstaged.
That's not an acceptable solution. I realize that this will likely require some more involved changes to Jcheck itself. If you can't figure it out, better leave this feature out. I will go take a look and see if I can figure something out.
-------------
PR: https://git.openjdk.org/skara/pull/1428
More information about the skara-dev
mailing list