2014-09-05 45 views
2

我可以得到git init的日期/時間嗎?如何獲取Git存儲庫初始化日期?

不是第一次提交。

如果可能,我該如何得到它?


我在尋找這個主要用於連續集成的修訂版本號。 我喜歡使用版本密鑰的Git提交哈希,但它是一個iOS應用程序,並且有一些限制,我必須在版本字符串中只使用數字和逗號。

接下來,我嘗試使用Unix時間戳(秒)作爲修訂版本號,但它太大而無法爲我的項目顯示一些有意義的信息。然後,我又有了一個想法,即從創建當前Git存儲庫開始計算秒數。

我現在的想法是,

HEAD_TIMESTAMP=`git show -s --format=%ct HEAD` 
INIT_TIMESTAMP=<get init date> 
DELTA=`expr $HEAD_TIMESTAMP - $INIT_TIMESTAMP ` 
DAYS=`expr $DELTA/86400` 
SECS=`expr $DELTA % 86400` 
REV=$DAYS.$SECS 

我認爲這也可以使用日期/第一提交時間。但是如果可能的話,我喜歡使用git init的日期/時間,因爲它是存儲庫的真正創建時間。

+0

看起來據我所知,Git不會記錄時間戳時'GIT中的init '跑了......如果它曾經跑過;如果回購問題被克隆而不是初始化?然而,你最好的選擇可能是得到'.git/description'文件的時間戳。這是在'git init'中創建的一個文件,並且自那之後您可能沒有更改過。 – Jubobs 2014-09-05 16:05:17

+0

作爲持續集成的修訂版本,您可以連續計數,也可以使用git commit hash或date plus git commit hash。依賴於幾臺機器的時鐘和時間在某些時候會出錯。你也可以計算提交次數,但是如果你建立了多個分支,它也會發生碰撞。 – orkoden 2014-09-05 16:11:19

+2

正如@Jubobs所提到的,這通常不會被'git'記錄。然而,作爲一種不完全可靠的解決方法,'.git'目錄中有一些文件/目錄(如'description','branches','info'和'hooks'),它們可能仍然有原始文件從'git init'運行時的時間戳... – twalberg 2014-09-05 20:06:22

回答

1

你可以找到.git目錄的創建日期:
stat -c %i .git會給你一些數字
不是運行sudo debugfs -R 'stat <your_number>' /dev/sdXYcrtime:

+1

這並不可靠。 '.git'文件夾的創建日期不一定對應'git init'運行的日期。考慮複製項目目錄並將其粘貼到其他位置的情況。 – Jubobs 2014-12-08 15:00:25

+0

@jthill如果一個inode的ctime包含創建時間,這似乎是一個非常常見的誤解,那可能是真的。然而'ctime'代表「最後狀態改變的時間」,除了簡單的創建之外,它可以被更新爲各種其他事件 - 例如更改所有者,組,鏈接數量(想象在這種情況下添加或刪除目錄中的文件),模式等... – twalberg 2014-12-08 16:11:11

+0

@twalberg好,至少有一個現在不常見,現在:-P ...謝謝。 – jthill 2014-12-08 16:22:51

相關問題