web-dev-qa-db-ja.com

ローカルマシンの一時的なSVNでオフラインで作業する

私は現在SVNでプロジェクトに取り組んでいます。ただし、数日間はインターネットにアクセスできず、プロジェクトに取り組んでいます。

ローカルマシンでリポジトリのクローンを作成し、それに変更をコミットし、インターネットにアクセスしたときにそれらを共有リポジトリに「プッシュ」する方法はありますか?ここでMercurialの観点から考えると、完全に移行する価値はありますか?!

35
Karan

あなたの問題は私にはtheユースケースのように聞こえます git-svn

  • gitリポジトリを設定します:git svn clone http://svn.example.com/project/trunk
  • オンライン中に、変更をSVNにコミットします
  • オフラインにする前に、git svn rebaseを実行して、GitリポジトリをSVNリポジトリと同期させます
  • オフラインのときに、git commitを使用してGitリポジトリにコミットします
  • 再びオンラインに戻ったら、git svn dcommitを実行して変更をSVNリポジトリにプッシュします

私はこのワークフローを毎日使用しています!

そうすることで、2つの大きな利点が得られます。

  • 完全なSVN履歴は、Gitリポジトリと、そのリポジトリから複製されるすべてのGitリポジトリにバックアップされます。
  • オフラインのときに、コミットメッセージを表示したり、他のブランチをチェックアウトしたりできます。
55
eckes

ばかげた答えは、別のバージョン管理ツールに移行することです。違反はありません。

私は正確な問題を抱えていました。
「実際の」リポジトリがある「実際の」サーバーでSVNを使用しました。
インターネットなしでラップトップを持って出かけたときは、このラップトップの「実際の」リポジトリ(VisualSVN + TortoiseSVN)を複製し、作業し、変更/コミットし、戻ってきたら単に「同期」しました。新しい「リビジョン」ファイルを「実際の」リポジトリに追加します。

もう少し明確にするために:2つのSVNサーバーを用意します。1つはラップトップにローカルに(クローン)、もう1つは「実際の」サーバーに(明らかに)。 2つを同期するだけです。

9
Poni
6
phihag

上記と同じ理由で、SVNを使用するプロジェクトでgitを使用しています。 git/Mercurialに慣れる人もいますが、しばらくすると、新しいアプローチが本当に気に入っています。さらに、git-svnの使用に問題があったことはなく、Mercurialとsvnを試したこともありません。

Mercurialを使用していて、間に1つか2つの笑い声がある良いチュートリアルをまだ探している場合は、これをチェックしてください tutorial JoelSpolskyによって書かれました。そして前に述べたように、確かにDVCSを始める絶好の機会です。

5
Mark

免責事項:私はSOS(SVNオフラインサポート)の作成者です。

この使いやすいコマンドラインツールを作成して、SVNをオフラインで操作する問題を正確に解決しましたが、SVNチェックアウト内だけでなく、VCS作業コピー(Bazaar、Git、Fossilなど)、または追跡されていないファイルでも機能します。木。 SOSは、従来のVCSで必要とされる複雑なセマンティックの背景知識がなくても、単純なコミット、分岐、切り替え/更新操作を可能にします。オンラインに戻った後、すべての変更を基盤となるVCSに統合できます。

ウェブサイト

インストールにはPython 3が必要で、pip install -U sos-vcsを介して処理されます

1
user384018

常に [〜#〜] svk [〜#〜] もあります。私はそれを何年も使っていないので、それがどれだけうまく機能するかはもうわかりません。

1
Mark Loeser

Hehehe、 Mercurial または git を自分で発見する良い機会です!!

0
zerkms