2016-03-30 15 views
0

我正在使用一款桌面軟件,它可以在衆多文件上執行一些相當複雜的工作,並且將它與從Dropbox打開的文件一起使用,在過去造成嚴重的數據丟失問題。 (因爲Dropbox在軟件運行時同步)文件(一些文本,一些二進制文件)非常重要,所以我想盡可能地保護它們免受破壞,並且我需要使用來自多臺計算機的文件並希望能力如果它們被破壞,可以回到歷史記錄中,所以使用git似乎是一個完美的選擇。但我對git本身並不陌生。如何在單個用戶環境中將Dropbox與git一起使用

注意:任何給定的用戶只能在他們自己的文件上工作,所以不存在多個用戶會推送到單個回購站的情況。每個用戶都會在自己的Dropbox實例中自己的文件中追蹤自己的文件。整個要點是讓每個用戶都擁有這種能力,因此他們的文件基本上都是通過git和Dropbox進行備份和版本控制的。

讀取位(尤其是the top two answers herethis great discussionthis article on bare vs non-bare repos)後,好像還有了很多贊成和反對的討論的幾種不同的方法,我想知道這接近下方將是最好的在這個特定的單用戶的情況?

基本上我看到的選項是使用Dropbox作爲單用戶git「服務器」,讓它擁有一個我每次在本地克隆的裸回購,或者沒有隱喻服務器,只需使用Dropbox作爲文件服務器與非裸git回購,我複製(全部)從/到每次。

選項1:Dropbox的裸回購,腳本其複製到本地工作目錄:c:\dropbox\master.git是裸露的回購協議,和腳本做了git clone c:\dropbox\master.git c:\working,運行在c:\working對簽出的文件的軟件,然後再執行git addgit commitgit push origin master並刪除c:\working然後完成。

選項2:在Dropbox的非裸露的回購協議,腳本其複製到本地工作目錄:複製整個c:\dropbox\master目錄c:\working後運行鍼對c:\working文件的軟件,然後做了git addgit commit,然後用c:\working的內容覆蓋c:\dropbox\master並刪除c:\working並完成。

最終的PowerShell腳本還會在Dropbox服務執行任何操作前關閉Dropbox服務,並在Dropbox提交(選項1)或複製(選項2)回到主服務器後啓動備份。該部分實際上很簡單,並且可以保證Dropbox在本地回購正在進行時不會更改任何文件。由於它將是一個單用戶進程,因此我(或任何人)可以等待幾分鐘時間讓Dropbox在第一次啓動時完成同步。

選項1似乎更「git-ish」,但考慮到單用戶場景選項2可能更簡單一點(只有1個回購處理而不是2),但我不確定是否有任何「陷阱「我在這裏失蹤。

感謝您的任何提示/想法/等。

回答

0

選項3:正常(非裸露)Git回購Dropbox:比選項1和2更容易,因爲您不必擔心將事物複製到不同的地方。只要使用它就像一個普通的本地git倉庫,除了它自動同步到雲。

我個人使用選項3. Dropbox設計用於無縫地將文件同步到雲,同時它們與您正在使用的計算機上的普通文件類似。這樣做的風險很小。只要確保在停止工作時更改同步。 (不要在離線狀態下在一臺計算機上進行更改,然後在第一次更改同步之前在單獨的計算機上進行更改。)如果有任何內容以某種方式被損壞,則Dropbox內置回滾。

沒有提到的解決方案是可怕的 - 任何工作都會很好。但我覺得沒有理由讓它像選項一樣複雜1 & 2.

+0

是的,但Dropbox中的git倉庫加倍工作文件夾嗎?如果這樣做不可行,因爲我們不能讓軟件訪問Dropbox中的文件。即使在軟件運行時禁用了Dropbox。一旦它被重新啓用,我們曾經經歷了來自3個系統的突然3路同步,最終導致應用程序崩潰。這本身並不是Dropbox的錯,應用程序只是非常脆弱,並沒有處理任何*篡改它的文件結構,但這是我必須處理的。 – Dave

+0

也許問題是Dropbox。你爲什麼不使用一個普通的git倉庫,無論是自己託管還是從衆多流行的git託管服務之一託管? – mkasberg

相關問題