題:
實時代碼協作
oldmud0
2014-08-10 21:44:54 UTC
view on stackexchange narkive permalink

我在家里和學校與朋友一起工作。在學校中,除端口80和端口443(HTTP / HTTPS)之外的所有端口均被阻止,因此很難設置協作的“工作區”。

我正在尋找一個程序來創建虛擬的我們可以將項目放入桌面上的文件夾(例如Groove),然後將文件寫入磁盤(使用我們選擇的文本編輯器或IDE)時,所做的更改將自動分發到所有計算機上。 / p>

它應該是可移植的(不需要管理員權限),並且最好是免費的。

這種程序甚至已經製作出來了嗎?

這是什麼到目前為止,我已經嘗試過:

  • Google雲端硬盤/ Dropbox 。界面過於笨拙,由於需要管理員權限,因此我無法安裝客戶端。另外,您必須向其他所有人宣布您正在上傳項目的副本,然後其他所有人必須停止他們正在做的事情並再次下載該項目。煩人且痛苦。
  • GitHub 。儘管這是一個非常可行的選擇,但我的朋友們對如何使用Git知之甚少,而且我擔心他們會陷入合併衝突中(他們以前曾經遇到過),但是他們將迫使推送並丟失所有歷史記錄,或者只是不這樣做完全不提交任何內容。
  • Saros for Eclipse。要求開放Jabber端口以進行傳出連接,但沒有打開。為了使用此功能,我必須在本地運行Openfire(Jabber服務器),但是我忘記了備份配置,因此當IT管理人員決定從Windows XP升級到Windows 7時,Openfire永遠消失了。
  • NppNetNote (用於Notepad ++)。完美,但僅支持一對一協作。
  • SharePoint工作區。這看起來很酷,但是我不確定如何邀請其他成員。
  • Etherpad 。您不能使用自己的IDE,這意味著您必須將文件的版本複制/粘貼到便箋本中。另外,它僅用於單個文件中的協作。
  • Floobits 。我的朋友嘗試在Sublime Text上使用此功能,但它要求您連接到非HTTP端口(已阻止)。
  • Firepad for Atom。不幸的是,您不能與此共享整個代碼庫。
  • 鬆弛。您當然可以共享代碼,但是與Google雲端硬盤一樣,zip,上傳,宣布,下載過程過於笨拙,不切實際。
  • 沒什麼。一次只能有一個人可以編碼。如果同時有多個人進行編碼,則最終必須有人要求每個協作者的工作源並手動將所有文件合併在一起。
大多數編碼員寧願*沒有*立即合併所有更改。隨時讓您暴露於任何人的錯誤。最好每天同步一次。
@Jeff-InventorChromeOS如果大多數開發都集中在單個文件上,並且我們需要該文件才能使其他所有文件正常工作,那麼我們都會以不同的方式在單個修訂版上進行開發,從而引起衝突。將3個不同的修訂組合成一個整體所花的時間要比僅進行實時協作並知道彼此對代碼所做的事情要長。
-1
@Tyzoid我們使用Java,但是由於它的遊戲庫很少,因此我們轉向Python,因為我的隊友對此更加滿意。很難將功能分解為較小的部分,因為那樣我們將要同時編輯更多文件。我一直在尋找構建程序或從頭開始構建程序的最佳方法,但是任何項目的啟動都很難。
@oldmud0團隊中的每個開發人員都有明確的目標和責任嗎?即是負責渲染的人,負責物理的人,負責UI的人,等等。我想如果這樣做,每個人踩到對方腳趾的機會就會減少。
@Tyzoid不。遊戲的所有這些部分都變得模糊起來。例如,負責UI的人員取決於負責渲染的人員所做的任何更改。這裡的開發不能並行進行,因為每個人的變化都取決於其他每個人的變化。
當兩個用戶同時編輯同一文件時應該怎麼辦?
“我正在尋找一個可以創建虛擬文件夾的程序”-在OS /應用程序級別上將無法使用。更新/數據傳輸僅在保存時才會發生,即使是一個非常寬容的文件修改程序(如Notepad ++),在加載更新文件之前,仍然希望放棄未保存的更改。您需要一個專用程序來同步每個按鍵。
@AleksandrDubinsky感謝您提供的信息,但是您是否知道可以*可靠地*執行*非網絡*文本編輯器或IDE?
對不起,我沒有。
您提到Saros,這似乎正是您所需要的。如果問題出在Jabber,您是否可以使用以下幾種方法之一通過HTTP連接?
這裡有[20個實時代碼編輯器](https://iprodev.com/20-best-code-editors-for-real-time-collaboration/)可供選擇。
@niutech它們都用於Web開發,而不是桌面開發。除此之外,該話題現在還很重要,除了與親密的朋友一起,我不再進行協作編碼。事實是,如果他們不知道如何使用Git,那麼他們可能沒有足夠的能力來從事需要一個以上人員的項目。所以我停止嘗試。
七 答案:
Jeff-Inventor ChromeOS
2014-08-11 02:24:29 UTC
view on stackexchange narkive permalink

Codenvy是一個純Webapp IDE,可能符合您對實時協作的要求。看起來像一個相當完整的IDE,完全可以在Chrome中運行。

根據發布者:

環境是協作的,可以像WebEx一樣共享屏幕工作空間,像Google Docs那樣共享屏幕工作空間,而像GitHub一樣進行分叉工作。

(它也與BitBucket集成。)

Aleksandr Dubinsky
2014-08-11 04:39:02 UTC
view on stackexchange narkive permalink

我認為您應該重新考慮幾個人實時編輯單個代碼文件的想法。在教學或結對編程(例如,處理相同)時,這可能很棒,但不適用於不同的事情。您將嚴重踩到彼此的腳趾,無法完成任何工作。從本質上講,您將具有與在VCS中進行“合併”時相同的代碼衝突,但是您將不斷地使它們衝突。由於別人的代碼半成品,您幾乎無法在任何時間編譯程序,更不用說測試自己的工作了。您還會發現很難從IDE提示,錯誤信息,代碼完成等中受益。

並行開發很像並行計算。性能不會線性擴展。擴展類比,獲得最佳的並行性能來自最小化同步。最好的加速來自“令人尷尬的並行”問題,其中每個節點都完全獨立地工作。最差的速度是來自算法的,每一步都需要來自所有其他節點的數據。

VCS方法是一種很好的方法。每個人都簽出可編譯的或多或少有效的代碼版本。他們進行更改而不會受到其他任何人的干擾。通常情況下(從每週一次到每小時一次,這取決於代碼更改的速度)是最佳的,它們通過提交代碼並製作可編譯和工作的新版本代碼庫進行同步。其他人則拉動了這一變化,也許進行了必要的調整,然後繼續工作。請記住,無論如何同步都是必需的,但是將同步保持在最低限度可使人們專注於有用的工作。

Git很好地解決了VCS目標。拉/推/合併的工作比其他VCS更好。它具有陡峭的學習曲線和通常較差的GUI(在Windows上),但是它是一個非常有用的學習工具。您提到要強行推銷和清除歷史記錄。您是正確的,這是非常不希望的,這就是為什麼應該通過配置開關在服務器上禁止強制推送的原因。

但是,仍然存在如何開發彼此依賴的功能的問題。如果您進行實時編輯,它不會消失甚至不會消失。一種方法是利用模擬對象。這些是偽造的對象,它們會返回固定的響應(而不是執行真實的邏輯)。它們在單元測試的上下文中使用,在單元測試中,您將針對特定用例測試編寫的代碼。編寫使用模擬的單元測試可以讓您測試用例,從而測試您的代碼,而無需編寫相關的部分。另一種方法是簡單地編寫代碼,而不進行任何測試,然後在實際代碼可用時進行測試。但是,對於新程序員來說,最後進行測試和修復錯誤要困難得多,特別是對於新程序員(他們犯下許多小而愚蠢的錯誤,這些錯誤使他們日後無法解決)。但是,編寫模擬和單元測試需要花費自己的時間。 (這些方法可以長期解決問題,因為它們可以在不引入新錯誤的情況下幫助更改代碼,但是從短期來看,它們可能不會提高生產率。)無論哪種方式,都要考慮如何最好地分工。

讓我提醒您,我們沒有得到報酬;我們不是一家創業公司。我們連續四個小時不工作。我們沒有時間使我們的程序成為具有企業質量的應用程序。是的,您是對的,我們應該進行單元測試。但是我們不是100%錯誤的。我們正在採取正確的方法,並詢問其他人實時協作的最佳方法是什麼。
抱歉,這不是要使其具有企業質量。您說自己“開發不能並行進行”。從根本上講,如果開發不能並行進行,那麼尋找可以同時編輯文件的程序就沒有意義了嗎?我試圖解釋一種使開發並行進行的方式(使用模擬和人工測試而不是運行)。
為了澄清,我的意思是說開發不能與我們目前擁有的系統並行進行。目前,我們沒有進行任何開發,因為我們最近沒有見面。 (我們甚至還不是大學生。)我將為您節省我剛講完的講話。
@oldmud0我已將答案重寫為更加尊重和寫得更好。我希望你脫掉-1。嘗試兩種方式的開發,一旦感覺到就參與進來。
我刪除了我的選票。當然,也必須有人投票,所以仍然是-1。
我之所以投票,是因為這是一個軟件推薦站點,而不是一個爭論的哲學。您的觀點可能是有史以來最有效的觀點,但這並不是事實。
@Seth還算公平。雖然,似乎幾乎沒有人在回答OP的真正問題(即,不需要管理權限並通過HTTP運行的Dropbox克隆)。當您在問題中描述“實際問題”時,這就是麻煩。
我同意這個答案,建議您閱讀weblogs.asp.net/alex_papadimoulis/408925。有時,告訴用戶他們的問題從根本上來說是有缺陷的,比給他們想要的答案更有價值。
@Seth和其他人:我們正在[在meta上]討論此答案(以及其他相同類型的人)(http://meta.softwarerecs.stackexchange.com/questions/938/are-this-is-a-bad-idea -answers-permited)。
JZL003
2014-08-11 23:28:11 UTC
view on stackexchange narkive permalink

對方的回答非常適合顯示為什麼您不想這樣做,但是如果您願意進行協作(我認為這樣做有一些好處):您是否嘗試過 c9.io。那似乎正是您要尋找的。我已經使用此IDE(&)做了很多工作,我認為這可能是最好的在線IDE。並提供幾乎完整的終端支持,這對各種服務器工作非常方便,它為Sublis提供了幾乎相同的工作空間,可用於下載或安裝新的Python或節點程序包。非常慢的程序包,非常慢的程序。總體而言,這似乎是一個很好的選擇。尤其對於協作而言,如果您確實想進行協作,就像其他人指出的那樣,這可能不是最佳選擇,那麼這似乎是完美的,並且盡可能地接近。

是;它具有SSH,看起來非常有用。免費版本看起來有些有限,但我一定要請我的朋友嘗試一下。
作為一個實驗,我讓一個由8個人組成的團隊使用c9.io開發了一個HTML + JQuery網站。當人們處理不同的文件時,它工作得很好,但它經常破壞同時由幾個人編輯的文件。那是一年前,他們可能已經有所改善。
@JZL003您是否親自嘗試過此工具?您有什麼經驗?目前,它僅比“查看此鏈接”略多一點,對於推薦來說太少了。
Luke
2014-12-03 08:02:35 UTC
view on stackexchange narkive permalink

Codeanywhere在其網站上表示,它們是開發人員的協作平台。他們有一個非常不錯的基於Web的編輯器,可在任何瀏覽器上使用,因此防火牆不是問題。使用Codeanywhere可以創建DevBox,它基本上是一個小vps,可以自定義任何方式並可以運行幾乎任何編程語言,並且在編輯器中內置了ssh終端。然後可以與朋友共享項目並進行協作甚至實時(多個用戶實時編輯同一文件)。

Tyzoid
2014-08-11 00:13:37 UTC
view on stackexchange narkive permalink

您是否考慮過 Bitbucket

您在問題中提到嘗試過Github,但我想提請您注意另一種選擇。

與Github不同,Bitbucket提供了無限個免費的私有存儲庫,並具有禁用強制推送的功能。

Bitbucket支持多種版本控制系統,但我強烈建議您的朋友帶再看看git。儘管有時可能會有些困難,但是git確實比我嘗試過的其他任何工具都要好。

我再來看一下Git。這只是學習的問題。 Bitbucket是否具有一些“方便”按鈕,無需準備控制台即可執行操作? (GitHub有其自己的客戶端,並且具有用於進行快速拉取請求或製作/刪除/編輯單個文件的按鈕。)
該軟件應該通用-因為它依賴於協議而不是主機。也就是說,有很多適用於所有類型平台的開源git客戶端。 http://git-scm.com/downloads/guis有一個不錯的列表(但不全面)。
對於Github和Bitbucket(或任何其他提供程序),您都可以使用Atlassian SourceTree來管理您的gitting。我發現它非常易於使用,並且幾乎每個操作都有方便按鈕。
Aleksandr Dubinsky
2014-08-11 23:29:18 UTC
view on stackexchange narkive permalink

要回答“我正在尋找一個將創建虛擬文件夾的程序”的問題,我建議 Bittorrent Sync作為一款不錯的無雲Dropbox風格的文件夾同步應用程序。它帶有安裝程序,但我相信它也可以移植。 AFAIK,它應該自動通過HTTP進行中繼以繞過防火牆。 s> SyncThing作為開源的無雲Dropbox樣式文件夾同步應用程序。

Izzy
2014-08-11 14:23:34 UTC
view on stackexchange narkive permalink

一周前,我已經開始使用 ownCloud ,但感到驚訝的是,當擴展某些“ ownCloud應用”時,它甚至可以用於您的情況。由於具有80和443端口,您甚至可以在某些外部計算機上託管安裝( ownCloud 也提供託管)。桌面客戶端也可用於多個平台(不確定我是否還需要安裝“否”,因為我尚未使用它們)。

儘管文件夾不會在本地計算機桌面上(除非您決定在本地工作並通過WebDAV同步目錄,這也是一種選擇),它可以很好地滿足您的要求:

ownCloud 包含支持代碼的編輯器-folding,可以以多種方式擴展(例如,與Markdown插件一起使用,因此編輯器甚至具有實時預覽)。甚至還支持OpenDocument Text。您可以在一個組中共享文檔,因此可以進行協作。因此,基本上,工作可以“聯機”完成。

另一個優點是 ownCloud 對文檔進行版本控制。因此,如果遇到麻煩,您可以還原到以前的版本之一。

如前所述,EtherPad:甚至還有可用的EtherPad ownCloud應用程序,與該服務集成。

我必須承認還沒有以協作的方式使用 ownCloud ,所以我不能說這與多個用戶同時編輯同一個文件的效果如何–但是我想說的是至少值得一看。

好了,在這種情況下,我最好在家庭服務器的端口443上建立SSH隧道並託管SSH,這樣我所有的朋友都可以在服務器上的共享驅動器上工作。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...