2012-02-03 80 views
3

我有一個git項目(一個Django應用程序),我想添加另一個應用程序(https://github.com/lambdafu/django-south)作爲子樹。問題在於第三方存儲庫的根目錄中有一個額外的目錄層。我不想亂用python的加載路徑,添加符號鏈接或額外的前綴來導入語句。有沒有辦法將south子目錄作爲我項目中的子樹?添加另一個項目的子目錄作爲子樹

+0

OHHHHHH - 今天我學習了[git-subtree](https://github.com/apenwarr/git-subtree)。 – dokkaebi 2012-02-03 02:26:43

+0

您是否試圖將南方作爲項目的依賴項? – 2012-02-03 02:27:08

+0

該回購有一個setup.py - 除非你有充分的理由需要源代碼,否則你應該安裝回購和更新,只要你想要新的HEAD。 – 2012-02-03 02:28:50

回答

1

我們調用南項目repo的根目錄。

您可以通過添加__init__.py使repo成爲python模塊,然後將repo.south添加到已安裝的應用程序。

(從here借用)

您還可以添加repogit submodule這樣你就可以保持與你的項目的具體修訂沿南特定修訂。

+0

沒錯,這是我不想做的「添加額外的前綴來導入語句」選項。這也意味着在子目錄中維護一個'__init __。py'文件。如果我去的子樹路線,可能不會導致合併衝突,但我不知道一個方便的方法來維護它,如果我使用的子模塊。 – Clueless 2012-02-03 02:06:36

+0

啊對了。所以唯一的解決方案是避免改變目錄結構。據我所知,沒有辦法克隆整個git倉庫。我的猜測是符號鏈接最終會變得最簡單。祝你好運! – dokkaebi 2012-02-03 02:20:22

1

您是否試圖將South列爲依賴項?因爲這聽起來像。如果是這樣,那麼比將目錄包含在項目樹中更好。這很麻煩,我們有這方面的工具。

你使用pipvirtualenv怎麼樣?如果是這樣,pip install -e git+https://github.com/lambdafu/django-south#egg=south,你會很好去。要在安裝後更新到最新的HEAD,您只需添加-U標誌。您甚至可以將您的需求保存在需求文件(pip freeze > requirements.txtpip install -r requirements.txt)中,以保持它們的版本控制。

如果不是,爲什麼不呢?

+0

我通常使用pip,但在這種情況下,我正在部署到一個偏執系統管理員的服務器,該系統管理員不允許傳出連接或添加系統範圍的python軟件包。這個想法是讓我的所有依賴關係都在源碼樹中,因此只需通過ssh就可以完成ssh。 nodejs做模塊的方式。也許我可以通過讓他安裝pip並使用其捆綁功能來解決這個問題。 – Clueless 2012-02-03 03:09:49

+0

您可以簡單地從現有的virtualenv(tar + zip)複製環境,然後在服務器上展開它。不需要外部連接。 – 2012-02-03 05:50:00

+0

沒錯。這意味着無需安裝全系統軟件包。所有你需要的是virtualenv安裝在用戶空間爲任何用戶運行您的Python應用程序。 – 2012-02-03 13:06:47

相關問題