Linux+svn自動爲你設置文件頭部的註釋

Linux+svn自動爲你設置文件頭部的註釋(轉載)

1.在svn裏面有一個機制,當你的文件裏面有編寫$Id之類的東西,當你設置了這個文件的propset之後,svn ci將會自己加上誰修改的,什麼日期修改的.

實例:
_main.cpp文件開始一行鍵入:
1/*$Id$*/
在Linux命令行裏面輸入:
1$svn propset svn:keywords "Id"_main.cpp
Linux控制檯裏面將會輸出:
1property 'svn:keywords'seton '_main.cpp'
這個時候已經將svn:keywords設置上了.這個時候去查看文件,其實還沒有替換的.當我們輸入
1$svn ci -m "just test"
提交之後再去看這個文件
1$cat./_main.cpp
輸出:
1/*$Id: _main.cpp 117 2011-03-17 06:09:47Z swordhell $*/
2.問題的提出:我們知道有這個機制了.如果修改很多文件,是不是要老是重複的輸入
1$svn propset svn:keywords "Id"_main.cpp
2$svn propset svn:keywords "Id"obj.cpp
3.解決之道:
1svn st |grep-v?|grepcpp|awk'{print($2)}'|xargssvn propset svn:keywords "Id"
單步解釋
$svn st
這個語句將會得到我這一次修改的一些文件情況.
M   _main.cpp
A   _obj.cpp
M   _obj2.lua
?   readme.txt
[grep -v ?] 將帶 ? 的行過濾掉,因爲這個文件不受svn管理;
[grep cpp]  將只會搜索全部 cpp 文件;
這樣之後就得到一個這樣的列表
M   _main.cpp
A   _obj.cpp
[awk '{print($2)}'] 這個命令就是將剛纔的列表取出縱向第二列;
得到一個這樣的列表
_main.cpp
_obj.cpp
[xargs] 通過這個取出_main.cpp _obj.cpp,以它們爲參數依次調用
svn propset svn:keywords "Id"
完成了. .
Chapter 3. Advanced Topics
Keyword Substitution
裏面對於
Id的描述:
This keyword is a compressed combination of the other keywords. Its substitution looks something like $Id: calc.c 148 2006-07-28 21:30:43Z sally $, and is interpreted to mean that the file calc.c was last changed in revision 148 on the evening of July 28, 2006 by the user sally. The date displayed by this keyword is in UTC, unlike that of the Date keyword (which uses the local time zone).
這也就是讓我們看到時間不一致的問題。想看到本地時間。你就要這麼設置。Date
$Date$
svn st |grep -v ?|grep cpp|awk '{print($2)}'|xargs svn propset svn:keywords "Id Date"
這個就是支持多個keyword substitution;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章