дзеркало
https://github.com/l0ng-ai/openidea.git
синхронізовано 2026-11-09 19:25:54 +02:00
feat(vcs): compare folder selections with revisions across repositories (#602)
Compare with Branch or Revision only handled one file, so reviewing a folder meant opening each file. Folders, the project root and multiple selections now open a changes tree against the chosen revision, with per-file diffs on demand. A single file keeps its direct diff. Each path resolves against its own repository through the root registry. In a multi-repo workspace the picker offers shared revisions such as "main in 3 repositories" as well as per-repository ones, results are grouped by repository, and content outside any repository or a repository missing the revision is stated in the result. Listing is cancellable and off the UI thread, includes worktree and untracked changes, and a rename leaving the selection shows as a delete. Show Diff on folders reuses the same tree. Verified on macOS, and against a remote host over the server protocol. A remote window, Windows and Linux were not run. Fixes #567
Цей коміт міститься в:
1 джерело
0a71f6be88
коміт
9e35cfc064
20 files changed
+1404
-121
No files matched your search
@@ -44,6 +44,7 @@ const OTHER_ACTIONS = [
|
||||
"vcs.addToVcs",
|
||||
"vcs.annotate",
|
||||
"vcs.showDiff",
|
||||
"vcs.compareWithBranch",
|
||||
"vcs.rollback",
|
||||
"vcs.push",
|
||||
];
|
||||
@@ -129,6 +130,17 @@ describe("project view context menu", () => {
|
||||
}
|
||||
});
|
||||
|
||||
it("offers branch comparison for files, folders, their union and the project root", () => {
|
||||
for (const nodes of [
|
||||
[node("/p/a.py")],
|
||||
[node("/p/src", true)],
|
||||
[node("/p/src", true), node("/p/lib", true)],
|
||||
[node("/p", true, true)],
|
||||
]) {
|
||||
expect(sub(contextMenuItems(nodes), "Git")).toContain("Compare with Branch…");
|
||||
}
|
||||
});
|
||||
|
||||
it("offers Show History for files, directories, multi-selection and the project root", () => {
|
||||
const dispose = registerActions([{ id: "vcs.showHistory", title: "Show History", run: () => undefined }]);
|
||||
try {
|
||||
|
||||
@@ -335,7 +335,9 @@ export function contextMenuItems(nodes: ProjectNode[]): MenuItem[] {
|
||||
{ kind: "separator" },
|
||||
singleFile && act("vcs.annotate", singleFile.path, "Annotate with Git Blame"),
|
||||
act("vcs.showDiff", arg, "Show Diff"),
|
||||
singleFile && act("vcs.compareWithBranch", { path: singleFile.path }, "Compare with Branch…"),
|
||||
nodes.length > 0 &&
|
||||
nodes.every((n) => !n.placeholder) &&
|
||||
act("vcs.compareWithBranch", arg, "Compare with Branch…"),
|
||||
nodes.length > 0 && nodes.every((n) => !n.placeholder) && act("vcs.showHistory", arg, "Show History"),
|
||||
act("vcs.rollback", arg, "Rollback…"),
|
||||
{ kind: "separator" },
|
||||
|
||||
Reference in new issue
Заблокувати користувача