我有一個腳本,用於檢出回購,檢出子模塊,然後打印有關子模塊的一些信息,以便用戶知道它們正在處理哪些標籤/分支。git中的可讀取子模塊狀態信息
我自己的工作站上的輸出看起來是這樣的:
Entering 'SubModuleA',
* feature/some_feature_branch,
Branch is,
feature/some_feature_branch,
Tag is,
undefined,
Entering 'SubModuleB'
* (detached from 1.1.9)
Branch is
HEAD
Tag is
1.1.9^0
在這個例子中,主要回購指向子模塊A的特性分支和子模塊B的標籤
但是,當我使用ansible上運行的其他工作站或虛擬機的代碼,輸出看起來不同:
Entering 'SubModuleA',
* (detached from 1234abcd),
Branch is,
HEAD,
Tag is,
undefined,
Entering 'SubModuleB'
* (detached from a1b23c4d)
Branch is
HEAD
Tag is
1.1.9^0
的代碼看起來是這樣的:
git submodule foreach 'git branch | grep \* ; echo Branch is && git rev-parse --abbrev-ref HEAD ; echo Tag is && git name-rev --tags --name-only $(git rev-parse HEAD) '
這是一個我發現能夠獲得這種信息的其他示例的大雜燴,但我很難找到一致的東西。
立即在劇本狀態檢查之前的命令是
git submodule init
git submodule update
我不知道爲什麼我得到不同的結果。有沒有什麼能夠可靠地打印子模塊的分支名稱和標籤名稱?
還要記住,如果一個提交可以在多個分支上創建,那麼它就存在於一個新分支之前。所以你不能真正想到父項目指向哪個分支。它指向一個提交,它可能在多個分支上。 –
不錯!這適用於幾乎所有的東西!還有兩個子模塊可以打印'heads/develop-5-a244b796',其他所有內容都是'tags/SomeTag'或'remotes/origin/feature/SomeFeature'。 – FrustratedWithFormsDesigner