2012-01-27 15 views
5

私は現行のDelphi 7プロジェクト(Project1.dprという名前)、私のチームと私がバージョン管理下に置くことができない2つのファイル(Project1.dofとProject1.cfg)(私たちはMercurial btw )。Delphi 7 .dofと.cfg's:バージョン管理下でそれらを追跡する必要がありますか?

問題はこれです:上の2つのファイルの中には、プログラマーがいるシステムに関連するいくつかのライブラリ、コンポーネント、および拡張パスが示されています。

私のチームは、32ビットのWindows XPを使用して、いくつかの男と何人かで構成されている

Windows 7の64ビットを使用して(私を含め)は、これは質問が表示されます:64ビットのWindows 7 Delphiの拡張機能、コンポーネント上からライブラリはc:\program files (x86)\...の下にあり、32ビットXPでは単純にc:\program files\...の下にあります。これらのファイルを変更すると、他の同僚のプロジェクト構成が破られる結果になります。

誰かがこのような状況についていくつか提案していますか?

+1

.dofファイルと.cfgファイルのどの部分にサードパーティコンポーネントへのパスが表示されますか?あなたのビルドプロセスは何ですか?私はIDEからビルドしていないことを願っています。 –

+0

はい、私はIDEからビルドしています。 BTW私はこれらの情報をできるだけ早く掲載するために投稿を編集します。 –

答えて

2

もしあなたがDelphi 7に滞在しているのであれば、あなたが.DOFファイルをチェックインすることをお勧めしますが、最終ビルドには依存しないことも考えてください。 更新:OPは.DOFファイルをチェックインしないように決め、最終ビルダーを使用しました。

あなたの64ビットの人々に彼らの.DOFの変更をチェックしないように頼むのも簡単です。 「ローカルハッキング」を実行すべきでないことを時々忘れても、あなたのローカルケースに対して.DOFファイルを読んで修正するための小さなユーティリティを作るのは簡単です。他の人のリポジトリから変更を引き出すたびに実行します。

第2の賢明なアイデアは、.dofdefaultファイルをチェックインして、Build.Batファイルが存在しない場合はproject.defファイルをproject.defにコピーすることです。問題が解決しました。

最終ビルドについては、「ビルドが愚かな理由で中断しないように」するために、最終ビルダーを見ることをお勧めします。ビルダースクリプトの最終版をバージョンコントロールにチェックし、最終ビルダーを経ています。そうすれば、顧客のミステリービルドを心配する必要がなくなります。

たとえば、正確な水銀変更セット(md5の16進値)を、それを含むコードとそれを構築するために使用したオプションに関連付けていますか?

さらに賢いアイデアは、現在10年以上経過しているDelphi 7を削除し、21世紀に確実に移行することです。

+1

+1「Delphi 7を落とすよりも賢いアイデアだよ」 – Kromster

+0

@Warren P:あなたの提案に感謝して、最終的に通常のscmワークフローから.dofと.cfgを除外し、コンパイルプロセスを適切な.dof設定を使用して、サーバーマシンにインストールします。 –

+0

@Warren P:数週間前に購入したDelphi XE2を使用して21世紀に完全に移行したいと考えていますが、当社の主要製品の1つはまだD7で構築されているため、私のチームは何もできませんこの。現在、バージョン3の製品を提供する準備をしています。バージョン3.5はXE2移植用にスケジュールされています。力が私たちと一緒に暮らせるように。 –

5

まず、ウォーレンズの提案に完全に同意します。

現在のシステムをそのまま使用したい場合は、$(ProgramFiles)をライブラリのpathesの接頭辞として使用できます。両方のOSのフレーバーで動作するはずです。

+0

私は、バッチファイルの%PROGRAMFILES%と同じであると考えました。これは、「32ビットシステム上の32ビットプログラムファイルと64ビットシステム上の64ビットプログラムファイル」を意味します。環境変数名でさえ '%ProgramFiles(x86)%'別名 '$(ProgramFiles(x86)) 'に変わります。 –

+0

@Warren、64ビットアプリケーションでは%PROGRAMFILES%は64ビットフォルダを指し、32ビットアプリケーション(IDEなど)ではx86フォルダが表示されます。組み込みの環境変数を調べることで、XE2でこれを確認できます。 %ProgramFiles(x86)%変数は、64ビットアプリケーションでのみ使用されます。 –

+0

@Warren、OPは、32ビットシステムではパスがc:\ program files \と言い、64ビットシステムではc:\ program files(x86)\と言います。これはまさに両方のOSの味で動作するIDE内部から見た$(ProgramFiles)の内容です。 –

0

デルファイの新しいバージョンにアップグレードするためのウォーレンの提案に同意します。過去10年間で非常に多くの機能が追加されています。彼らなしでうまくやっていると思うかもしれませんが、一度使い始めると、なぜあなたがずっと待っていたのか不思議に思うでしょう。

あなたがアップグレードする立場にない場合は、サードパーティのコンポーネントをProgram Filesからプロジェクトツリーのサブフォルダにコピーすることをお勧めします。私はこれをDelphi 6プロジェクトでやったので、誰もが同じバージョンのコンポーネントを使用しているわけではないことを発見しました。

バージョン管理下に.dofと.cfgを含めるかどうかは判断の呼び出しです。リリースビルドに依存している場合は、おそらくバージョン管理下にあるはずです。適切なコンパイルに必要なコンパイラ設定と条件を含めることができます。また、すべての開発者が自分のマシンで作業しているときに正しい設定を使用していることも有益です。

ビルドプロセスでコマンドラインからこれらの設定が行われている場合、大きな問題はありません。

偶然、Delphiの後のバージョンでは、この2つを複数の構成を含むことができる1つのファイルで置き換えることでこの問題を解決しています。また、オプションセットと呼ばれる機能を導入し、複数のプロジェクトにリンクすることで、すべてのプロジェクトで同じ設定が使用されるようになりました。

+0

そして、彼らはMSBUILDの統合を追加したので、コマンドラインからのビルドが簡単になりました。 –

0

substまたはhardlinksのような何らかの種類のパスリダイレクトを使用して、異なるインストールを統合することができます。この問題が解決された後、dofファイルをチェックインして、例を使用することをお勧めします。 Dof2cfgを実行して、コマンドラインビルド用のcfgファイルを生成します。

関連する問題