2

誰かが行っている作業の論理的なチャンクの一部として20個のファイルをチェックインしました。

残念ながら、彼らはこれを20の別々のコミットとして行いました。これは私を悲しいパンダにします

これらのコミットをリポジトリから削除してから、一度に再コミットする方法はありますか?

あるいは、これらのチェンジセットをバンドルして、途中のリビジョンの1つで誰かがコードをチェックアウトするのを防ぐ方法はありますか?

リビジョンが1001-1020であるとしましょう。私が防ぎたいのは、誰かが不安定な壊れたリビジョンの1つ(つまり1001-1019)でマージ/ブランチ/タグ付けできることです。

これらの19の中間状態のリビジョンを、マージ不可/分岐不可としてマーク/フラグを立てることができる場合でも役立ちます。

4

2 に答える 2

4

これは開発者の悪い考えであったことに同意しますが、SVNリポジトリの悪いリビジョン(ビルドを失敗させるリビジョン、単体テストを失敗させるリビジョンなど)は一般的であり、予想されます。そのため、継続的インテグレーションを使用しています。

開発者がブランチを開始するために悪いリビジョンの1つをランダムに選択する理由はわかりません。それらは確かにトランクのヘッドから(機能ブランチの場合)、またはタグ付きリビジョンから(メンテナンスブランチの場合)分岐します。

適切なリビジョンのみがリポジトリに送信されるようにする場合は、おそらく2つのリポジトリが必要です。1つは実際の開発用で、もう1つは開発リポジトリからのいくつかのリビジョンを集約し、変更は検証されたときにのみコミットされます。しかし、そうする正当な理由は見当たらない。

于 2011-12-13T10:23:19.150 に答える
2

Subversionはすべてを記録し、バージョン1.8が登場するまで(おそらく)過去を消去する方法はありません。つまり、これらのトランザクションを削除するためにダンプ、フィルター、およびロードを実行する場合を除いて、それらを単一のトランザクションとして手動でやり直します。

開発者が途中で分岐するのを防ぐ実際の方法はありませんが、svn:logリビジョンプロパティ(コミットメッセージ)を変更して、このリビジョンを分岐点として使用しないステートメントを含めることができます(その後、適切なリビジョンを指すようにします) )。そうすれば、分岐するポイントを探している開発者に警告が表示されます。

リビジョンプロパティを変更するには、フックを有効にしpre-revprop-changeてrevpropを変更できるようにする必要がありますsvn:logが、それは難しくありません。私は通常それを設定するので、コミットを行ったユーザー(svn:author)と管理者(あなた)はとにかくsvn:logプロパティを変更できます。このように、誰かがコミットメッセージ(間違ったJiraチケットなど)で間抜けだと言ったとき、私はそれを自分で修正し、AngryBirdsをプレイするのに忙しいときに私を煩わせるのをやめるように彼らに言うことができます。

于 2011-12-13T16:37:48.600 に答える