天天看點

Git在版本2.13中繼續改進了安全性和UI

git的最新版本做了很多改進,旨在改進其使用者界面,同時也修複了兩個重要的漏洞。

衆所周知,git用于唯一識别對象的sha-1雜湊演算法最近被證明容易受到碰撞攻擊。雖然git團隊準備過渡到一個新的更安全的雜湊演算法,但它們已經實作了一種算法,這種算法可以檢測和拒絕任何建立時帶有制造沖突目的的對象。這應該會有效地減輕被攻擊的風險。

在安全性方面,git 2.13版本還修複了一個漏洞,這個漏洞會影響到所有使用git shell的git托管伺服器,它使攻擊者可以在遠端伺服器上靜默運作shell指令。而該版本提供了一種更嚴格的方式,通過ssh來使用git的push/pull指令和安裝在git-shell-commands目錄中的自定義指令。

同時,git 2.13版本在ui方面也做了很多改進。尤其對于為不同項目工作的所有開發人員來說,最有用的功能是通過條件配置來處理多個身份的能力。簡而言之,條件配置提供了一種基于一組條件來包含git配置檔案的方法。例如,您可以在 / .gitconfig檔案中使用以下指令,以根據存儲庫所在目錄的路徑自定義git配置:

[includeif "gitdir:~/work/"] path = .gitconfig-work[includeif "gitdir:~/play/"] path = .gitconfig-play

具體來說,這可以用來在.gitconfig-work和.gitconfig-play中定義不同的使用者和電子郵件。

在git 2.13版本中,幾乎所有開發人員都會使用到的功能是在git指令中使用路徑規則,即pathspecs。 例如,如果要在存儲庫中對給定類型的所有檔案執行grep,可以寫:

git grep my_pattern '*.c'

現在,您還可以使用否定pathspecs(從指令中排除特定的pathspec)以及使用屬性的pathspec(在pathspec定義中包括這些屬性)。 例如:

git grep text_to_search -- src ':(exclude)*.c'

其他顯著地改進包括:

git branch、git tag和git for-each-ref現在支援的--no-contains選項,可用于選擇不包含指定送出的标簽或分支,例如:

git tag -l --no-contains cf5c725 'v[0-9]*' | sort | tail -n 10

已有--contains選項時--no-contains選項會被忽略,例如查找在兩個标簽之間建立的分支:

git branch --contains v2.8.0 --no-contains v2.10.0

git stash支援使用pathspecs來暫存目前正在進行的工作,進而允許更多地控制要被暫存的内容。

子子產品現在有自己獨立的指令,包括checkout、grep和ls-files。 這意味着子子產品支援遞歸周遊。 另外,git status --short可以查詢出有關子子產品的更多狀态資訊。

您可以閱讀完整的發版說明,詳細了解git 2.13版本中的新功能。

本文轉自d1net(轉載)

繼續閱讀