常にインターネットにアクセスできず、Subversion リポジトリを使用している可能性がある顧客サイト (複数の人がいる) で作業するための最良のアプローチは何ですか?
(GitやMercurialへの移行は現時点では論外)
しかし、たとえば Git SVN 統合などを利用して、クライアントのサブバージョン リポジトリのように機能し、最後に変更をサブバージョンに同期するために使用できるプロキシを作成することはできないでしょうか? そのようなものはすでに利用可能ですか?
常にインターネットにアクセスできず、Subversion リポジトリを使用している可能性がある顧客サイト (複数の人がいる) で作業するための最良のアプローチは何ですか?
(GitやMercurialへの移行は現時点では論外)
しかし、たとえば Git SVN 統合などを利用して、クライアントのサブバージョン リポジトリのように機能し、最後に変更をサブバージョンに同期するために使用できるプロキシを作成することはできないでしょうか? そのようなものはすでに利用可能ですか?
svkはあなたが探しているものを提供するかもしれないと思います。
実は、Git には git-svn というツールがあります。詳細については、http : //git-scm.com/docs/git-svnをご覧ください。
git をプライマリ VCS として使用し、SVN リポジトリと同期します。
コメントする担当者がまだ十分ではありませんが、svk は正式に「死んでいる」ことを指摘したいと思います。このプロジェクトは、以前のメンテナ (ほぼ 1 人の人物) によって改善されなくなりました。基本的に、プロジェクトのメンテナーは次のように述べています。
公式の「終末期」スタイルのブログ投稿は、Best Practical の Web サイトのトピックに関するブログ投稿にあります。
とはいえ、svk はおそらく今でも適切なツールです。git-svnserver が存在したとしても、SVN クライアントを使用してリモートで複数のコミットを行うことはできません。ただし、SVK を学習することは、git を学習することとそれほど違いはありません。結局、あなたのユースケース - SVN クライアントを使用して複数の変更をコミットしてからサーバーにプッシュする - が不可能であるため、おそらく git-svn が必要なツールだと思います。バックエンドは SVN のままでもかまいませんが、別のクライアントについて学習する必要があり、おそらく git が適切です。
Git や Bazaar を使用して Subversion からチェックアウトし (おそらく Mercurial もそうだと思います)、顧客のサイトに移動してオフラインで作業し、必要な数の「ローカル コミット」を作成できます。再び接続できるようになったら、それらを取得するためのさまざまなオプションがあります。 Subversion に戻ります。早速手順を見ていきましょう。
Git (git-svn) または Bazaar (bzr-svn) を使用した Subversion からのチェックアウト:
# using Git
git svn clone SVN_REPO_URL
# using Bazaar
bzr branch SVN_REPO_URL
特に Subversion リポジトリが大きい場合、これらは常に完全に機能するとは限りません。構文はおそらく Mercurial でも似ています。お好みのツールをお試しください。うまくいかない場合は、別のツールをお試しください。
これらのツールは、Subversion のような最新のリビジョンだけでなく、リポジトリ全体をフェッチするため、クローン/ブランチのステップには時間がかかる可能性があることに注意してください。
顧客のサイト (または切断された場所、またはコーヒー ショップ) で作業し、必要なだけ変更をコミットします。これらは分散型 VCS ツールであり、リポジトリ全体がローカルに存在し、コミットはこのローカル リポジトリにあるため、ネットワーク接続は必要ありません。
ローカルでコミットできることに加えて、すべてがローカル リポジトリにあるため、履歴の参照など、他のすべてのリポジトリ操作を実行できることに注意してください。
もちろん、Git/Bazaar を使用するには、Git/Bazaar に精通している必要があります。
ローカルの変更を Subversion に戻します。リベースとマージの 2 つの主な方法があります。リベースとは、ローカルの変更をチェックアウトの時点まで巻き戻し、見逃した Subversion リポジトリの変更を早送りし、その上で変更を再生し、それらの変更を Subversion にプッシュすることを意味します。
Git の使用:
git svn rebase
git svn dcommit
バザーの使用:
bzr rebase
bzr push :parent
これはツールの一種の高度な使用法です。1 つには、追加のプラグインをインストールする必要があり ( git-svn
Git を使用することを選択した場合、bzr-svn
およびbzr-rewrite
Bazaar を使用することを選択した場合 (これらは Windows および Mac OS X のデフォルトのインストールに含まれています)、これらのツールの実用的な知識が必要です)。それらを効果的に使用するために。
DVCS のような機能を提供する Subversion に基づいて構築された一連の Perl スクリプトであるSVKを使用できる場合があります。以前に SVK を使用したことがありますが、非常に単純な方法でしか使用できませんでした。この種のオフライン プロキシ操作を実行できることは理解しています。