看板 Linux 關於我們 聯絡資訊
version control系統以我用過軟體的分成兩類 1. centralized - subversion, perforce 2. distributed - git 不管哪一類主要都是要提供 1. 在共同作者之間進行版本同步 2. 保存改版的歷史紀錄 如果是text file, 通常都能很容易做diff跟merge 不過你們的應用binary file, 除非你提供version control系統diff跟merge的工具 不然沒有一種系統可以幫你查到兩個版本之間的差距 以你們現在的做法(copy-rename-edit), 我覺得git可以提供一些好處 1. git可以離線工作 - git local repository跟git server一樣擁有所有的 revision history,不需要連上server取得某特定版本的文件,缺點是 local repository會佔掉很大的硬碟空間,尤其是binary file的repo 例如:DOC.doc這個檔案依序產生過A,B,C三個版本,假設各為200KB 用copy-rename-edit方法在硬碟上會有DOC_A.doc, DOC_B.doc, DOC_C.doc三個檔案 在git repo上會只有一個DOC.doc,有三筆改版記錄 如果都不考慮丟棄舊版本(A,B),兩種方法使用差不多的硬碟空間(600KB) 如果使用copy-rename-edit方法刪除DOC_A.pdf和DOC_B.pdf,就會較省空間 git也有方法可以省空間,將DOC_C.doc放到一個全新的repo中,放棄之前的改版資訊 2. git diff - git 可以設定textconv tool,讓一個懂特定binary file格式的外部 工具先將該binary file擷取出text之後交給diff tool處理 舉個例子,我有個git repo裡面管裡了一個名叫"Untitled 1.odt"的檔案 jckuo@jckuo-vm64:~/mytest$ ls Untitled 1.odt 用git log查看,得知有兩個版本 jckuo@jckuo-vm64:~/mytest$ git log commit 8067e00020b919c61616f778db44cc2e751c1b1c Author: JC Kuo <[email protected]> Date: Wed Aug 29 00:23:10 2012 +0800 revision 2 commit 55261ab8f2d44ad06b2c2b96bc58a71f216dfac4 Author: JC Kuo <[email protected]> Date: Wed Aug 29 00:21:55 2012 +0800 revision 1 用git show 查看第一個版本得知此版本新增三行 jckuo@jckuo-vm64:~/mytest$ git show 55261ab8f2d44ad06b2c2b96bc58a71f216dfac4 commit 55261ab8f2d44ad06b2c2b96bc58a71f216dfac4 Author: JC Kuo <[email protected]> Date: Wed Aug 29 00:21:55 2012 +0800 revision 1 diff --git a/Untitled 1.odt b/Untitled 1.odt new file mode 100644 index 0000000..6a9df92 --- /dev/null +++ b/Untitled 1.odt @@ -0,0 +1,3 @@ + +abcd + 用git show 查看第二個版本得知此版本刪除一行新增三行 jckuo@jckuo-vm64:~/mytest$ git show 8067e00020b919c61616f778db44cc2e751c1b1c commit 8067e00020b919c61616f778db44cc2e751c1b1c Author: JC Kuo <[email protected]> Date: Wed Aug 29 00:23:10 2012 +0800 revision 2 diff --git a/Untitled 1.odt b/Untitled 1.odt index 6a9df92..4f1ac12 100644 --- a/Untitled 1.odt +++ b/Untitled 1.odt @@ -1,3 +1,5 @@ -abcd +Abcd + +efgh 在merge的部分,不管你是用哪種版本控制,大概都需要人工做merge ※ 引述《Landau (賴宏道)》之銘言: : 不是很確定這樣的問題是否適合在這裡問, : 不過我想這裡的大大應該能給我一點意見。 : 如果版主覺得不行請通知我,我會自刪,謝謝。 : 我目前在一個物理所Lab工作, : 有很多的實驗數據和分析產生的文件要儲存, : 這些檔案被集中管理在server上。 : 問題出在,有些文件會被修改,於是檔名會長得像「主旨_人名_最後修改日期」這樣, : 另外老師會有離線編輯的需求,也就是沒辦法連到server的時候, : 他會拿著備份的硬碟工作,之後再傳到server上(這部分是我想的,不是很確定)。 : 另外本Lab有備份方面的問題,目前備份的方法是複製貼上, : 雖然沒有大問題,但我覺得怪怪的。 : 由於我們資料頗多(幾百G),我覺得應該要有更有效率的管理方式, : 各位大大能給我甚麼建議嗎? : 謝謝<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 216.228.112.21