簡體   English   中英

Git日志歷史

[英]Git Log History

對版本控制很重要的一件事是知道誰做了什么改變。 如果事情發生了變化,我不知道為什么要做出改變,我會查看歷史並詢問做出改變的人。 當我正在探索git時,讓我對這個功能有點緊張的一件事是它看起來很容易偽造。 什么阻止我將同事姓名/電子郵件放在user.name和user.email的git global config中? 當使用像gitosis / gitolite(定義用戶)或github(我假設使用像gitosis / gitolite這樣的東西)之類的東西時,有什么可以看到誰真正做出了提交嗎?

Gitolite記錄(以.gitolite/logs/gitolite-* )每次推送的Gitolite用戶。 還有一些工作要確定引入特定提交的推送,但它應該是直接的(一種方法:在每次推送的尖端放下輕量級標簽,然后使用git name-rev查找之后的第一個標簽提交)。

大多數Gitolite用戶可能只有一個與之關聯的SSH密鑰( keydir/user.pub ),但單個用戶可能有多個SSH密鑰( keydir/user@*.pub )。

因此,對於基於SSH的Gitolite,您可以將每個提交映射到一個(或多個)SSH密鑰。

您是否信任SSH密鑰以准確識別特定人員是另一個問題(即您是否相信用戶保持其私有SSH密鑰安全?)。

Gitolite還可以通過“智能HTTP”緩和Git訪問。 在這種情況下,Web服務器在REMOTE_USER環境變量中提供Gitolite用戶名(即,而不是使用.ssh/authorized_keys文件來基於SSH密鑰識別用戶)。 標識和身份驗證完全取決於Web服務器本身(通常只是用戶名和密碼,但每用戶SSL證書可用於執行更類似於基於SSH的訪問)。

因此,對於基於HTTP的Gitolite,您可以將每個提交映射到Web服務器完成的身份驗證。


GitHub有一些類似的信息,可以通過GitHub APIEvents部分進行查詢(之前它似乎只是作為您所監視的存儲庫的“Newsfeed”條目的一部分提供)。 每個PushEvent標識執行推送的GitHub用戶,ref(分支)的名稱已更新,新ref“head”的名稱(SHA1哈希)(更新分支的新提示)以及提交列表。

這不是道德或哲學論壇,afaik;

git允許簽名提交和簽名標記。 這應該可以幫助你養成偏執狂:)

您可以讓每個人都使用GPG簽署提交: 請參閱本教程

在教程中,GPG密碼在git config中設置,這對我來說似乎是無稽之談,因此您需要在每次提交時讓鈎子提示用戶。

當然,如果你不是經理,建議每個人簽署他們的承諾都可能在外交上很難,所以要謹慎。

編輯:正如Brian指出的那樣,這只會簽署提交消息,所以這不是一個好的解決方案 我保留答案,因為它可能仍然有助於理解問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM