文件管理 - Linux

Kristin avatar
By Kristin
at 2012-08-29T01:11

Table of Contents

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),我覺得應該要有更有效率的管理方式,
: 各位大大能給我甚麼建議嗎?
: 謝謝<(_ _)>

--
Tags: Linux

All Comments

sr1介面

Lucy avatar
By Lucy
at 2012-08-28T23:44
大家好 我的kinux fedora 14現在開機都會秀/dev/sr1 io error 但一直秀但它還是會開,只是不知是什麼,硬碟不是hd或sd開嗎?3q~ - ...

Re: 第8次星系主題:TDD with python unittest for embedded C

Anonymous avatar
By Anonymous
at 2012-08-28T17:48
緊急通知 今天的 Mix Coffee andamp; Tea 似乎在裝修 所以這次改到對面的丹堤咖啡聚會 http://www.dante.com.tw/store_10_1_2.php?no=69 ※ 引述《fourdollars (四元)》之銘言: : 主題內容: TDD with python ...

/home檔案系統的繼承

Oliver avatar
By Oliver
at 2012-08-28T17:00
各位linux前輩大家好 小弟的需求是這樣 現有的server機器上已經有穩定運行的Fedora14 但因為某些開發工具需要更新 因此我在考慮安裝Fedora16 然而 這個server使用者眾多 直接更新的話總覺得14-andgt;16跳太大了 如果失敗的話會很麻煩 目前心中的解決方案 ...

KDE 今天晚上聚會喔~~

Vanessa avatar
By Vanessa
at 2012-08-28T13:02
地點:一樣在 Mix Coffee andamp; Tea http://www.tossug.org/mix-coffee-tea 今天 Mix Coffee andamp; Tea 整修中 所以改到對面的丹堤咖啡喔 http://www.dante.com.tw/store_10_1_2.php?no= ...

Linux mint使用code::block字體

Wallis avatar
By Wallis
at 2012-08-28T11:19
各位好,我電腦使用linux mint 13 在運作code::block時,覺得編輯區的字好小,感覺擠在一起 最主要是那空格太小了,看起來很吃力 請問這要怎麼調整呢? - ...