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

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

Вопрос № 1:

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

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

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

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

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

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

<edit>

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

<edit2>

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

Вопрос 2:

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

Обновление 2017

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

3 ответа

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам