2010-09-16 88 views

回答

11

如果你這樣做,而不是使用clonebundle那麼您還可以給他們你的.git/hooks目錄,.git/config文件和其他一些自定義的文件。這些文件不包含任何敏感數據(您會知道,因爲您可能已經手動將其放入),但它們可能包含個性化設置。例如,您可能在.git/config中設置了user.nameuser.email配置設置。你可能寫了一些鉤子腳本(在.git/hooks/*)可能包含密碼 - 但是,就像我說過的,你可能已經知道了。

但是,git不會存儲您的任何密碼或任何其他祕密/敏感數據。

+2

對! '.git/config'文件可能很敏感。 +1 – VonC 2010-09-17 04:08:23

4

一個類似的解決方案是git bundle

請參閱Backup of github repoBackup a Local Git Repository瞭解更多信息。

.git(捆綁的或壓縮的)將不會包含除放入其中的所有歷史和文件之外的任何敏感數據。例如
請參閱git - remove file from the repository以刪除敏感數據。

由於Pat Notz提到his answer,壓縮的.git將包含您的.git/config
我意識到我的包含一些遠程回購地址,我實際上必須把我的[email protected]他們的工作。因此,您不應該包含任何本地元數據(如.git/config),因爲它們本意是......。

7

看一下你的.git目錄。可能有很多文件,但它們屬於相當少量的常規組(對象存儲數據,refs,reflog等)。您可以將內容分爲兩大類:Git可能通常傳輸到其他存儲庫的數據以及Git通常不會傳輸到其他存儲庫的數據。

不能正常運:

  • HEADFETCH_HEADORIG_HEADMERGE_HEAD
  • config
  • description
  • hooks/
  • index
  • info/ - 雜
  • logs/ - reflogs

通常輸送(例如通過克隆,提取,推,和束):

  • objects/
  • packed-refs
  • refs/

這最後一組構成了對象存儲和其公佈的入口點。您顯然必須檢查版本化內容本身,以確定是否有任何敏感內容。

HEADs,index(不在裸倉庫中)以及推薦日誌(logs/)都是對象庫中的附加入口點。如果你已經做了任何歷史重寫(例如,你最近從記錄的歷史記錄中刪除了一些敏感的配置文件),你會特別注意reflog(可能沒有在大多數裸存儲庫上啓用)和refs/original/refs部分命名空間。

FETCH_HEADconfig可能具有相關Git存儲庫的地址。

config可能有其他敏感信息。

info/有各種各樣的信息;其中一些可能是敏感的(信息/替代);有些不太可能是敏感的(假設內容本身是「乾淨的」-info/refs,info/packs);有些可能對儲存庫的操作很重要(信息/移植)。您使用的任何附加工具(鉤子腳本,Web界面等)都可能在這裏存儲數據;其中一些可能是敏感的(訪問控制列表等)。

如果在hooks/中有任何活動,您需要評估是否應該提供存儲庫的副本(還要檢查它是否存儲了存儲庫中任何位置的任何額外數據)。

description文件可能是無害的,但你可以檢查它。


如果你只移交的內容,那麼你或許應該只克隆到一個新的純倉庫或使用束(git bundleVonC describes)。

如果您負責切換內容以及用於管理它的過程,那麼您將不得不單獨調查存儲庫中的每一位。


一般(或更多​​的「偏執狂」的方式),有一個Git倉庫的層次裏面很多地方有人可以存儲任何隨機文件。如果你想確保你只提供Git需要的數據,你應該使用克隆或捆綁包。如果您需要提供一些「每個存儲庫」數據(例如,用於管理存儲庫的某個掛鉤),則應克隆到新的裸存儲庫(使用file: URL避免複製和硬連接現有對象存儲庫文件)並重新安裝只有履行你的義務所需的鉤子/數據。

+0

不錯 - 很多很好的細節。 – 2010-09-17 06:26:24

+0

像這位先生說的,很多細節。 +1 – VonC 2010-09-17 21:19:26

相關問題