web-dev-qa-db-ja.com

devブランチからトランクへのマージが行われたときにファイルのSVN履歴を維持しますか?

私の組織では、バージョン管理にSVNを使用しています。そのため、ビルドごとに(定期的に)、コードを開発ブランチからトランクにマージします(すべての開発者がこのブランチにチェックインします)。そのため、新しいブランチで新しいリリースを宣言する場合は、トランクからsvnコピーを作成します。

これで、新しいブランチにはトランクの履歴のみがあり、-前の開発ブランチはありません。

Devブランチからトランクへのマージが行われたときに履歴を維持する方法はありますか?

更新:

履歴とは、すべてのファイルの改訂履歴を意味します。誰が作成し、誰が編集したか。

残念ながら、現在svn 1.6を使用しています

7
Sam

残念ながら、これはSubversion 1.8より前のSubversionでは直接サポートされていません。ブランチ内のファイルとトランク内のファイルはコピーであり、Subversionはsvn log特定のファイルのみで、ブランチ全体ではありません。

したがって、唯一のオプションは、SVNログをfilterすることです。これの主な欠点は、ファイル名でフィルタリングした場合、別の名前に移動またはコピーされているファイルが一致しないことです。

Subversion 1.7以前

それを実用的に保つために、私はあなたがあなたのトランクのために興味があるファイルの履歴を取得します

svn log http://www.your.org/svn/repo/trunk/path/to/file.txt -g

これには、次のようなファイルのmergeinfoが含まれます。

Commit message
Merged via: r6504, r6493, r6451, r6429

これで、ファイルがどこから来たのかがわかり、リポジトリのルートでこれらのリビジョンを検索できます。

svn log http://www.your.org/svn/repo -r 6504

Subversion 1.8以降

Subversion 1.8リリースには、上記を容易にする コマンドラインクライアントに対するいくつかの改善 が含まれています。特定のファイルのすべてのログエントリを見つけるには、そのファイルを直接検索するだけです。

 svn log -v --search "src/foo.c" http://svn.example.com/svn/
8
malte

SVN 1.8の場合

>svn log -v REPO-ROOT --search FILENAME

0
Lazy Badger

私はboth SVN(ビジネスによって決定される)とMercurial(ローカルリポジトリのみ)を使用します。

Netbeansはこの状況をうまく処理します-他のIDEとどのように統合するかはわかりません。

これには多くの利点があります。 SVNからの更新により、気付かない変更が頻繁に行われますが、Mercurialはすぐにそれらを取得します。新しいクローンを取得し、古い.hgフォルダーをコピーして、すべての変更を即座に確認できます。

何よりも、MercurialはDiffパッチとQuiltを使用するとはるかに簡単に機能します。

0
OldCurmudgeon