3


1

常時インターネットにアクセスできない、Subversionリポジトリを使用している(何人かの人がいる)顧客サイトで作業するための最善の方法は何ですか?

(GitやMercurialへの移行は現時点では問題外です)

しかし、例えばGit SVN統合のようなものを利用して、クライアント用のsubversionリポジトリのように振る舞い、変更をsubversionに同期させるために最後に使用されるかもしれないプロキシを作成することは可能でしょうか? そのようなものはすでに利用可能ですか?

5 Answer


3


私は svkがあなたが探しているものを提供すると思う。


2


実際、Gitにはgit-svnというツールがあります。 あなたはここでより多くの情報を見つけることができます:http://git-scm.com/docs/git-svn

あなたはあなたのプライマリVCSとしてgitを使用し、そしてSVNリポジトリと同期します。


1


まだコメントするのに十分な担当者ではありませんが、私はsvkが正式に '死んでいる’ことを指摘したいと思いました。プロジェクトは以前のメンテナによって改善されなくなりました。それはほとんど一人でした。 基本的に、プロジェクトのメンテナは言った:「svkはクールでしたが、今ではみんなが分散ツールを使うべきだと知っているので、もうメンテナンスする価値はありません。」

このトピックの ブログ投稿で、ベストプラクティスのウェブサイトで公式の「終末」スタイルのブログ投稿を見つけることができます。 。

そうは言っても、svkはおそらくまだ正しいツールです。 git-svnserverがあったとしても、SVNクライアントを使ってリモートから複数のコミットをすることはできません。 しかし、SVKを学ぶことが実際にgitを学ぶこととまったく異なるわけではありません。 結局、git-svnはおそらくあなたが望むツールだと思います。あなたのユースケース - SVNクライアントを使って複数の変更をコミットしてからサーバーにプッシュする - は不可能だからです。 バックエンドはSVNやあなたが持っているものを維持することができますが、あなたは_いくつかの異なるクライアントを学ぶ必要があるでしょう、そしてgitはおそらく正しいものです。


0


Subversion上に構築され、DVCSのような機能を提供するPerlスクリプトのセットである SVKを使用することができるかもしれません。 私は以前にSVKを使ったことがありますが、それは非常に単純な方法です。 私はそれがこの種のオフラインプロキシ操作をすることができることを理解しています。


0


SubversionからGitやBazaarを使って(そしてMercurialもそうだと思いますが)チェックアウトし、顧客サイトに行き、必要なだけの "ローカルコミット"をしながらオフラインで作業できます。 Subversionに戻ります。 すぐに手順を見ていきましょう。

  1. 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のような最新のリビジョンではなく、これらのツールがリポジトリ全体を取得するため、クローン作成/ブランチ作成には長い時間がかかる可能性があります。

  2. 顧客サイト(または切断された場所、またはコーヒーショップ)で作業し、 必要な数だけ変更をコミットします。 ネットワーク接続は必要ありません。これらは分散型のVCSツールなので、リポジトリ全体がローカルに存在し、コミットはこのローカルリポジトリにあります。 ローカルでコミットできることに加えて、すべてがローカルリポジトリにあるため、履歴の閲覧など、他のすべてのリポジトリ操作を実行できます。 もちろんそれを使うにはGit / Bazaarに精通している必要があります。

  3. ローカルの変更をSubversionに取り戻します。 2つのメインがあります 方法:リベースとマージ。 リベースとは、ローカルの変更をチェックアウトの時点まで巻き戻し、逃したSubversionリポジトリの変更を早送りし、その上で変更を再現してから、それらの変更をSubversionにプッシュすることを意味します。 Gitを使う:

git svn rebase
git svn dcommit

Bazaarを使う:

bzr rebase
bzr push :parent

これはツールの一種の高度な使い方です。 まず、追加のプラグインをインストールする必要があります(Gitを使う場合は git-svn、Bazaarを使う場合は` bzr-svn`と bzr-rewrite(これらはWindowsのデフォルトインストールに含まれていますそしてそれらを効果的に使用するには、これらのツールに関する実用的な知識が必要です。