Как я могу использовать Git локально в среде SVN + Visual Studio - PullRequest
4 голосов
/ 22 мая 2009

Я играл с git дома, и мне очень нравится идея локальных коммитов. Приятно иметь возможность вносить небольшие изменения без распространения моего потенциально испорченного кода на всех, а также иметь возможность отменять небольшие изменения из-за более частых фиксаций.

Я читал о команде git-svn, но не уверен, что полностью понимаю, как она работает. Мы работаем над проектами Visual Studio 2008 и запускаем VisualSVN, который обрабатывает переименования файлов, перемещения и все это для нас из IDE.

Что я хочу знать, так это: могу ли я зафиксировать в локальном git-репозитории, но также и в удаленном SVN-репозитории? Я бы хотел сохранить отслеживание и фиксацию изменений VisualSVN из среды IDE, но также иметь возможность использовать git для временного хранения изменений. Они могут мешать друг другу?

Ответы [ 2 ]

2 голосов
/ 22 мая 2009

Работает прекрасно. Действуй. Только не проверяйте свою папку .git в svn.

edit: эмм, когда я делаю это, я не беспокоюсь о git-svn. Я просто отношусь к локальному рабочему каталогу для svn, как к любому другому каталогу, и я не очень беспокоюсь о предыдущей истории SVN.

1 голос
/ 22 мая 2009

Я использовал git-svn для «обновления» из удаленного репозитория, но не использовал его для фиксации в svn-репозитории, поэтому я не могу помочь вам с этой частью.

То, что вы делаете, просто, со всеми настройками по умолчанию:

>git svn init <url......>
>git svn fetch

Когда вы делаете это, он извлекает его в «удаленную» ветку с именем «git-svn». Чтобы объединить это с вашей текущей веткой:

>git merge git-svn

Вы можете столкнуться с некоторыми проблемами, если вы используете git-svn после факта . Под этим я подразумеваю следующее: вы уже извлекли проект, используя svn, затем вы также создали репозиторий git в своем локальном рабочем каталоге svn. Затем вы используете git-svn.

Два вопроса, с которыми мне пришлось столкнуться:

  1. Окончание строк. svn может преобразовать окончания строк в окна, тогда как git-svn сохранит их в стиле Unix. Таким образом, вы можете получить массу конфликтов из-за различий в конце строки.

    Поэтому, чтобы быть уверенным, используйте инструмент для преобразования концов строк во всех файлах в Unix (или Windows, в зависимости от того, какой конец строки используется в репозитории SVN).

  2. расширение ключевых слов svn. например $Id$

    git-svn не будет расширять эти ключевые слова, в то время как svn будет расширять. Так что у вас там тоже будут конфликты. Опять же, используйте инструмент (или напишите скрипт), который преобразует все экземпляры $Id .......crap.....$ в просто $ Id $ `

...