7

プロジェクト ファイルを別の環境で実行するには、プロジェクト ファイルをローカルで変更する必要があります。誤ってこれらの変更を 2 回チェックインしてしまいました (そして、他のユーザーの実行環境を台無しにしてしまいました)。

ビルドをセットアップするにはもっと良い方法がたくさんあると思いますが、私は確立されたプロジェクトのコンサルタントとして働いているため、顧客の作業方法を実際に変更することはできません。

同じリポジトリに 2 番目のブランチを設定しようとしました (これは裏目に出て、リポジトリのルートにあるツリー全体を複製しました。もう一度いじることはしません)。

自分の 2 番目のリポジトリをセットアップし、それらのファイルだけを新しいリポジトリにチェックインしようとしました。これも非常に面倒で、基本的には機能しませんでした。

私は SVK を検討しています - それは助けになるかもしれませんが、うまくいくパターンを完全に理解することはできません.

ここに投稿しても良い答えが得られなかったと思いますが、それはSVKを真剣に検討する前のことでした-その新しいパラメーターでより良い解決策があるかもしれないと考えました.

チェックインしたい変更を追跡して、それらをチェックインするだけでよいことはわかっていますが、これは人間に依存するバグのある手順であり、これまでに 2 回失敗しています (私はバグのある人間だからです)。

これを行う方法について何か提案はありますか?

4

8 に答える 8

7

どのクライアントを使用していますか?

TortoiseSVN には、SVN に組み込まれているチェンジリスト機能を利用する気の利いた機能があります。変更されたフォルダーを右クリックして [変更の確認] を選択すると、そのダイアログで変更されたファイルのいずれかを右クリックし、[変更リストに追加 -> コミット時に無視] を選択できます。それ以降、コミットを実行するたびに、Tortoise はそれらのファイルをコミットに追加しないようにします。このページの「コミット リストからアイテムを除外する」を参照してください。

カメを使用していない場合は、同様の変更リストを手動で設定できます。

于 2009-11-13T22:51:21.463 に答える
3

git-svn を使用できます。ローカルの履歴を保持できるローカル リポジトリと、svn リポジトリで罪を犯す前に自分の罪を検討する機会がいくつか得られます。

于 2009-11-13T22:44:31.710 に答える
2

私は通常、SVNがチェックアウトする標準ファイルをsvn:ignore-edの別のファイルで上書きできるように調整しようとします

たとえば、構成ファイルを使用して Jetty Web サーバーを起動する bash スクリプトがあります。通常は jetty.xml ですが、ファイル システムに jetty-local.xml が存在する場合は、代わりに使用されます。

(もちろん、jetty.xml が更新されたときにそれらが jetty-local.xml にマージされないという明らかな問題がありますが、それは既に直面している問題よりも少ないかもしれません。)

私が以前取り組んでいた PHP プロジェクトでは、これは 2 つの別個のコード ツリーでさらに進められました。どちらの場合も優先的にロードされました。それは、それ自体の利益のためにあまりにも派手になりすぎている可能性があります.

問題が所有している構成ファイルである場合、私が使用した別の解決策は、それらを階層的に読み取るように調整することです (つまり、global.cfg.default を読み取ってから、global.cfg.local の設定で上書きします)。

于 2009-11-13T22:50:18.740 に答える
1

このような状況になったとき、チェックインしたくないファイルを「チェックインしない」というラベルの付いた変更セットに追加します。私の SVN クライアント ( SmartSVN、Tortoise もこれをサポートしていますが) は、その変更セットを無視するように設定できます。つまり、それらの変更を誤ってチェックインすることはありません。

これの唯一の欠点は、実際にチェックインしたい変更セット内のファイルに変更を加えた場合です。その後、それらを手動でチェックインすることを覚えておく必要があります。

于 2009-11-13T22:53:35.790 に答える
0

コミットする前に常にすべてのファイルの差分を確認します。そうすることで、デバッグコードが残っていないことを確認でき、変更を確認する2回目の機会が得られます。

tkdiffがインストールされたtksvnを搭載したUnix/Linuxマシンで実行している場合は、次のコマンドを使用して、各差分の優れたグラフィカル表現を1つずつ確認できます。

for FILE in `svn status | grep -v ? | sed -n "s/^[MA]//p"`; do tkdiff $FILE; done

自分自身を再確認するもう1つの賢い方法は、リポジトリの新しいコピーをチェックアウトし、それをビルドして実行することです。そうすれば、ファイルを追加するのを忘れたり、明らかな何かを壊したりした場合に見つけることができます。

于 2009-11-13T23:18:44.527 に答える
0

これを行う簡単な方法は考えられません。現在の環境を (ファイル/スクリプト内で) 動的に確認し、それに応じて設定を行う方法はありませんか? 私は単純なディレクトリチェックでPHPでそれを行っていました(作業ディレクトリが C:\projects... に等しい場合、パスを ... に設定します)

別のオプションは、変更されたファイルを除外または元に戻す pre-commit フックである可能性がありますが、前者の場合は最新ではなく、後者の場合は変更を再度行う必要があります...うーん。

于 2009-11-13T22:47:00.363 に答える
0

解決策は、話している変更の数によって異なります。私は .net Web サイトを扱っているので、ほとんどのサイトでは、環境ごとに異なる構成ファイルを使用します。例えば:

web.deploy.config
web.dev.config

これらはすべてソース管理下にあります。次に、これらのファイルの 1 つを、それが実行されているサーバーの web.config にコピーします (このファイルはソース管理から除外します)。私のために働きます。

于 2009-11-13T23:03:23.817 に答える
0

svn switch個人化されたファイルが他の人の構成を踏みにじらないようにするために、私は幸運に恵まれました。通常のトランク/ブランチ/タグ レイアウトを考えると、個人用の構成ファイルを含むブランチ内のフォルダーを自分で作成します。それで

svn switch URL-to-personalized-config URL-to-standard-config

これにより、構成ファイルへの編集がトランクではなくブランチに保存されます。構成ファイルにバージョン管理された編集を取得し、トランク ファイルを簡単に台無しにすることはできません。

于 2009-11-13T22:53:47.197 に答える