維護多子模塊項目,我正在開發使用FuelPHP框架另外兩名隊員同一個網站。我想使用git來維護這個項目,但是我在配置過程中遇到了一些麻煩。當我使用oil
來安裝FuelPHP時,它會安裝主框架以及github中的幾個子模塊。該.git/config
文件中的文檔根目錄如下:使用Git
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git://github.com/fuel/fuel.git
[branch "1.4/master"]
remote = origin
merge = refs/heads/1.4/master
[submodule "docs"]
url = git://github.com/fuel/docs.git
[submodule "fuel/core"]
url = git://github.com/fuel/core.git
[submodule "fuel/packages/auth"]
url = git://github.com/fuel/auth.git
[submodule "fuel/packages/email"]
url = git://github.com/fuel/email.git
[submodule "fuel/packages/oil"]
url = git://github.com/fuel/oil.git
[submodule "fuel/packages/orm"]
url = git://github.com/fuel/orm.git
[submodule "fuel/packages/parser"]
url = git://github.com/fuel/parser.git
我有一個遠程服務器,我想保持這個項目的裸倉庫設置。我希望能夠從github中爲FuelPHP及其子模塊提供更新,同時還能夠將任何更改推送到裸存儲庫,以便我的團隊成員和生產服務器可以從中獲得更新。到目前爲止,我正遇到一堵磚牆。
這是我到目前爲止已經完成:
在服務器上:
$ mkdir websitename.git
$ cd websitename.git
$ git init --bare
在我的本地機器:
$ curl get.fuelphp.com/oil | sh
$ oil create websitename
$ cd websitename/
$ git remote add reponame ssh://[email protected]:2222/httpd/www/websitename.git
$ git push reponame 1.4/master
我得到這樣的迴應:
Counting objects: 14422, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4375/4375), done.
Writing objects: 100% (14422/14422), 2.20 MiB | 3.82 MiB/s, done.
Total 14422 (delta 9816), reused 14410 (delta 9810)
To ssh://[email protected]:2222/home/haroldbr/public_html/crude.git
* [new branch] 1.4/master -> 1.4/master
然後,在服務器上反擊N:
$ git clone -l --no-hardlinks /httpd/www/websitename.git /httpd/www/websitename
這給了我這個錯誤:
Cloning into 'websitename'...
done.
warning: remote HEAD refers to nonexistent ref, unable to checkout.
顯然,我有一個配置問題,但我不知道它是什麼。我希望能夠使用git
更新遠程存儲庫中的所有文件。我想象它的工作是這樣的:
在我的本地機器:
$ git pull origin 1.4/master
$ git push reponame --all
在服務器上:
$ cd websitename/
$ git pull
在一個完美的世界,這將拉動對FuelPHP所有更新和它的包從github並將所有這些更新以及對app/
或public/
中的文件的任何更改推送到裸存儲庫。我試圖做甚至可能嗎?我是否需要在app/
和public/
中設置儲存庫並分別維護它們?我的配置有什麼問題,我無法從裸回購克隆?
我嘗試過'git clone --recursive --no-hardlinks -l websitename.git websitename',它給了我這個錯誤:'克隆到'websitename'...完成。子模塊'fuel/core'(git://github.com/fuel/core.git)註冊路徑'fuel/core'克隆成'fuel/core'...致命:無法連接到github.com:github .com [0:207.97.227.239]:errno =連接被拒絕將'git://github.com/fuel/core.git'複製到子模塊路徑'fuel/core'failed'中 –
您沒有鑰匙該機器連接到github。因此,克隆沒有遞歸,然後'git submodule init',然後使用'sed'將urls更改爲只讀格式,然後'git submodule update'。如果你不會爲燃料做出貢獻,那麼你可能只需使用url的只讀形式,服務器就可以把它拉下來。 HTTP表單將做到這一點。 –
我用'git clone --no-hardlinks -l websitename.git websitename'。然後'cd websitename'和'查找。 -exec grep「git://」'{}'\; -exec sed -i's/git:\/\ // http:\/\ //''{}'\;'用'http://'代替'git://'。我運行了'git submodule init'和'git submodule update',這成功地讓我克隆了github的燃料核心。但是,我的服務器回購仍然不像我的本地回購。我可以創建一個文件,對其進行分級,提交,然後推送到裸露的回購站。但是,當我試圖拉到實時服務器時,它告訴我「已經最新。」我是否需要更改分支名稱或其他內容? –