1
任何人使用mercurial來管理Linux內核?這有點長,但我不確定是否有答案。我想舉一些例子求助使用mercurial來管理linux內核,標籤和hg ID
這裏是我所看到的:
在linux內核,還有建築稱爲腳本/ setlocalversion時使用的命令。在此腳本中,它根據存儲庫信息設置內核版本。目前,它瞭解git,mercurial和svn回購。
GIT中,它創建了這個代碼的標籤:
if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
# If we are at a tagged commit (like "v2.6.30-rc6"), we ignore it,
# because this version is defined in the top level Makefile.
if [ -z "`git describe --exact-match 2>/dev/null`" ]; then
# If we are past a tagged commit (like "v2.6.30-rc5-302-g72357d5"),
# we pretty print it.
if atag="`git describe 2>/dev/null`"; then
echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'
.....
所以,這裏是一個例子,我沒有明白這是如何工作:
[1536][mcrowe:test]$ git tag -a -m"Creating a tag" KernelTest
[1537][mcrowe:test]$ git rev-parse --verify --short HEAD
d024e76
[1537][mcrowe:test]$ git describe --exact-match
KernelTest
[1537][mcrowe:test]$ git describe
KernelTest
所以,在這個例子中,本地當內核構建時版本將被設置爲「KernelTest」。
在善變的,然而,代碼即可獲得本地版本是這樣的:
if hgid=`hg id 2>/dev/null`; then
tag=`printf '%s' "$hgid" | cut -d' ' -f2`
# Do we have an untagged version?
if [ -z "$tag" -o "$tag" = tip ]; then
id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
printf '%s%s' -hg "$id"
fi
....
我的期望是我能標記的釋放,並有該標籤是什麼這個腳本使用,如git的發生。然而,似乎「汞ID」永不打印出的標籤這樣的腳本預計:
[1546][mcrowe:test2]$ hg tag -m"Creating a tag" KernelTest -r tip
[1548][mcrowe:test2]$ hg id
3ccda5e738ae+ tip
[1548][mcrowe:test2]$ hg tags
tip 115:3ccda5e738ae
KernelTest 114:be25df80ce76
所以標籤的這種行爲改變了修訂所以hg的ID將永遠不會顯示的標籤是什麼。
核心問題:AFAIK,這將永遠不能用於Linux內核。問題是如何在內核樹中實現hg tag
的性能如git tag
?
標籤默認添加一個額外的提交,也許嘗試localtags? `tag -l` – tonfa 2011-01-10 21:25:23
希望我可以,但是這被推入持續集成服務器。不幸的是,需要全球標籤。 – 2011-01-10 21:29:27