2017-05-30 62 views
2

我在Github上構建了一個項目(在html + css + javascript中)半年。它一直在私人存儲庫中,只有一個分支。製作部分公開的私有存儲庫

現在,我想使這個倉庫部分公開,這樣

  1. 用戶可以使用issues功能提問或寫入的要求,我可以迴應他們,我們可以有討論。

  2. 實際上,用戶不需要看代碼。但是,因爲我們在Github上,我可能想公開一小部分文件

  3. 我不想丟失提交歷史記錄。

任何人都可以告訴我什麼是步驟(和理想的命令)我應該遵循嗎?我是否必須重新組織我的文件夾,例如,製作公用文件夾和私人文件夾(我不希望)?

回答

0

首先要了解的是GitHub權限模型。提交問題等需要一些權限級別的回購。閱讀應該是足夠的。

但讀取確實也意味着「能夠看到所有的代碼和歷史」。即使您控制了可以寫回您的回購庫的內容,也能夠看到甚至可以複製和分揀。並且沒有比「讀取(所有代碼)」更低的訪問級別。

所以,如果你想你的代碼保留給自己,然後創建某種除了從GitHub項目頁面,並攻到一個專用的問題跟蹤系統存在,可能只是更有意義你想要做什麼。

如果你確定一些代碼應該公開,那麼你必須有兩個回購。具有公共代碼的回購可以是隻讀的,或者如果能更好地滿足您對該代碼子集的需求,則可以讀/寫。無論哪種方式,它可以然後主持問題的討論等

拆分代碼的一個子集到公共回購也不是努力,但如果你想公共回購具有完整的歷史以及更難。您需要避免爲公共代碼創建兩個不同的歷史記錄,因此您可能必須從專用回購庫中刪除公共代碼。 (它可以作爲子模塊重新引入 - 與公共回購鏈接 - 但最簡單的情況下,這意味着您需要在單個目錄下組織公共代碼。)

如果只有當前版本需要被公開,那就很簡單。您可以啓動新的repo,將文件從一個文件移動到另一個文件,如果需要,可以創建子模塊鏈接。

如果您想發佈已發佈文件的歷史記錄,那麼您必須執行類似於git filter-branch的操作,以從原始回購(的副本)創建公共回購。確切的過程取決於具體要求,但一般你可以用任何(一)subdirectory-filter只發佈一個目錄中的內容(新回購的根) - 但它聽起來像是你的代碼是沒有安排,使那麼容易;或者(b)index-filter刪除要保持私密的文件(同時保留保留的文件的現有目錄結構);或(c)一個tree-filter和複雜的腳本,只要你喜歡四處移動,刪除或添加文件,轉化爲「原回購」版本到相應的「公共回購」的版本。

如果你這樣做拆分歷史,你可能仍想保留公共文件的歷史記錄在原回購僅僅是因爲連接回購歷史是相當困難的。大多數時候這不是一個巨大的實際限制,除非歷史的規模很大。

+0

感謝您的回答。我真的很喜歡Github的「問題」作爲「問題跟蹤系統」。你認爲如果創建一個帶有一些項目頁面的Github存儲庫以便大部分使用它的「問題」功能是可以接受的嗎? – SoftTimur

+0

我想我不知道會是什麼讓它「可以接受」或其他。我不記得看到它完成了,可能是因爲在沒有集成源代碼控制的情況下,存在專門關注問題管理的站點;但我不知道爲什麼你不能,如果這真的是你想要做的 –

1

你甚至需要兩個獨立的存儲庫。代碼是公開的還是不公開的。你不能公開文件的一部分。除非您將這些文件打包爲歸檔文件,並將其提供到回購的下載部分。但是如果你想讓它們成爲倉庫,你需要將倉庫分成兩部分, G。與git filter-tree--subtree-filter

+0

對不起,我剛剛找到[此帖](http://alexgaudio.com/2011/07/24/sharing-part-your-repo-github.html),它是一個不同的方法比你的嗎? – SoftTimur

+1

從一個快速瀏覽它是一種不同的方法(而頂部的更新說明了我所說的),不適用於你。他們的私人回購不在GitHub上,而是在其他地方或purley本地。他們準備一個只包含要共享的文件的分支,並只將該分支推送到GitHub存儲庫。這也就是涉及到兩個不同的版本庫,一個與公衆的東西,一個與私人和公共的東西,具有公共的東西,是被推到了公衆遠程唯一一個獨立的分支的方法。我會說,非常笨重和脆弱。 – Vampire

相關問題