簡體   English   中英

保護git存儲庫中的文件

[英]Protecting files in git repository

我有一個中央存儲庫,其中包含我希望防止其他用戶更改(通過推送)的文件子集。 如果我將這些文件添加到.gitignore ,它們將不會被克隆。

是否有可能克隆所有文件,但克隆后在客戶端將其中一些添加到.gitignore

您可以將文件放在存儲庫中,提交它們,然后將它們添加到.gitignore,然后從下一次提交中刪除它們。

您仍然可以在提交之前直接獲取文件(可能使用某些內容對其進行標記,以便更容易通過名稱獲取)這將保留文件的狀態,同時不會在存儲庫中輕易編輯它。

要在拉動克隆之后訪問這些文件,只需編寫一個rake任務,為存儲庫的用戶提取它們。

對我來說,如果您需要這種級別的訪問限制,問題就在於其他地方。

盡管如此,如果您確實想要實現這一點,請考慮Gitolite 它允許您定義相當詳細的訪問規則,並且應該足以滿足您的需求。

Gitolite文檔: http ://gitolite.com/gitolite/master-toc.html

您可以定義“虛擬引用”以控制文件級別的訪問。 更多內容: http//gitolite.com/gitolite/vref.html

我最初想過一個過濾器驅動程序 (參見Pro Book ),它將:

  • 在塗抹步驟中保存您的文件內容
  • 在干凈的步驟將恢復您的文件內容。

替代文字

但這不是一個好的解決方案,因為這些腳本是關於無狀態文件內容轉換(請參閱此SO答案 )。

您可以嘗試在掛鈎中強制執行保存/恢復機制(請參閱相同的SO答案),但請注意它將是您的倉庫的本地(它將僅保護您的倉庫中的文件,不推送掛鈎)

您還可以使用:

git update-index --assume-unchanged file

請參閱“ 使用git,在命令行中臨時從提交中排除已更改的跟蹤文件 ”,再次僅限本地保護。 這將保護他們免受外部推送到您的倉庫(“導入”),但如果您發布它們(“導出”),則可以在客戶端修改。

是否有一個特定的原因,為什么Git本身必須解決這個問題?

如何將文件設置為只讀,並規定不應該推送這些文件的策略

有時,技術解決方案並不是最簡單的方法。

如果有人確實對這些文件進行了更改,則可以始終還原這些更改。

暫無
暫無

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

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