一日一技:如何正確在自己項目里面集成別人的代碼?
更進一步,這個代碼不是 Python 寫的,可能是 Golang,可能是 Node.js,可能是 C++。如果你的項目想直接調用對方的代碼,又應該怎么辦呢?
有人說,那就把別人的代碼先下載到本地,然后復制到自己項目中。但這樣有一個問題,如果別人代碼更新了,你如何即時更新呢?
以我之前的一個項目?kingname/JsonPathFinder[1]?為例。這個項目里面沒有setup.py,也沒有把它上傳到pypi 上面。所以你沒有辦法使用 pip 進行安裝。要使用它本身很簡單,直接把這個文件JsonPathFinder.py復制到你自己的項目里面就可以了。但是這樣一來,你不知道我什么時候更新了代碼,難道你每天要上來看看我有沒有更新?
為了解決這個問題,我們可以使用git submodule功能。這個功能,可以讓你把一個 Git 源掛載到另外一個源里面。
假設我們現在有一個項目:test_module,它想使用JsonPathFinder來解析 JSON,假設項目的代碼如下圖所示:
顯然,現在運行肯定會報錯,因為我還沒有把JsonPathFinder.py文件復制過來。但我并不準備直接復制文件,相反,我要做的是,以子模塊的形式,把JsonPathFinder項目添加進來。
首先確保我們目前的項目已經使用 git進行了源碼管理。如果你還沒有,那么,記得執行git init。
然后,我們執行如下命令:
git submodule add https://github.com/kingname/JsonPathFinder.git
運行效果如下圖所示:
現在,我們再來運行main.py,可以看到代碼已經被正常執行了:
并且 git 會自動 Clone 子模塊到對應的文件夾里面。我們使用子模塊里面的代碼,就像是直接使用復制粘貼下來的代碼一樣。
git submodule update --remote
Git 就會自動更新子模塊的代碼了。你完全可以把這條命令寫到 Makefile 里面,結合我以前講 Makefile 的文章,做一個自動更新的功能,每次當你要運行自己項目的時候,都自動更新一下子模塊。
關于子模塊的更多操作,你可以參考 Git 的官方文檔:Git - 子模塊[2]。
參考資料
Git
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。