2013-12-23 12 views
5

私のウェブサイトの1つにフォーラムソフトウェア(PunBB)がインストールされています。ソフトウェアはフックやフィルタを提供していないので、時間が経ってもコアにカスタマイズが追加されています。つまり、私はすべてを手動で行う必要があるため、新しいバージョンへのアップデートはますます面倒になります。Gitを使用して、カスタマイズしたソフトウェアに更新パッチを適用することはできますか?

これまでGitを使ったことはありませんが、私はそれについて読んだことがあります。ほとんどのユースケースは、きれいなコードベースから始まり、Gitを使って変更を追跡しますが、私は広範囲に変更されたコードから始め、パッチを追加する必要があります。私は自分の状況でGitを使う方法を見つけることができず、これができるかどうか本当に知りたいです。

答えて

5

はい、できますし、絶対にする必要があります。

  • (あなたのケースgit clone https://github.com/punbb/punbbで)天然供給源から

    • クローン元のリポジトリには、上流のmasterブランチから始まるあなたのローカルブランチを作成します。
    • 上流のマスターとカスタマイズしたコピーの違いを作成し、ブランチにコミットします。
    • カスタマイズをローカルブランチにコミットし、アップストリームのマスターブランチから時々マージ(または時にはチェリーピック)します。
    • あなたの仕事の一部を寄付することを検討してください。結局、マージが簡単になります。

    EDIT:あなたの要求によって拡張ステップ3:

    1. 上流のリポジトリをクローンした後、上流マスターとれ状態に基づいて(たとえば、mybranch)ローカルの開発ブランチを作成します。

      git branch mybranch origin/master 
      git checkout mybranch 
      
    2. このブランチのファイルを編集して、ローカルパッチを反映させます。しかし、この違いをできるだけ小さくしたいと思います。すべてのファイルを盲目的に置き換えるだけでなく、上流に近づくことができるかどうか考えてください。

    3. この相違点をmybranchに伝えてください。

      随時
    4. 、上流から習得するための新しいコミットフェッチ:

      git fetch origin 
      

      をし、あなたのmybranchにそれらの変更をマージ(それは最初、mybranchにチェックアウトをあなたがそれにしていると仮定し、そうでない場合):私はこの上で働いていたので、

      git merge origin/master 
      
  • +0

    それはしばらくしているが、私はあなたの第三段階に問題があります。 diffを作成するには、どちらのファイルセット(punBBマスターと私のカスタマイズバージョン)をどこに置くのですか?私は新しいブランチを作ってから、両方のバージョンをマージするために自分のコードでマスターファイルを上書きしようとしましたが、両方のブランチでまったく同じファイルで終わってしまいました。両方を別々のディレクトリに置いておくべきですか?しかし、どのようにそれらをマージするのですか? – ArchCarrier

    +0

    これを行う方法のヒントを教えてもらえますか? – ArchCarrier

    +0

    あなたの質問に答えるように更新されました – mvp

    関連する問題