Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/extensions/default/DefaultExtensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@
"bib-locked-live-preview", "brackets-display-shortcuts", "changing-tags", "brackets-indent-guides"
]
}
}
}
19 changes: 19 additions & 0 deletions src/extensions/default/Git/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
GNU AGPL-3.0 License

Copyright (c) 2021 - present core.ai . All rights reserved.
original work Copyright (c) 2013-2014 Martin Zagora and other contributors

This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see https://opensource.org/licenses/AGPL-3.0.


52 changes: 52 additions & 0 deletions src/extensions/default/Git/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*!
* Brackets Git Extension
*
* @author Martin Zagora
* @license http://opensource.org/licenses/MIT
*/

define(function (require, exports, module) {

// Brackets modules
const _ = brackets.getModule("thirdparty/lodash"),
AppInit = brackets.getModule("utils/AppInit"),
ExtensionUtils = brackets.getModule("utils/ExtensionUtils");

// Local modules
require("src/SettingsDialog");
const EventEmitter = require("src/EventEmitter"),
Events = require("src/Events"),
Main = require("src/Main"),
Preferences = require("src/Preferences"),
BracketsEvents = require("src/BracketsEvents");

// Load extension modules that are not included by core
var modules = [
"src/GutterManager",
"src/History",
"src/NoRepo",
"src/ProjectTreeMarks",
"src/Remotes"
];
require(modules);

// Load CSS
ExtensionUtils.loadStyleSheet(module, "styles/brackets-git.less");
ExtensionUtils.loadStyleSheet(module, "styles/fonts/octicon.less");

AppInit.appReady(function () {
Main.init().then((enabled)=>{
if(!enabled) {
BracketsEvents.disableAll();
}
});
});

// export API's for other extensions
if (typeof window === "object") {
window.phoenixGitEvents = {
EventEmitter: EventEmitter,
Events: Events
};
}
});
10 changes: 10 additions & 0 deletions src/extensions/default/Git/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "phcode-git-core",
"title": "Phoenix Code Git",
"version": "1.0.0",
"engines": {
"brackets": ">=4.0.0"
},
"description": "Integration of Git into Phoenix Code",
"dependencies": {}
}
1 change: 1 addition & 0 deletions src/extensions/default/Git/requirejs-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
81 changes: 81 additions & 0 deletions src/extensions/default/Git/src/BracketsEvents.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
define(function (require, exports, module) {

// Brackets modules
const _ = brackets.getModule("thirdparty/lodash"),
DocumentManager = brackets.getModule("document/DocumentManager"),
FileSystem = brackets.getModule("filesystem/FileSystem"),
ProjectManager = brackets.getModule("project/ProjectManager"),
MainViewManager = brackets.getModule("view/MainViewManager");

// Local modules
const Events = require("src/Events"),
EventEmitter = require("src/EventEmitter"),
HistoryViewer = require("src/HistoryViewer"),
Preferences = require("src/Preferences"),
Utils = require("src/Utils");

// White-list for .git file watching
const watchedInsideGit = ["HEAD"];
const GIT_EVENTS = "gitEvents";

FileSystem.on(`change.${GIT_EVENTS}`, function (evt, file) {
// we care only for files in current project
var currentGitRoot = Preferences.get("currentGitRoot");
if (file && file.fullPath.indexOf(currentGitRoot) === 0) {

if (file.fullPath.indexOf(currentGitRoot + ".git/") === 0) {

var whitelisted = _.any(watchedInsideGit, function (entry) {
return file.fullPath === currentGitRoot + ".git/" + entry;
});
if (!whitelisted) {
Utils.consoleDebug("Ignored FileSystem.change event: " + file.fullPath);
return;
}

}

EventEmitter.emit(Events.BRACKETS_FILE_CHANGED, file);
}
});

DocumentManager.on(`documentSaved.${GIT_EVENTS}`, function (evt, doc) {
// we care only for files in current project
if (doc.file.fullPath.indexOf(Preferences.get("currentGitRoot")) === 0) {
EventEmitter.emit(Events.BRACKETS_DOCUMENT_SAVED, doc);
}
});

MainViewManager.on(`currentFileChange.${GIT_EVENTS}`, function (evt, currentDocument, previousDocument) {
currentDocument = currentDocument || DocumentManager.getCurrentDocument();
if (!HistoryViewer.isVisible()) {
EventEmitter.emit(Events.BRACKETS_CURRENT_DOCUMENT_CHANGE, currentDocument, previousDocument);
} else {
HistoryViewer.hide();
}
});

ProjectManager.on(`projectOpen.${GIT_EVENTS}`, function () {
EventEmitter.emit(Events.BRACKETS_PROJECT_CHANGE);
});

ProjectManager.on(`projectRefresh.${GIT_EVENTS}`, function () {
EventEmitter.emit(Events.BRACKETS_PROJECT_REFRESH);
});

ProjectManager.on(`beforeProjectClose.${GIT_EVENTS}`, function () {
// Disable Git when closing a project so listeners won't fire before new is opened
EventEmitter.emit(Events.GIT_DISABLED);
});

function disableAll() {
FileSystem.off(`change.${GIT_EVENTS}`);
DocumentManager.off(`documentSaved.${GIT_EVENTS}`);
MainViewManager.off(`currentFileChange.${GIT_EVENTS}`);
ProjectManager.off(`projectOpen.${GIT_EVENTS}`);
ProjectManager.off(`projectRefresh.${GIT_EVENTS}`);
ProjectManager.off(`beforeProjectClose.${GIT_EVENTS}`);
}

exports.disableAll = disableAll;
});
Loading
Loading