2011-08-15 57 views
8

我不是一個專業程序員,但我做了一些小的獨立項目,我想要一些版本控制和同步,但要通過記住提交和簽出(在不同的計算機上)的過程比將代碼保存在Dropbox文件夾中更麻煩,該文件夾會在文件更改時自動上傳到雲中。使用當前副本對我來說是完全透明的,但不存在版本控制。 (同步也是一種痛苦,因爲我在回家後經常不打開我的筆記本電腦幾天。)Dropbox風格的svn/git/mercurial ?:自動提交更改和自動簽出

有沒有辦法讓代碼庫自動提交文件更改(或者每隔幾分鐘)並自動下載最新版本,如果我想從另一臺電腦繼續我的工作?

謝謝!

+0

你爲什麼要這樣做?當你改變你的代碼並且意外地破壞了某些東西時會發生什麼,但你注意到一週後?在完成所有自動提交之後,通過所有自動提交,將會產生比記住要在完成一天工作後提交更大的痛苦,因爲您有太多的版本可以通過IMO。 – CamelBlues

+0

不能同意,@CamelBlues。如果沒有在提交消息中添加註釋以及選擇邏輯位置來進行提交(如完成某個功能或錯誤修復),則版本控制幾乎完全沒有用處。 –

+0

[Making git auto-commit]可能重複(http://stackoverflow.com/questions/420143/making-git-auto-commit) – 79E09796

回答

0

所以我最終做的是用btsync在幾臺電腦之間同步我的代碼庫。這創建了我所需要的即時「自動同步」功能,對我來說它是完全透明的。 (如上所述,這也處理了臃腫的自動提交的問題)但提示:不要嘗試在所有計算機之間同步回購。雖然這是可能的,但對我來說沒有必要,最好只同步文件,並在一臺可以遠程訪問的機器上保存回購,以便在必要時進行提交和推送。通過這種方式,您可以進行版本控制和自動同步(或者被迫每天提交,或擔心在需要離開計算機時必須提交,或者必須處理在關閉筆記本電腦之前出現的任何提交錯誤,或者大多數所有人都必須依靠一個易犯錯的記憶來記住每天犯下的錯誤(對我來說是一個大錯誤!))。

1

Dropbox保留歷史中文件的幾個版本。幾乎不能稱爲「版本控制」,但您可以在過去的某段時間恢復文件。

如果你真的不會因爲提交和合並而感到困擾,我會說只是住在Dropbox中,因爲它很好而且自動。

您可以設置每5分鐘進行一次提交/推送的計劃任務(如果在Windows上)或Cron作業(如果Linux)。每次啓動計算機時都要進行拉/更新。 但是我可以看到潛在的惡夢正在等待發生,特別是在需要手動合併的情況下進行pull/update時。

另外,我建議使用Mercurial,因爲它比git更容易學習/處理,而且比svn更先進。這將從版本控制系統中帶走一些痛苦。

5

這取決於你的「項目」是什麼。

Flashbake創建之後科幻小說作家科利·多克託羅要定期自動捕獲和版本他的寫作過程:

每隔15分鐘,Flashbake看着你問它來檢查任何文件(我讓它看着我所有正在進行的小說,我的待辦事項清單,有用的信息檔案以及我最近的書籍的完整電子版本),並記錄自上次檢查以來所做的任何更改,以當前註釋系統時鐘上的時區,谷歌提供的那個時區的天氣,以及您博客的RSS提要中的最後三條標題(我已將其描述爲「我在哪裏,什麼東西就像那裏,我在想什麼?「)。它還記錄您的計算機的正常運行時間。對於未來的版本,我認爲讓您的音樂播放器播放最近三首歌曲會很有趣。 (source

它基於GIT中對版本,和cron進行自動更新(GIT足夠空間高效的,使此易處理)。 你可能想看看another review。代碼是here

如果你真的,真的要修改文件檢測,而不是提交每隔X分鐘(又名偏執的數據),你可能想something based on inotifydetails - 注意那些自動化的提交可以迅速增加!)。

另一個選項(不一定解決自動提交問題,所以你可能想混合)是看看在Dropbox上運行git。這有already been discussed here on SO

+0

以下,這是非常好的答案,但是inotify是非資源密集型的。這個過程在你的編輯器對操作系統進行「寫入」調用之前一直處於睡眠狀態。當然,如果你像我一樣經常保存,那麼這些提交會快速加起來,如果這就是你的意思。 –

+0

@Karl:是的,這是我的意思。接得好。編輯以反映這一點。 – huitseeker