Почему этот ртутный патч не перемещает файл? - PullRequest
2 голосов
/ 15 апреля 2019

Я использовал TortoiseHG для экспорта патча, который перемещает файл в другое место. Это содержимое патча:

# HG changeset patch
# User Arthur Attout <arthur.attout@outlook.com>
# Date 1551095974 -3600
#      Mon Feb 25 12:59:34 2019 +0100
# Branch CBLS
# Node ID f73e7c88dbcf6de3091e1edc9360336d1c699038
# Parent  863386a2a66de9cdd6d8885912988cb4b862eef0
Unit tests + migrate unit tests int -> long


diff -r 863386a2a66d -r f73e7c88dbcf oscar-cbls/src/test/scala/oscar/cbls/test/invariants/InvariantTests.scala
--- a/oscar-cbls/src/test/scala/oscar/cbls/test/invariants/InvariantTests.scala Fri Feb 22 14:30:14 2019 +0100
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,948 +0,0 @@
-package oscar.cbls.test.invariants
-
- Thousands of lines ... 
-

diff -r 863386a2a66d -r f73e7c88dbcf oscar-cbls/src/test/scala/oscar/cbls/test/unit/InvariantTests.scala
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/oscar-cbls/src/test/scala/oscar/cbls/test/unit/InvariantTests.scala   Mon Feb 25 12:59:34 2019 +0100
@@ -0,0 +1,877 @@
+package oscar.cbls.test.unit
+ Same thousands of lines ... 
+

Это единственное, что делают патчи. Перемещает файл InvariantTests с invariants на unit.

Когда я импортирую патч в tortoiseHG, он выдает следующую ошибку

Hunk #1 FAILED at 0
1 out of 1 hunks FAILED -- saving rejects to file oscar-cbls/src/test/scala/oscar/cbls/test/invariants/InvariantTests.scala.rej
patching file oscar-cbls/src/test/scala/oscar/cbls/test/unit/InvariantTests.scala
adding oscar-cbls/src/test/scala/oscar/cbls/test/unit/InvariantTests.scala
abandon : patch failed to apply
[command returned code 255 Mon Apr 15 19:55:02 2019]

После этого это содержимое моего рабочего каталога

enter image description here

Файл не перемещен.

Что означает эта ошибка 255? Почему патч не просто правильно применяет перемещение файла?

1 Ответ

0 голосов
/ 16 апреля 2019

Mercurial doc четко заявляет:

Формат по умолчанию для отображения изменений между двумя версиями файла в Mercurial совместим с унифицированным форматом GNU diff, который может использоватьсяПатч GNU и многие другие стандартные инструменты.

Хотя этого стандартного формата достаточно часто, он не кодирует следующую информацию:

  • статус исполняемого файла и другие биты прав доступа
  • копирование или переименование информации
  • изменения в создании двоичных файлов или удаление пустых файлов

Для того, чтобы эти данные были в патче, вы должны создать git-совместимый патчс опцией -git (AFAICR), также доступна в THG GUI

...