Централизованное совместное редактирование в Visual Studio

Теперь, прежде чем снимать меня за то, что вы задаете дублирующий вопрос о SOF, позвольте мне сначала познакомить вас именно с тем, что я ищу, и я обращусь к другим вопросам и ответам и почему это недостаточно.

Вопрос № 1:

Я ищу способ выполнения живых совлокальных изменений, в то время как источник поддерживается на централизованном сервере управления версиями. Например, если Me и Joe Blow редактируют файл X.cs в то же время, мы должны иметь возможность видеть все другие изменения по мере ввода. Почти как будто мы сидели вместе на одном компьютере. Теперь сделайте следующий сценарий: Me и Joe выходят в автономный режим, и Нимха Смит решает, что хочет обновить код. Когда я вернусь в интернет на следующий день, я подтолкнул код, который обновил Нимха, пока я спал/от сервера.

Это сочетание идеи живой совместной работы и системы управления версиями, такой как SVN и т.д.

Адресация возможных дубликатов:

Был аналогичный вопрос: Совместное редактирование для .NET-разработки - каковы возможности, однако это не дает мне ничего полезного, и я объясню почему:

  • VsAnywhere: он проходит через центральный публичный сервер (в правильном направлении..?), за исключением того, что все участвующие стороны должны иметь точный тот же код на своем компьютере, прежде чем присоединяться к сеансу, а после выхода в автономный режим сеанс будет уничтожен.
  • SourceMeet: работает с системой P2P, поэтому сервер не отслеживает изменения в автономном режиме и т.д. Не пробовал, поэтому я не могу подтвердить, насколько хорошо он может объединить код (если он вообще может быть)
  • CollabEdit: Not VisualStudio
  • Cloud 9: Not VisualStudio

И есть, очевидно, этот вопрос и этот, который напрямую связан с программным обеспечением для управления версиями, например SVN или GIT. Теперь я попытался заставить VSAnywhere и SVN играть хорошо вместе (SVN для получения изменений в автономном режиме и VSAnywhere для онлайн-разработчиков), но это просто не работает.

<edit>

Недавно я нашел этот проект бакалавриата с темой Collab, и это кажется хорошей идеей, но я, похоже, не мог получить он работает, чтобы попробовать. Если кто-то еще имеет успех, пожалуйста, дайте мне знать, что вы сделали. Похоже, если я смогу заставить этот проект коллаба работать, похоже, это было бы хорошим началом для создания чего-то, что соответствовало бы моим потребностям.

<edit2>

Я также столкнулся с BeWeeVee, у которого было расширение Visual Studio для него, но все ссылки для него ушли мертвый. И CodeALike, который, вероятно, был их заменой для совместной работы VS в режиме реального времени, содержит раздел часто задаваемых вопросов, объясняющий, что его функции в режиме реального времени были удалены и будут повторно внедрены в "будущее".

Вопрос № 2:

Теперь это подводит меня ко второй части моего вопроса, потому что я полностью понимаю, что не может быть программы, которая подходит моему высокому порядку. Где я могу начать реализовывать такое программное обеспечение, как это? Есть ли какой-то существующий код редактирования исходного кода/исходного кода с открытым исходным кодом, который я могу начать строить, чтобы создать это? Или я довольно сильно застрял, начиная с нуля, если я хочу это реализовать. И я уверен, что вы можете видеть по тегам, которые мне бы хотелось решить в С#, как если бы я вообще занялся этим.

Обновление 2017

Так как в комментариях я наблюдал некоторый интерес к комментариям, я создал громогласно, где мы можем собрать всех заинтересованных и потенциально сделать это реальностью: https://gitter.im/sof-centrailized-collab-editing/Lobby.

Ответы

Ответ 1

Если вы хотите решить это самостоятельно, вам может понравиться это расширение Visual Studio. Обратите внимание, что существуют два разных типа плагинов: "надстройки" и "расширения". Лично я думаю, что вы должны написать расширение, но в любом случае вы можете записать их на С#.

Вам нужно будет подключиться к текстовому редактору Visual Studios. Вы можете либо Google, чтобы сделать это, либо просто посмотреть на существующий пример: расширение Visual Studio для эластичных tabstops. Ваше расширение будет отслеживать ваши изменения по мере их создания, а затем отправлять их на сервер через какой-либо протокол, который вы разрабатываете. Вам придется писать сервер самостоятельно, но в первой версии все, что ему нужно, это просто отправить свои изменения всем, кто использует расширение. Расширение затем будет редактировать все в каждом редакторе elses.

Если кто-то подключается к серверу с более старой версией кода, расширение может просто загрузить самую новую версию с сервера. Однако, если пользователь внес изменения в автономном режиме (т.е. Пока не подключен к серверу), вам нужно будет сделать некоторое умное слияние. Это нетривиально, но я знаю, как это сделать, потому что я сделал это раньше. Если вы спросите очень хорошо, я напишу алгоритм слияния для вас. Затем вам нужно будет только загрузить три текстовых файла: базу (последнюю версию, синхронизированную с сервером) и две отредактированные версии (одна из которых отредактирована в автономном режиме и самая новая с сервера).

Если вам удастся заставить это работать, вы потенциально создадите что-то бесценное. Пожалуйста, убедитесь, что вы публикуете свою работу!:)

Ответ 2

Ну, чтобы увидеть, как другие люди печатают материал, а затем с ними курсорные войны в редакторе уже были сделаны Google Wave. Iirc его вытолкнули как открытый источник или что-то после того, как сам проект не удался. Тем не менее, он заботится обо всех ваших проблемах с обновлением и построен на базовой модели обновления, которая является достаточно надежной и надежной с точки зрения компьютерной науки. Он предоставляет историю и все виды, аналогичные системе исходного кода.

Вместо этого вы можете реализовать то, что хотите, как специальный виджет редактирования. Если вы сделаете хорошую работу, вы сможете воскресить Google Wave в качестве полезной и повторно назначенной совместной платформы для редактирования.

Ответ 3

О VS Anywhere, возможно, к моменту, когда вы пробовали VSA (примерно в мае), версия программного обеспечения была Release Candidate 2 (= buggy), поэтому в обычном режиме у вас были проблемы с SVN Integration, а также у нас были открытые проблемы с TFS и Git.

В настоящее время на последнем RC3 некоторые из проблем SVN решены, мы ожидаем, что скоро все готово к окончательной версии.

Существует возможность запуска вашего собственного экземпляра VS Anywhere Server в вашей локальной сети, поэтому вам действительно не нужно использовать наши публичные серверы, если вы являетесь студентом или у вас есть проект с открытым исходным кодом, VS Anywhere Client и Server Бесплатно для вас, если нет для коммерческого использования, и есть небольшая плата, которую вы должны заплатить.

Как указано в ресинхронизации Timwi из автономного кодирования, нетривиально и действительно сложно реализовать, мы считаем, что SCM является правильным инструментом для выполнения этой работы, и это потому, что мы еще не работали в этом направлении, наше мнение находится в по крайней мере, пока мы не будем работать в этой области, вы можете использовать стандартные SCM для вытягивания последних изменений и слияния с локальной копией перед настройкой сеанса

VSA упростит процесс загрузки сеансов, позволяя вам 1) проверить отличия от удаленных копий Visual Studio и 2) если таковые имеются, объединить их в своей локальной копии в правильное состояние, только когда вы открываете сеанс, ( "1" ) "2)" идет "

Управление сеансом не является тривиальным и действительно сложным, существует множество возможных сценариев, и это связано с тем, что мы очищаем сеанс, когда закончим, однако вы можете снова начать сеанс в любое время одним щелчком мыши...

Надеемся, что эта информация поможет вам, и если у вас есть больше вопросов, не стесняйтесь обращаться в VS Anywhere Support в любое время

О проекте Если вы хотите начать проект по внедрению такого плагина, мы можем предоставить вам информацию о том, как делать что-то. Хорошей отправной точкой является понимание оперативной трансформации, так как вам понадобится этот подход для реализации параллельного редактирования, также вам понадобится протокол P2P или клиент/сервер для передачи данных между клиентами.