2

拡張 CodeIgniter フレームワークを管理するために git を使用しています。これは、追加のヘルパー、ライブラリなどを備えた現在の CI リリースのクローンです。

このフレームワークを使用している多くのサイトがあり、新しいヘルパー メソッドを追加したり、1 つのサイトのバグを修正したりした場合、カスタム ファイルを上書きすることなく、他のすべてのサイトを簡単に更新できるようにしたいと考えています。

以下のワークフローを実現したい

  1. 新しいサイト ディレクトリgit initを作成して、空のローカル git リポジトリを初期化する
  2. これをリモート フレームワーク リポジトリにリンクしますgit remote add origin git@github.com:username/framework_repo
  3. リモート フレームワークの新しいコピーをプルするgit pull origin master
  4. サイト ファイルに変更を加え、リモート リポジトリにコミットします。git push origin master
  5. これらの変更を他のサイトにプルダウンします
  6. 手順 4 と 5 を繰り返します

それはすべて問題ありませんが、

  • config.php や database.php などのファイルは、各サイトに固有であるため、リモート リポジトリにコミットすることはできません。
  • ただし、それらをリモート リポジトリに存在させたいので、最初のプル リクエストでデフォルト ファイルがローカル ディレクトリにダウンロードされます。
  • さらに、リモート リポジトリから別のプルを実行してフレームワークを更新する場合、これらのファイルを上書きしたくありません。

これを達成する最良の方法は何ですか?いくつかの .gitignore ブー​​ドゥー?私はすでにファイルを無視するために .gitignore を使用していますが、この場合は最初のリクエストでのみファイルをプルしたいので少し異なります。

それが理にかなっていることを願っています。

4

3 に答える 3

5
  • config.php や database.php などのファイルは、各サイトに固有であるため、リモート リポジトリにコミットすることはできません。

リポジトリにあってはならないすべてのファイルをファイルに入れ.gitignoreます。それはほとんどブードゥーではありません。無視すべきファイルのリストにすぎません。

  • ただし、それらをリモート リポジトリに存在させたいので、最初のプル リクエストでデフォルト ファイルがローカル ディレクトリにダウンロードされます。

のようなダミーファイルを作成config.default.phpし、最初のプルの後にそれらを無視された名前にコピーします。

  • さらに、リモート リポジトリから別のプルを実行してフレームワークを更新する場合、これらのファイルを上書きしたくありません。

最初の手順で完了です。

于 2010-06-25T12:41:15.297 に答える
2
  1. に追加config.phpします.gitignore
  2. 使用するデフォルト/ディストリビューション/基本構成を作成し、config.php-dist
  3. 以下のように Git フックを作成しpost-receiveます。
  4. フックは各 の後に実行されますが、コピーはが存在しないgit pull場合にのみ実行されます。config.php

post-receive例(ニーズに合わせて):

#!/bin/bash
[ -f 'config.php' ] || cp config.php-dist config.php
于 2010-06-25T12:52:51.293 に答える
0

必要なのは、カスタマイズされたサイトごとに多数のブランチと、共通ファイル用の追加の上流ブランチであると思います。各ブランチが存在する場所 (またはブランチの複数のコピーがある場合) は、実際には大きな違いはありません。

共通ファイルに変更を加える場合は、共通ブランチで直接変更するか、カスタマイズされたブランチの 1 つにチェックインを作成してから共通ブランチにチェリー ピックすることができます。変更を共通ブランチにプッシュしたくはありません。これは、カスタマイズと修正が必要になるためです。行った変更はすべてマージされるため、共通ブランチからカスタマイズされたブランチに引っ張っても安全です。

于 2010-06-25T12:42:27.863 に答える