1

私は約1,000人のアクティブユーザーがいる中規模のWebサイトを作成して維持しています。

私はUbuntu、Python、Django、jQuery、Less、twitter-bootstrapなどのテクノロジーと、それらがもたらすすべての依存関係を使用しています。インターネットからダウンロードしたJSライブラリのような0.5トンの外部コンポーネントと、変更が必要だったためにGitHubでフォークしたいくつかのプロジェクトがあります。私がインストールしたいくつかのPythonプロジェクトpip

オンラインでダウンロードしたJSライブラリにも変更を加えましたが、すべてがリポジトリに保存されています。フォークされたプロジェクトは、私のリポジトリ内でgitサブモジュールとして利用できます。

1.5年間の開発の後、これはひどいアプローチであったことに気づきました。コンポーネントをアップグレードすると、非常に面倒になる可能性があります。バージョンを追跡するのは難しいです。単一のコンポーネント(pipでインストールしたpythonパッケージ、javascriptライブラリなど)をアップグレードすると、gods-know-whereのリグレッションが発生する可能性があるためです。

昨夜、私は明日がないようなものをフォークする代わりに、Makefileを介して適用されたパッチのセットを維持するべきだったと思い始めました。

私はもっ​​と良かったでしょうか?あなたの考えは何ですか?

前もって感謝します。

4

1 に答える 1

0

私は最近これを経験しました。私は、ラボが使用する言語の新しいバージョンにファイルを移植するために使用するファイルのセットを変更してきましたが、並行して、他の人はニーズに合わせてファイルの独自のバージョンをカスタマイズしています。したがって、必要なのは、カスタマイズされたバージョンに加えて変更にパッチを適用する方法です。

私がこれを行ってきた方法は、gitまたはMakeを使用することではなく(私はこれらの両方を日常的に使用しています)、OSXの視覚的なFileMergeユーティリティを使用することです。カスタマイズしたコードとそのコードの違いはすべて、最初はデフォルトでコードになっていると思います。その後、すべての変更を確認し、カスタマイズしたコードに属するものがある場合は、それらをコードにパッチします。

これは手動ですが、OS Xの視覚的なFileMergeユーティリティにより、比較的迅速で簡単になります。比較的痛みがないということは、4つの矢印キーを離れたり、マウスを使用したりすることなく、右手でマージ全体を実行できることを意味します。そして正直なところ、この種のパッチを自動化できるかどうかはわかりません。マージを行うときに、ある種の自動パッチ適用システムに簡単に任せることができるかどうかわからないという決定を下さなければなりませんでした。

そうは言っても、gitのマージアルゴリズムが正常にマージされたことに驚いています。

これは素晴らしい質問です。投稿ありがとうございます。そして、これが決定的な答えではないことを私は知っていますが、これらは、それらが価値があるものについての、この問題に関する私の現在の考えです。

于 2012-08-18T04:34:08.860 に答える