1

私たちの組織では、次のような問題があります。Webツリーのリビジョンを制御したいのですが、多くの人はそのツリーの任意のファイルを変更(およびチェックイン)できるようにしたいと考えています。また、ツリーはかなり大きいので、これらすべてのチェックアウトは1回だけにしてください。そのツリーの一部には、現在RCSを使用しています。これにより、上記の動作が可能になりますが、もちろん、他にもいくつかの欠点があります。

UnixサーバーのSubversionでそのようなことを(おそらく何らかの回避策で)行う方法を知っている人はいますか?

4

10 に答える 10

2

開発者は自分のマシンを使用していませんか? ツリーが大きすぎて、個々の開発者のワークステーションに収まらないため、サーバー上の共有ネットワーク ドライブにチェックアウトする必要がありますか? この質問には、問題とその背後にある理由をさらに明確にするために、いくつかの数字が必要だと思います.

于 2008-11-17T12:56:36.290 に答える
1

変更したいツリーの一部をチェックしてみませんか?それは問題ではないはずです。「シングルチェックアウト」とはどういう意味か混乱しているかもしれません。

于 2008-11-17T11:56:24.370 に答える
1

典型的な SVN 環境では、すべてのユーザーが自分の (完全または部分的な) ツリーのコピーを持ち、同僚を邪魔したり壊したりすることなく、ツリーで実行したい変更を行うことができます。次に、何をチェックインするかを決定します。他のすべての人は、チェックアウトするのに最適な時期であると判断したときにいつでもチェックアウトできます。メイン (展開) ユーザーは定期的にチェックアウト (日次ビルド) して整合性をチェックします。

あなたの混乱は CVS/subversion と比較した RCS だと思います: RCS は編集中に他のすべてのファイルをブロックしますが、SVN は何もブロックしません (通常、ブロックは可能ですが、めったに使用されません)。

于 2008-11-17T12:17:20.770 に答える
1

@Lytha: RCS がロックベースであることは知っていますが、このシナリオでは問題ありません。また、SVN をロック付きで使用できることも知っていますが、ユーザーごとのチェックアウトの問題は解決しません...

于 2008-11-17T12:34:04.713 に答える
1

ディスクドライブは安価です。各開発者にツリーのコピーをチェックアウトさせます。Subversion はロックの問題を解決するので、各ユーザーが独自のコピーを持っていても、他のユーザーが変更を行うのを妨げません。各人がソース ツリーの独自の開発バージョンをチェックアウトして管理すると、生産性が大幅に向上し、変更に対する説明責任が向上します。

于 2008-11-17T13:14:10.110 に答える
1

おそらく他の投稿からわかるように、この問題に対する一般的な答えは「そんなことはしないでください」です。一般に、Subversion は、リポジトリの一部またはすべてをローカル ワークスペースに個別にチェックアウトするために使用されます。

絶対に、積極的に、開発者ごとにリポジトリ全体を表示する必要があるが、開発者が変更するのはごく一部だけである場合、ここに潜在的な解決策があります。私が説明していることを容易にするために、いくつかのスクリプトを作成する必要があります (これは、私が使用していた UNIX IDE に基づいています)。

また、あなたのコメントから、環境は UNIX または Linux であると想定しています。Windows では次のことが可能ではないと思います。

  1. ある場所でプロジェクト全体を読み取り専用としてチェックアウトします。すべての開発者が読み取りアクセス権を持っていることを確認してください。
  2. ディレクトリ構造をクロールし、その開発者のワークスペース内の読み取り専用ディレクトリへのシンボリック リンクを使用して構造のミラーを作成するスクリプトを開発者が実行できるようにします。
  3. ツリーの一部をチェックアウトして編集する場合は、シンボリック リンクを削除し、そのパスを Subversion からチェックアウトします (svnこれを処理するコマンドをラップするスクリプトが必要になる場合があります) 。
  4. スクリプト上svn commitまたは別のスクリプト内で、おそらくワークスペース ディレクトリを削除し、シンボリック リンクを再確立することをお勧めします。
  5. post-commitSubversion のフックを介して、または定期的に、cronまたは同様のものを使用して、読み取り専用コピーを更新します。

シンボリック リンクは、開発者ごとにツリー全体のビューを提供し、開発者がアクティブに編集しているツリーの部分のみの「ローカル」チェックアウトを可能にします。

回りくどい理由は、Subversion が実際にはこのような使い方を意図していなかったからです。ただし、この方法は、説明した内容に対しては多少の苦痛を伴います。

于 2008-11-17T15:12:10.183 に答える
0

すべての開発者がアクセスできるWebツリー用に1つの特別なアカウントを使用し、そのユーザーとしてWebツリーをチェックアウトすることをお勧めします。

于 2008-11-17T11:54:20.207 に答える
0

@ジェスパー:はい、それは可能です。すべてのメンバーのための追加のアカウント。おそらく追加のsudoルールがあります。

@Jon:基本的に、ツリーの一部にあるファイルを変更する必要があるということです。そのため、私たち全員がツリー全体を必要としていますが、それほど多くのチェックアウトは必要ありません。

于 2008-11-17T11:58:35.440 に答える
0

作業コピーをチェックアウトする際の遅延/帯域幅が心配な場合は、作業コピーが完全に自己完結型であることを覚えておいてください。これは、巨大なリポジトリをチェックアウトして、その「作業コピー」を必要な人にコピーするだけでよいことを意味します。

同じトリックはブランチにもうまく機能します。trunk の変更されていない最近の作業コピーがある場合は、単純にそれをコピーしてから、新しいブランチに 'svn switch' することができます。

  1. 巨大なリポジトリを base_working_copy にチェックアウトします (一晩?)
  2. cp -a base_working_copy my_working_copy (およびそれを必要とする人へ)
  3. cp -a base_working_copy my_branch
  4. cd my_branch
  5. ブランチを任意のブランチ URL に切り替える

私はこれをうまく使って、大きな作業コピーの CD を帯域幅の問題を抱えている人々に送りつけました。

関連項目:本当に大きなサイトで Subversion を使う

于 2008-11-17T18:22:56.960 に答える
0

Subversion では、ツリーの任意の部分をチェックアウトできます。また、バージョン 1.5 ではスパース チェックアウトもサポートしています。これが意味することは、チェックアウトを個々のディレクトリ レベルに微調整できることです (ただし、RCS ができる個々のファイル レベルまではできません)。

たとえば、リポジトリが次のようになっているとします。

リポジトリ ルート
  タグ
  枝
  トランク
    文書
    ソース
      モジュール1
        資力
      モジュール2
    画像

module1これを使用して、ディレクトリ内のファイルのみ (サブディレクトリではなく) をチェックアウトできます。

svn checkout --depth=files svn://server/repository/trunk/src/module1

サブディレクトリのコンテンツも必要な場合は、後でチェックアウトのサイズを調整できます。ドキュメントを参照してください。

于 2008-11-17T18:16:43.417 に答える