Подтвердить что ты не робот

SVN diff через 2 разных хранилища

У меня есть 2 репозитория. Поскольку код соединительной линии находился в одном репозитории, который был защищен, я сделал чек, а затем зарегистрировался в другом репозитории (поскольку у пользователей не было разрешения на первый защищенный).

Теперь проблема в том, что оба хранилища были обработаны, и мы хотим, наконец, объединить код/​​ветвь во втором незащищенном с защищенным. Но в этом будут конфликты.

Есть ли способ узнать разницу для двух разделов репозитория? Кроме того, если есть пробельные изменения, как я их игнорирую?

4b9b3361

Ответ 1

Я не знаю встроенной функции subversion, которая позволила бы это сделать, но вы могли бы создать полную проверку обоих репозиториев и использовать утилиту diff для командной строки для сравнения обеих рабочих копий:

diff -w -u -r -N WorkingCopy1 WorkingCopy2

-w игнорировать все пробелы -u использовать унифицированный формат diff (например, subversion) -r для рекурсивного -N, чтобы новые файлы отображались в патче

Это, безусловно, не самый быстрый подход, но может быть приемлемым для одноразового процесса. Вы также можете создать патч, перенаправляя вывод в файл diff -w -u -r -N WorkingCopy1 WorkingCopy2 > wc1-to-wc2.patch

Если вы используете Windows, win32-сборки diff и patch можно найти здесь: http://gnuwin32.sourceforge.net/packages/diffutils.htm

Ответ 2

svn diff [email protected] [email protected]

Пример:

svn diff --old=http://svn.whatever.com/trunk/[email protected] --new=http://svn.whatever.com/branch/[email protected]

Это позволяет указать как ветки, так и номера версий для обоих файлов. Я знаю, что это работает, потому что я просто выполнил его.

Ответ 3

Лучшим инструментом для этого слияния может быть git -svn. Если URL-адрес двух репозиториев: $URL1 и $URL2, попробуйте:

$ git svn clone $URL1 svn1
$ git svn clone $URL2 svn2
$ cd svn1
$ git fetch ../svn2
$ git diff FETCH_HEAD master

Чтобы игнорировать изменения пробелов, используйте git diff -w

Ответ 4

Вы можете использовать такой инструмент, как kdiff3, чтобы просто сравнить извлеченные рабочие копии из обоих репозиториев. (Просто укажите его в двух каталогах и он будет рекурсивно сравнивать все файлы в них.)

Ответ 5

Вероятно, самое простое проверить обе ветки и использовать инструмент, например winmerge (который позволит вам игнорировать пробелы и сделать несколько сравнения)

Ответ 6

Скопируйте второй репозиторий в первый, используя что-то следующее в рабочей копии первого репозитория:

svn cp svn://url/to/the/second/repo branches/second_repo

Проверьте и выполните регулярное слияние с новой веткой на ваш ствол.

В этом объяснении предполагается, что вы используете наиболее распространенный макет репозитория svn (ветки/, теги/и/ствол как каталоги верхнего уровня), и поэтому может потребоваться адаптировать команду копирования.

Также обратите внимание, что некоторые GUI для SVN поддерживают этот режим копирования. В SmartSVN команда называется "Копировать из URL".

Ответ 7

Следующие работы, но медленные:

svn diff [url1] [url2]

Ответ 8

Если вы работаете в linux, вы также можете использовать инструмент "meld"... Это делает отличный diff, и вы можете легко слить...

Ответ 9

В любое время, когда я попадаю в эту ситуацию, я использую Meld. Это многоплатформенный инструмент для сравнения графического интерфейса. он может сравнивать файл с файлом или каталогом в каталог. В вашем случае вы можете проверить оба проекта в отдельных каталогах и использовать сравнение для сравнения. Вы можете легко перемещать изменения (linesa или blocks) из одного файла в другой.

diff хорошо тоже!