From d8631c216cc8ed338a8f987b2bbc30cb3905fa00 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Fri, 13 May 2016 19:12:25 +0000 Subject: [PATCH 01/13] VFS Fix collab code reverting for unsaved files --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 583ddad4..4af7226b 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ ], "c9plugins": { "c9.ide.language": "#79bcb2fe06", + "c9.ide.language.core": "#undefined", "c9.ide.language.css": "#be07d72209", "c9.ide.language.generic": "#3949510863", "c9.ide.language.html": "#22fdc74869", @@ -70,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#b584db93f8", + "c9.ide.collab": "#d513ede176", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", From c487213ce74d63e0678481349687bae8053abf7a Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Mon, 16 May 2016 13:36:24 +0000 Subject: [PATCH 02/13] Use ctime isntead of mtime --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2f218497..bc7bfdf3 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#366f884c53", + "c9.ide.collab": "#d8503004e4", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", From 0683fb0711e80f255ab7d665f2b86066353c8795 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Tue, 17 May 2016 20:46:36 +0000 Subject: [PATCH 03/13] Rename tabs to tabManager as that's what it is --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bc7bfdf3..637cbea7 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#d8503004e4", + "c9.ide.collab": "#1729d31b92", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", From 77338d54e5a673fa3b0990f38388f2206e6dfb58 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Tue, 17 May 2016 20:46:42 +0000 Subject: [PATCH 04/13] Instead of automerging from disk, always prompt user about disk being different and allow them to apply the changes if they like --- package.json | 2 +- plugins/c9.ide.watcher/gui.js | 41 ++++++++++++++++++----------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 637cbea7..8f307533 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#1729d31b92", + "c9.ide.collab": "#1ea29be441", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", diff --git a/plugins/c9.ide.watcher/gui.js b/plugins/c9.ide.watcher/gui.js index e1330ca4..54e577a9 100644 --- a/plugins/c9.ide.watcher/gui.js +++ b/plugins/c9.ide.watcher/gui.js @@ -1,7 +1,7 @@ define(function(require, exports, module) { main.consumes = [ "Plugin", "fs", "settings", "preferences", "watcher", "tabManager", - "save", "dialog.question", "dialog.filechange", "threewaymerge" + "save", "dialog.question", "dialog.filechange", "threewaymerge", "collab" ]; main.provides = ["watcher.gui"]; return main; @@ -17,6 +17,7 @@ define(function(require, exports, module) { var question = imports["dialog.question"]; var filechange = imports["dialog.filechange"]; var threeWayMerge = imports.threewaymerge.merge; + var collab = imports.collab; var collabEnabled = options.collab; @@ -119,33 +120,33 @@ define(function(require, exports, module) { // Hook watcher events - // Update a file + // A change event sent from the watcher plugin watcher.on("change", function(e) { var tab = tabManager.findTab(e.path); if (tab) { - // If collab picks this up and handles the change it will return false - if (emit("docChange", {tab: tab}) === false) - return; + if (collabEnabled && tab.editorType == "ace") { + /* If the lastChange (added by collab) was greater than 1 second ago set up a watch + To ensure that collab makes this change, if not report an error. The lastChange + check is to avoid a race condition if collab updates before this function runs */ + if (!tab.meta.$lastCollabChange || tab.meta.$lastCollabChange < (Date.now() - 1000)) { + if (tab.meta.$collabChangeRegistered) { + clearTimeout(tab.meta.$collabChangeRegistered); + } + } + + return false; + } addChangedTab(tab, e.type === "change"); } }); - // Directory watcher is not needed if the normal watcher works - // watcher.on("directory", function(e) { - // var base = e.path; - // var files = e.files; - // - // // Rename all tabs - // tabManager.getTabs().forEach(function(tab) { - // if (tab.path && tab.path.indexOf(base) == 0) { - // // If the file is gone, lets notify the user - // if (files.indexOf(tab.path) == -1) { - // resolveFileDelete(tab); - // } - // } - // }); - // }); + collab.on("change", function (e) { + var tab = tabManager.findTab(e.path); + if (tab) { + addChangedTab(tab, e.type === "change"); + } + }); watcher.on("delete", function(e) { var tab = tabManager.findTab(e.path); From 599b813a94b11c7f838240703a584e90beac7424 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Tue, 17 May 2016 21:01:30 +0000 Subject: [PATCH 05/13] Remove getLatestRevision as we don't use it --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8f307533..7becf105 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#1ea29be441", + "c9.ide.collab": "#d6dc9b0632", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", From ad73b79bdf4f4eceab9d6889e9ced6ea1c125182 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Tue, 17 May 2016 23:02:30 +0000 Subject: [PATCH 06/13] Revert "Remove getLatestRevision as we don't use it" This reverts commit 599b813a94b11c7f838240703a584e90beac7424. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7becf105..54a03d44 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#d6dc9b0632", + "c9.ide.collab": "#52b1cd4504", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", From 6dacc6240de98464efeba3f833d2153a54f0547a Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Tue, 17 May 2016 23:09:18 +0000 Subject: [PATCH 07/13] Revert "Instead of automerging from disk, always prompt user about disk being different and allow them to apply the changes if they like" This reverts commit 77338d54e5a673fa3b0990f38388f2206e6dfb58. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 54a03d44..a739a931 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#52b1cd4504", + "c9.ide.collab": "#bea1b05bfd", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", From 7b08f19dd3617b34fd8774adb38944643fb52852 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Tue, 17 May 2016 23:33:39 +0000 Subject: [PATCH 08/13] If the latest revision was saved, use what's on disk. Otherwise prompt the user --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a739a931..aa1a8fc7 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#bea1b05bfd", + "c9.ide.collab": "#8c4a6d0137", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", From e9a86d802e81f86bfac317986ab77c0334a2e6f0 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 18 May 2016 01:16:18 +0000 Subject: [PATCH 09/13] Fixed bug with change icon not showing when the version in the IDE is different from on disk --- package.json | 2 +- plugins/c9.ide.watcher/gui.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index aa1a8fc7..8b3c9c36 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#8c4a6d0137", + "c9.ide.collab": "#2d22e02512", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", diff --git a/plugins/c9.ide.watcher/gui.js b/plugins/c9.ide.watcher/gui.js index 54e577a9..ad2f61af 100644 --- a/plugins/c9.ide.watcher/gui.js +++ b/plugins/c9.ide.watcher/gui.js @@ -294,7 +294,7 @@ define(function(require, exports, module) { function automerge(tab, data) { if (!settings.getBool("user/general/@automerge")) return false; - + console.log("Automerging old and new contents"); return merge(tab, data); } From 938895a0c9082ecac1e8d66cbd8d9b60b92d8cdf Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 18 May 2016 01:28:47 +0000 Subject: [PATCH 10/13] Only save out document when it's been synced to the DB --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8b3c9c36..c6584b2e 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#2d22e02512", + "c9.ide.collab": "#85ce41adac", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", From 814f11407a915115d2e17d87db7e3997137f8b76 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 25 May 2016 17:03:42 +0000 Subject: [PATCH 11/13] Code cleanup --- package.json | 2 +- plugins/c9.ide.watcher/gui.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 417363a6..c37023d0 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#eda7de90a9", + "c9.ide.collab": "#9d2a0b0721", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", diff --git a/plugins/c9.ide.watcher/gui.js b/plugins/c9.ide.watcher/gui.js index ad2f61af..7e1979e8 100644 --- a/plugins/c9.ide.watcher/gui.js +++ b/plugins/c9.ide.watcher/gui.js @@ -294,7 +294,6 @@ define(function(require, exports, module) { function automerge(tab, data) { if (!settings.getBool("user/general/@automerge")) return false; - console.log("Automerging old and new contents"); return merge(tab, data); } From 078f7869e33022403810095d0827b57462ab203a Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Wed, 25 May 2016 17:12:11 +0000 Subject: [PATCH 12/13] Improving logs --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c37023d0..dcae40ac 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#18acb93a3a", "c9.ide.language.jsonalyzer": "#d8183d84b4", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#9d2a0b0721", + "c9.ide.collab": "#4406800a74", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#c0a13737ef", From f2c92a7819cabf2a1034a5bd7b1841d1d29a13d3 Mon Sep 17 00:00:00 2001 From: Tim Robinson Date: Fri, 3 Jun 2016 01:11:32 +0000 Subject: [PATCH 13/13] Remove fsHash from Revisions, don't do hash comparison checks --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 574011e8..1398e6ce 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "c9.ide.language.javascript.infer": "#69fbc134d6", "c9.ide.language.jsonalyzer": "#2b1878b731", "c9.ide.language.codeintel": "#fc867feec4", - "c9.ide.collab": "#799edb6836", + "c9.ide.collab": "#673d1aaf34", "c9.ide.local": "#10eb45842a", "c9.ide.find": "#e33fbaed2f", "c9.ide.find.infiles": "#bd34c29373",