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

StackOverflow https://stackoverflow.com//questions/10694373

Вопрос

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

Вопрос №1:

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

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

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

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

  • Повсюду:Он запускается через центральный общедоступный сервер (правильное направление ..?), за исключением того, что все вовлеченные стороны должны иметь точно такой же код на своем компьютере перед присоединением к сеансу, и как только вы переходите в автономный режим, сеанс уничтожается.
  • Исходная информация:Работает с системой P2P, поэтому нет сервера для отслеживания изменений в автономном режиме и т.д.Еще не пробовал, поэтому я не могу подтвердить, насколько хорошо он может объединять код (если вообще может)
  • Совместное редактирование:Не VisualStudio
  • Облако 9:Не VisualStudio

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

<edit>

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

<edit2>

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

Вопрос №2:

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

Обновление 2017

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top