From 2a3d36eab1f2d7e832ca39fb9e08d7d6c7f244a5 Mon Sep 17 00:00:00 2001 From: abose Date: Sat, 22 Feb 2025 13:31:34 +0530 Subject: [PATCH 1/2] feat: add git file and global commit history to git menu --- src/command/Commands.js | 6 ++++++ src/extensions/default/Git/src/Constants.js | 2 ++ src/extensions/default/Git/src/Main.js | 20 ++++++++++++++++---- src/extensions/default/Git/src/Panel.js | 8 ++++++++ src/nls/root/strings.js | 2 ++ 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/command/Commands.js b/src/command/Commands.js index 4f3a1cff60..ec82adfb48 100644 --- a/src/command/Commands.js +++ b/src/command/Commands.js @@ -568,6 +568,12 @@ define(function (require, exports, module) { /** Toggles display of untracked files */ exports.CMD_GIT_TOGGLE_UNTRACKED = "git-toggle-untracked"; + /** Toggles global history view in history panel */ + exports.CMD_GIT_HISTORY_GLOBAL = "git-history-global"; + + /** Toggles file history view in history panel */ + exports.CMD_GIT_HISTORY_FILE = "git-history-file"; + // DEPRECATED: Working Set Commands DeprecationWarning.deprecateConstant(exports, "SORT_WORKINGSET_BY_ADDED", "CMD_WORKINGSET_SORT_BY_ADDED"); DeprecationWarning.deprecateConstant(exports, "SORT_WORKINGSET_BY_NAME", "CMD_WORKINGSET_SORT_BY_NAME"); diff --git a/src/extensions/default/Git/src/Constants.js b/src/extensions/default/Git/src/Constants.js index 10774e6672..2f851d7a52 100644 --- a/src/extensions/default/Git/src/Constants.js +++ b/src/extensions/default/Git/src/Constants.js @@ -58,4 +58,6 @@ define(function (require, exports) { exports.CMD_GIT_AUTHORS_OF_SELECTION = Commands.CMD_GIT_AUTHORS_OF_SELECTION; exports.CMD_GIT_AUTHORS_OF_FILE = Commands.CMD_GIT_AUTHORS_OF_FILE; exports.CMD_GIT_TOGGLE_UNTRACKED = Commands.CMD_GIT_TOGGLE_UNTRACKED; + exports.CMD_GIT_HISTORY_GLOBAL = Commands.CMD_GIT_HISTORY_GLOBAL; + exports.CMD_GIT_HISTORY_FILE = Commands.CMD_GIT_HISTORY_FILE; }); diff --git a/src/extensions/default/Git/src/Main.js b/src/extensions/default/Git/src/Main.js index 8f6aa6439c..344987077c 100644 --- a/src/extensions/default/Git/src/Main.js +++ b/src/extensions/default/Git/src/Main.js @@ -29,8 +29,8 @@ define(function (require, exports) { const CMD_ADD_TO_IGNORE = "git.addToIgnore", CMD_REMOVE_FROM_IGNORE = "git.removeFromIgnore", $icon = $(``) - .addClass("forced-hidden") - .prependTo($(".bottom-buttons")); + .addClass("forced-hidden") + .prependTo($(".bottom-buttons")); let gitEnabled = false; @@ -160,7 +160,7 @@ define(function (require, exports) { const displayStr = StringUtils.format(Strings.RESET_DETAIL, commitDetailStr, gitCmdUsed); Utils.askQuestion(title, message + "

" + displayStr, - { booleanResponse: true, noescape: true , + { booleanResponse: true, noescape: true, customOkBtn: Strings.RESET, customOkBtnClass: "danger"}) .then(function (response) { if (response === true) { @@ -228,7 +228,10 @@ define(function (require, exports) { // "More options" context menu commands Constants.CMD_GIT_DISCARD_ALL_CHANGES, Constants.CMD_GIT_UNDO_LAST_COMMIT, - Constants.CMD_GIT_TOGGLE_UNTRACKED + Constants.CMD_GIT_TOGGLE_UNTRACKED, + + Constants.CMD_GIT_HISTORY_GLOBAL, + Constants.CMD_GIT_HISTORY_FILE ]; // Disable each command @@ -257,6 +260,9 @@ define(function (require, exports) { gitSubMenu.addMenuItem(Constants.CMD_GIT_GOTO_PREVIOUS_CHANGE); gitSubMenu.addMenuItem(Constants.CMD_GIT_CLOSE_UNMODIFIED); gitSubMenu.addMenuDivider(); + gitSubMenu.addMenuItem(Constants.CMD_GIT_HISTORY_GLOBAL); + gitSubMenu.addMenuItem(Constants.CMD_GIT_HISTORY_FILE); + gitSubMenu.addMenuDivider(); gitSubMenu.addMenuItem(Constants.CMD_GIT_AUTHORS_OF_SELECTION); gitSubMenu.addMenuItem(Constants.CMD_GIT_AUTHORS_OF_FILE); gitSubMenu.addMenuDivider(); @@ -304,6 +310,9 @@ define(function (require, exports) { optionsCmenu.addMenuItem(Constants.CMD_GIT_DISCARD_ALL_CHANGES); optionsCmenu.addMenuItem(Constants.CMD_GIT_UNDO_LAST_COMMIT); optionsCmenu.addMenuDivider(); + optionsCmenu.addMenuItem(Constants.CMD_GIT_HISTORY_GLOBAL); + optionsCmenu.addMenuItem(Constants.CMD_GIT_HISTORY_FILE); + optionsCmenu.addMenuDivider(); optionsCmenu.addMenuItem(Constants.CMD_GIT_AUTHORS_OF_SELECTION); optionsCmenu.addMenuItem(Constants.CMD_GIT_AUTHORS_OF_FILE); optionsCmenu.addMenuDivider(); @@ -370,6 +379,9 @@ define(function (require, exports) { Utils.enableCommand(Constants.CMD_GIT_AUTHORS_OF_SELECTION, enabled); Utils.enableCommand(Constants.CMD_GIT_AUTHORS_OF_FILE, enabled); + Utils.enableCommand(Constants.CMD_GIT_HISTORY_GLOBAL, enabled); + Utils.enableCommand(Constants.CMD_GIT_HISTORY_FILE, enabled); + Utils.enableCommand(Constants.CMD_GIT_COMMIT_CURRENT, enabled); Utils.enableCommand(Constants.CMD_GIT_COMMIT_ALL, enabled); diff --git a/src/extensions/default/Git/src/Panel.js b/src/extensions/default/Git/src/Panel.js index 63fe59f1f0..02a34cfcdc 100644 --- a/src/extensions/default/Git/src/Panel.js +++ b/src/extensions/default/Git/src/Panel.js @@ -1348,6 +1348,14 @@ define(function (require, exports) { CommandManager.register(Strings.HIDE_UNTRACKED, Constants.CMD_GIT_TOGGLE_UNTRACKED, handleToggleUntracked); CommandManager.register(Strings.GIT_INIT, Constants.CMD_GIT_INIT, EventEmitter.getEmitter(Events.HANDLE_GIT_INIT)); CommandManager.register(Strings.GIT_CLONE, Constants.CMD_GIT_CLONE, EventEmitter.getEmitter(Events.HANDLE_GIT_CLONE)); + CommandManager.register(Strings.GIT_SHOW_HISTORY, Constants.CMD_GIT_HISTORY_GLOBAL, ()=>{ + toggle(true); + EventEmitter.emit(Events.HISTORY_SHOW_GLOBAL); + }); + CommandManager.register(Strings.GIT_SHOW_FILE_HISTORY, Constants.CMD_GIT_HISTORY_FILE, ()=>{ + toggle(true); + EventEmitter.emit(Events.HISTORY_SHOW_FILE); + }); // Show gitPanel when appropriate if (Preferences.get("panelEnabled") && Setup.isExtensionActivated()) { diff --git a/src/nls/root/strings.js b/src/nls/root/strings.js index 47d48061f1..92a1672dec 100644 --- a/src/nls/root/strings.js +++ b/src/nls/root/strings.js @@ -1446,6 +1446,8 @@ define({ "TOOLTIP_REFRESH_PANEL": "Refresh panel", "TOOLTIP_SHOW_FILE_HISTORY": "Show file history", "TOOLTIP_SHOW_HISTORY": "Show history", + "GIT_SHOW_FILE_HISTORY": "File Commit history", + "GIT_SHOW_HISTORY": "Commit history", "UNDO_CHANGES": "Discard changes", "UNDO_CHANGES_BTN": "Discard changes\u2026", "UNDO_LAST_LOCAL_COMMIT": "Undo last local (not pushed) commit\u2026", From 61b4ee622b8c006e209d9b6dd3227a56e8ef8558 Mon Sep 17 00:00:00 2001 From: abose Date: Sat, 22 Feb 2025 13:50:51 +0530 Subject: [PATCH 2/2] test: integ test for git global and file history command --- test/spec/Extn-Git-integ-test.js | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/test/spec/Extn-Git-integ-test.js b/test/spec/Extn-Git-integ-test.js index 6713ddc8d0..9a28701b97 100644 --- a/test/spec/Extn-Git-integ-test.js +++ b/test/spec/Extn-Git-integ-test.js @@ -310,12 +310,7 @@ define(function (require, exports, module) { }, `History list to be visible: ${visible}`); } - async function testHistoryToggle(whichHistory) { - const $historyToggleButton = $gitPanel.find(whichHistory); - - $historyToggleButton.trigger("click"); - await waitForHistoryVisible(true); - + function _verifyHistoryCommits() { const $historyList = $gitPanel.find("#git-history-list"); // Check if the first and second commits are displayed @@ -325,6 +320,15 @@ define(function (require, exports, module) { // Verify the content of the first and second commits expect($historyCommits.eq(0).text().trim()).toBe("second commit"); expect($historyCommits.eq(1).text().trim()).toBe("first commit"); + } + + async function testHistoryToggle(whichHistory) { + const $historyToggleButton = $gitPanel.find(whichHistory); + + $historyToggleButton.trigger("click"); + await waitForHistoryVisible(true); + + _verifyHistoryCommits(); $historyToggleButton.trigger("click"); await waitForHistoryVisible(false); @@ -338,6 +342,20 @@ define(function (require, exports, module) { await testHistoryToggle(".git-file-history"); }); + it("should show history commands work as expected", async () => { + await waitForHistoryVisible(false); + + await __PR.execCommand(Commands.CMD_GIT_HISTORY_GLOBAL); + await waitForHistoryVisible(true); + _verifyHistoryCommits(); + await __PR.execCommand(Commands.CMD_GIT_TOGGLE_PANEL); + await waitForHistoryVisible(false); + + await __PR.execCommand(Commands.CMD_GIT_HISTORY_FILE); + await waitForHistoryVisible(true); + _verifyHistoryCommits(); + }); + async function waitForHistoryViewerVisible(visible) { await awaitsFor(() => { return $("#history-viewer").is(":visible") === visible;