2

私は、FuelPHP フレームワークを使用して、他の 2 人のチーム メンバーと共に Web サイトを開発しています。プロジェクトを維持するために git を使用したいのですが、構成に頭を悩ませています。oilFuelPHP のインストールに使用すると、メイン フレームワークと github からのいくつかのサブモジュールがインストールされます。ドキュメント ルートの.git/configファイルは次のようになります。

[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

このプロジェクトを維持したいリモートサーバーにベアリポジトリをセットアップしています。私は、FuelPHP とそのサブモジュールの github から更新をプルする機能を持ちたいと思っています。また、変更をベア リポジトリにプッシュして、チーム メンバーと本番サーバーがそこからプルできるようにしたいと考えています。これまでのところ、私はレンガの壁にぶつかっています。

これまでに行ったことは次のとおりです。

サーバー上:

$ 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://git@example.com: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://haroldbr@haroldinc.com:2222/home/haroldbr/public_html/crude.git
 * [new branch]      1.4/master -> 1.4/master

次に、サーバーで再び:

$ 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/? 裸のレポからクローンできないという構成の何が問題になっていますか?

4

2 に答える 2

2

git を使用して FuelPHP Web サイト プロジェクトを維持する方法に関するスクリーンキャストがここにあります: http://blip.tv/fuelphp/creating-a-fuelphp-application-repository-5688973、ただし、ベア リポジトリへのプッシュについては説明していません。 .

ssh://example.com/path/to/project.git に新しい裸のリポジトリが既にセットアップされていると仮定すると、次の手順に従ってプロジェクトをセットアップできます。ローカル マシンから:

git clone -b 1.4/master --recursive git://github.com/fuel/fuel.git /path/to/project
cd /path/to/project
rm -R .git
rm .gitmodules
rm -R docs
git init
git submodule add git://github.com/fuel/core.git fuel/core
git submodule add git://github.com/fuel/auth.git fuel/packages/auth
git submodule add git://github.com/fuel/email.git fuel/packages/email
git submodule add git://github.com/fuel/oil.git fuel/packages/oil
git submodule add git://github.com/fuel/orm.git fuel/packages/orm
git submodule add git://github.com/fuel/parser.git fuel/packages/parser
git add .
git commit -m "Initial commit"
git remote add origin master ssh://example.com/path/to/project.git
git push origin master

その後、本番サーバーに移動し、リモート リポジトリから再帰的にクローンを作成して、プロジェクト全体を取得できます。

git clone --recursive ssh://example.com/path/to/project.git /path/to/production

その後、次の機能を維持しながら、プロジェクトへの変更を追跡できます。

git submodule update --recursive

これにより、最新の FuelPHP パッケージを最新の状態に保つことができます。

于 2012-12-19T20:09:42.830 に答える
0

クローンは正常に作成されていますが、必要なブランチをチェックアウトする必要があります。ベアリポジトリに頭が定義されていないため、警告が表示されます。

また、git clone --recursiveサブモジュールも取得するように1回実行する必要があります。それから、あなたはgit pull続くことができますgit submodule update

于 2012-12-14T20:28:06.347 に答える