14

さて、SOFで重複する質問を提起するために私を撃つ前に、まず私が探しているものを正確に知ってもらいましょう。他の質問と回答、およびそれが不十分である理由について説明します。

質問1

ソースが一元化されたソース管理サーバーで維持されている間に、ライブの共同編集を実行する方法を探しています。たとえば、MeとJoe BlowがX.cs同時にファイルを編集している場合、入力時にお互いの編集を確認できるはずです。まるで同じコンピューターに一緒に座っているかのように。次に、次のシナリオを考えます。私とジョーがオフラインになり、NimhaSmithがコードを更新することを決定しました。翌日オンラインに戻ると、Nimhaがスリープ中/サーバーから離れているときに更新したコードがプッシュされます。

これは、ライブコラボレーションのアイデアと、SVNなどのソース管理システムを組み合わせたものです。

重複の可能性のあるアドレス指定:

同様の質問がここにありました:.NET開発のための協調編集-可能性は何ですか、しかしそれは私に何も有用なものを与えません、そして私は理由を説明します:

  • VsAnywhere:中央のパブリックサーバー(正しい方向..?)を介して実行されます。ただし、関係するすべての関係者は、セッションに参加する前にマシン上にまったく同じコードを持っている必要があり、オフラインになるとセッションは破棄されます。
  • SourceMeet:P2Pシステムで実行されるため、オフラインなどで変更を追跡するサーバーがありません。試したことがないため、コードをマージできるかどうかを証明できません(可能な場合)。
  • CollabEdit:VisualStudioではありません
  • Cloud 9:VisualStudioではありません

そして、明らかにこの質問と、SVNやGITなどのソース管理ソフトウェアに関する直接の質問です。今、私はVSAnywhereとSVNを一緒にうまく機能させようとしました(オフライン中に変更を加えるためのSVN、オンライン開発者のためのVSAnywhere)が、それは単に機能しません。

<edit>

私は最近、 Collabという名前のこの学士論文プロジェクトを見つけました。それは良い考えのようですが、それを試してみることができなかったようです。他の誰かがそれで成功した場合は、あなたが何をしたかを私に知らせてください。このコラボプロジェクトを機能させることができれば、自分のニーズに合ったものを作成するための良いスタートになると思われます。

<edit2>

また、そのサービス用にVisual Studio拡張機能を備えたBeWeeVeeに出くわしましたが、そのサービスへのすべてのリンクが機能しなくなりました。また、VSリアルタイムコラボレーションの代わりとなる可能性のあるCodeALikeには、リアルタイム機能が削除され、「将来」に再実装されることを説明するFAQエントリがあります。

質問2:

さて、これは私の質問の2番目の部分に私をもたらします。なぜなら、私の背の高い注文に合うプログラムがそこにないかもしれないことを完全に理解しているからです。このようなソフトウェアの実装を自分でどこから始めればよいでしょうか。これを作成するために構築を開始できる既存のオープンソースのソース管理/リアルタイム編集コードはありますか?それとも、これを実装したいのであれば、最初から始めてかなり立ち往生していますか?そして、私がそれに取り組む必要がある場合、私がC#でこのようなタスクに取り組みたいことをタグで見ることができると確信しています。

2017年の更新

コメントには継続的な関心が寄せられているため、関心のある人を集めてこれを実現できる可能性のあるgitterを作成しました:https ://gitter.im/sof-centrailized-collab-editing/Lobby 。

4

3 に答える 3

3

これに自分で取り組みたい場合は、VisualStudioの拡張機能として実行することをお勧めします。プラグインには、「アドオン」と「拡張機能」の2種類があることに注意してください。個人的には拡張機能を書くべきだと思いますが、どちらにしてもC#で書くことができます。

VisualStudioのテキストエディタに接続する必要があります。これを行う方法をグーグルで検索するか、既存の例であるエラスティックタブストップ用のVisualStudio拡張機能を確認することができます。拡張機能は、変更を行うときに変更を監視し、設計したプロトコルを介してサーバーに送信する必要があります。サーバーは自分で作成する必要がありますが、最初のバージョンでは、拡張機能を使用している他のすべての人に編集内容を送信するだけで済みます。この拡張機能により、他のすべてのエディターですべてのユーザーが編集できるようになります。

誰かが古いバージョンのコードでサーバーに接続した場合、拡張機能はサーバーから最新バージョンをダウンロードするだけで済みます。ただし、ユーザーがオフライン中に(つまり、サーバーに接続していないときに)編集を行った場合は、巧妙なマージを行う必要があります。これは簡単なことではありませんが、以前にやったことがあるので、その方法を知っています。よろしければ、マージアルゴリズムを作成します。次に、ベース(サーバーと最後に同期されたバージョン)と2つの編集されたバージョン(オフラインで編集されたものとサーバーから最新のもの)の3つのテキストファイルをフィードするだけで済みます。

これをうまく機能させることができれば、非常に役立つものを作成できる可能性があります。必ず作品を公開してください!:)

于 2012-06-06T19:11:40.637 に答える
2

さて、他の人が何かを入力してからエディタでカーソル戦争をするのを見るのは、すでにGoogleWaveによって行われています。プロジェクト自体が失敗した後、それはオープンソースか何かとして押し出されました。ただし、すべての更新の問題を処理し、コンピューターサイエンスの観点からは非常に堅牢で堅固な、基盤となる更新モデルに基づいて構築されています。これは、ソースコードシステムに類似した履歴やあらゆる種類のものを提供します。

その上に特別な編集ウィジェットとして必要なものを実装できます。良い仕事をすれば、GoogleWaveを便利で再利用された協調編集プラットフォームとして復活させることができます。

于 2012-05-24T00:07:48.843 に答える
1

VS Anywhereについて、おそらくVSAを試したとき(5月頃)、ソフトウェアバージョンはリリース候補2(=バギー)だったので、通常はSVN統合に問題があり、TFSとGitにも未解決の問題がありました。 。

現在、最新のRC3では、これらのSVNの問題のいくつかが解決されており、まもなく最終バージョンの準備が整う予定です。

LANで独自のVSAnywhereサーバーインスタンスを実行する可能性があるため、学生の場合やオープンソースプロジェクトがある場合は、パブリックサーバーを使用する必要はありません。VSエニウェアクライアントとサーバーは無料です。 、商用目的ではなく、少額の手数料がかかる場合は、支払う必要があります。

オフラインコーディングからのTimwiの再同期は簡単ではなく、実装が非常に複雑であると述べたように、SCMはこの作業を行うための適切なツールであると考えています。これは、この方向でまだ作業していないためです。少なくとも私たちの意見はこの領域で作業する場合、セッションをセットアップする前に、標準のSCMを使用して最新の変更をプルし、ローカルコピーとマージできます。

VSAは、セッションをブートストラップするプロセスを簡素化し、1)リモートのVisual Studioコピーとの違いを確認し、2)存在する場合は、セッションを開いたときにローカルコピーにマージして正しい状態にすることができます。(「1)」が実装されています「2)」が来ています)

セッション管理は簡単で本当に複雑なものではありません。考えられるシナリオはたくさんあります。これは、終了時にセッションをクリーンアップするためですが、ワンクリックでいつでもセッションを再開できます...

この情報がお役に立てば幸いです。さらに質問がある場合は、いつでもVSAnywhereサポートに連絡してください。

このようなプラグインを実装するプロジェクトを開始する場合は、その方法に関する情報を提供できます。同時編集を実装するにはこのアプローチが必要になるため、操作変換を理解することから始めるとよいでしょう。また、P2Pまたはクライアント間でデータを転送するためのクライアント/サーバープロトコル。

于 2012-06-28T21:47:47.077 に答える