2014-02-18 48 views
1

我似乎記得在另一個版本管理系統中看到,您可能會在代碼中放入一個複雜的魔術字符串,修訂版本管理系統會自動使用版本字符串替換該模式。 關鍵是我想在我的應用程序中顯示當前版本的about對話框。在我看到的關於Git的所有內容中,它並沒有改變你的源代碼。另一個想法是,git創建一個文本文件,源文件可以讀取到 顯示版本。 我不喜歡不得不調用Git並將代碼手動複製到代碼中的想法。我的應用程序可以知道它的Git標籤嗎?

回答

1

你可以設置一個post-commit鉤子調用一個python腳本像manuelbua/gitver
(從Manuel Bua,也on Stack Overflow)。

目標:

我想要的版本字符串和/或其它有用的信息將被自動嵌入在應用程序代碼,「編入」可以這麼說,沒有我記得做手工每一次。

工作流程:

  • 你在你的資料庫的工作,現在你準備推動當前版本到下一個版本
  • 創建一個發佈標籤,git tag -a v0.0.2 -m 'Bump version'
  • 定義您的NEXT版本,您正在努力通過運行gitver next 0.0.3
  • 運行gitver,檢查一切正常
  • 可選:預覽或運行gitver preview <template name>gitver update <template name>更新項目的版本信息模板,然後重新生成項目,以反映版本更改
  • 任何其他手動看家的中間版本現在可以進行
  • 你現在對下一個版本的工作,重複時發佈時間再次來到

,可幫助您生成正確的元數據信息的文件(如從派生版本pp最後一個標籤),供您在構建過程中使用。

+0

感謝傳播我的工作! – Manuel

+0

@曼努埃爾沒問題,並感謝你的腳本。我編輯了答案,以便更好地顯示正確的歸屬。 – VonC

1
  1. 混帳不支持擴展的「關鍵詞」 - 這是Linus的政策

在一切我所看到的關於Git的,它不會改變你的源代碼的單個位

錯了。它可以做到這一點 - 「文本規範化」的跨平臺使用是很大git的頭痛

重點是,我想在我的應用程序中顯示當前版本的對話框。

引擎蓋下它幾乎總是git describe輸出,這命令(在構建階段),你可以使用你的工作目錄,存儲和使用後

  • 臨:簡單
  • 魂鬥羅:在構建過程中添加額外的複雜度

另一種實現是「塗抹|乾淨過濾器」:關鍵字,作爲靜態文本存儲ñ庫,轉換爲在工作目錄動態變化的元素(真 - 與過濾器程序執行此雙向化改造)

  • 臨:透明度(你有倉庫都已經內源)
  • 魂鬥羅:小可移植性(過濾器的行爲必須在每個工作場所可用),轉換規則的可能的複雜性
0

我只是問OS/Git的標籤信息。這是我的版本視圖(PHP):

<?php 
$output = []; 
exec("git tag", $output); 
$version = end($output); 
?> 
{{$version}} 

這樣我只將版本存儲在一個地方。

相關問題