Как подать заявку, разность сделала окнами SVN на Linux?

На окнах я создал многофайловую разность с:

svn diff > mydiff.diff

Затем перемещенный это в машину Linux (с той же версией того же repo, никаких изменений). Как стоимость и страхование я применяю его? После выполнения

 patch -p0 < mydiff.diff

Я получаю следующий вывод:

patching file licstat/test/unittest/test_licstatactioncontainers.cpp
File licstat/test/unittest/test_licstatactioncontainers.cpp is not empty after patch, as expected
patching file licstat/test/unittest/test_licstatactions.cpp
Hunk #1 FAILED at 99.
1 out of 1 hunk FAILED -- saving rejects to file licstat/test/unittest/test_licstatactions.cpp.rej
can't find file to patch at input line 295
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Index: licstat/test/unittest/test_licenseserverusagemap.cpp
|===================================================================
|--- licstat/test/unittest/test_licenseserverusagemap.cpp       (revision 6767)
|+++ licstat/test/unittest/test_licenseserverusagemap.cpp       (working copy)
--------------------------
File to patch: 

И последняя строка является быстрым ожиданием моего действия.

Как я должен создать/применить патч, чтобы заставить его работать?

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

patching file licstat/misc/generic/mysql/stored_procedures.sql
Hunk #1 FAILED at 220.
Hunk #2 FAILED at 245.
Hunk #3 FAILED at 622.
Hunk #4 FAILED at 661.
Hunk #5 FAILED at 810.
Hunk #6 FAILED at 822.
Hunk #7 FAILED at 868.
Hunk #8 FAILED at 999.
8 out of 8 hunks FAILED -- saving rejects to file licstat/misc/generic/mysql/stored_procedures.sql.rej
9
задан ssobczak 1 July 2010 в 21:07
поделиться

3 ответа

Этот тип ошибки может возникнуть, когда формат локального файла - CRLF вместо LF, когда вы находитесь в системе unix.

patch пытается адаптировать патч svn diff к формату файлов unix, но сбивается, когда локальные файлы находятся в режиме dos, что может произойти, когда вы разделяете базы кода между средами dos и unix.

Мне помогает то, что сначала нужно преобразовать все файлы, которые будут затронуты, например:

grep ^+++ patchfile.patch | awk '{print $2}' | dos2unix

А затем применить патч:

patch -p0 < patchfile.patch
0
ответ дан 3 November 2019 в 04:40
поделиться

Я довольно регулярно переношу файлы между системами windows и mac, и patch, похоже, правильно справляется с новыми строками, так что я не думаю, что проблема в этом. Похоже, что вы удалили test_licstatactioncontainers.cpp, и первое предупреждение связано с этим. Второе, похоже, жалуется на то, что не может найти сам файл.

Может ли это быть проблемой регистра имени файла? Windows нечувствительна к регистру имени файла, а linux - нет. Может быть, в linux файл называется Test_LicenceServerUsageMap.cpp? Или каталог LicStat/Test ?

0
ответ дан 3 November 2019 в 04:40
поделиться

Попробуйте преобразовать окончания строк в файле патча из DOS в Unix, используя команду dos2unix.

0
ответ дан 3 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: