顯示具有 version control 標籤的文章。 顯示所有文章
顯示具有 version control 標籤的文章。 顯示所有文章

2011年5月6日 星期五

Git 遠端備份

不知道大家都使用哪種 source version control,我自己本身常用 git, 雖然 git 功能強大,但我卻發現要找一個簡單的遠端備份方案還真不容易。熟悉 git 的人一定會問我為什麼需要遠端備份,是這樣的...

Git 所謂的分散式是在多人開發的情況下,如果你的成員分佈幅員廣大,理論上你不用再做備份了,即使你 local 遭遇像日本東北大地震那樣可怕的災難,只要還有別的地區的 member 電腦完好如初,一個 (或幾個) 簡單的 'git pull' command 就可以幫你恢復完整的 file/log/...

但考慮以下狀況:

  1. 開發者只有我一個人.. (孤單的獨立工作室負責人!?)
  2. 開發者有粉多人,但都集中於同一個(地理)區域

以上情況我們還是需要把所有資料備份到遠端去以策安全。

但事情好像也不是簡單的把整個 folder TAR 起來丟上網就可以.. 這樣做可能有幾個問題:

  1. 要用這包 TAR 在新的機器上復原需要做些奇怪的事(主要是因為 git 內含 local 的資訊)
  2. 在你 TAR 的同時如果有人在 check-in code, 會有資料不完整的問題。
搞了半天,我終於弄清楚要如何遠端備份 git 啦:

  1. 切到你的 git folder
  2. 'git bundle create BACKUP.BUNDLE --all'
那個 BACKUP.BUNDLE 可以隨你高興命名,把這個產生出來的檔案備份到遠端 (我自己習慣用google doc, 因為它本身也有版本控制的機制,萬一遠端檔案也有問題,至少還有舊版BACKUP.BUNDLE可用)

萬一你發生不幸的意外 (我是指你的電腦),重建步驟如下:

  1. 把你藏在遠端的備份檔案找出來放進新的電腦中
  2. 'git clone BACKUP.BUNDLE new-folder'
  3. 'cd new-folder'
  4. 'git fetch'
  5. 'git pull'
就這樣,你就可以 (在一片廢墟中) 繼續你的軟體開發工作啦 (假設還有供電的話:D)