Восстановите контрольную сумму SVN

Func<T1, T2, ..., Tn, Tr> представляет собой функцию, которая принимает (T1, T2, ..., Tn) аргументы и возвращает Tr.

Например, если у вас есть функция:

double sqr(double x) { return x * x; }

Вы можете сохранить его как какую-то функцию-переменную:

Func<double, double> f1 = sqr;
Func<double, double> f2 = x => x * x;

И затем используйте точно так же, как вы бы использовали sqr:

f1(2);
Console.WriteLine(f2(f1(4)));

и т. д.

Помните, что это делегат, поскольку более подробная информация относится к документации.

64
задан DevelopingChris 18 August 2008 в 18:35
поделиться

9 ответов

Файл в .svn каталоге, который отслеживает то, что Вы проверили, когда, какой пересмотр, и от где, стал поврежденным так или иначе для того конкретного файла.

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

, Если этого не происходит больше, я не сделал бы много из него.

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

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

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

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

Однако, если Вы делаете новый контроль, вместе с Вашими изменениями коллег, теперь похоже, что Вы удалили его изменения и заняли место с Вашим собственным. Никакие конфликты и никакие признаки от подрывной деятельности, что что-то неправильно.

36
ответ дан angry person 7 November 2019 в 12:15
поделиться

попытка: svn - file.c

силы Это работало на меня, не имея необходимость делать что-либо дополнительное

4
ответ дан aaron 7 November 2019 в 12:15
поделиться

Как раз сегодня мне удалось восстановиться с этой ошибки путем проверки копии поврежденного каталога к/tmp и замены файлов в .svn/text-base со справедливыми co'ed. Я описал процедуру в некоторых деталях здесь на моем блоге . , мне будет интересно получать известие от более опытных пользователей SVN, что является преимуществами и недостатками каждого подхода.

5
ответ дан Andrew Hedges 7 November 2019 в 12:15
поделиться

Существует также более простая причина для этого, чем просто ошибки или дисковое повреждение и т.д. Я думаю это, наиболее вероятная причина для этого для случая состоит в том, когда кто-то пишет рекурсивную текстовую замену на рабочей копии без исключения .svn файлы.
Это означает нетронутые копии файлов (в основном Базовая версия файлов, это сохранило в .svn административной области), изменяются, и это делает недействительным сумму MD5.

Преграды @Andrew: это также объясняет, почему Ваше решение фиксирует это.

20
ответ дан Sander Rijken 7 November 2019 в 12:15
поделиться

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

svn update

для воссоздания его.

, Если у Вас есть живые изменения в каталоге тогда как lassevk и Вы сами предложили, более тщательный подход требуется.

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

5
ответ дан Polsonby 7 November 2019 в 12:15
поделиться

SVN сохраняет нетронутые копии всех файлов Вами контроль проложенный под землей в .svn каталогах. Это называют текстовой основой. Это допускает быстрый diffs и возвращается. Во время различных операций SVN сделает контрольные суммы на этих основных текстом файлах для ловли проблем повреждения файла.

В целом, несоответствие контрольной суммы SVN означает файл, который не должен был быть изменен, был изменен так или иначе. Что это означает?

  1. Дисковое повреждение (плохой жесткий диск или кабель IDE)
  2. Плохой RAM
  3. Плохой сетевой канал
  4. Некоторый фоновый процесс изменил файл за Вашей спиной (вредоносное программное обеспечение)

, Все они плохи.

ОДНАКО , я думаю, что Ваша проблема отличается. Посмотрите на сообщение об ошибке. Обратите внимание, что это ожидало некоторые хеши MD5, но вместо этого возвратило 'пустой указатель'. Если бы это было простой проблемой повреждения файла, то я ожидал бы, что у Вас было бы два различных хеша MD5 для ожидания/получения. То, что у Вас есть 'пустой указатель', подразумевает, что что-то еще неправильно.

у меня есть две теории:

  1. Ошибка в SVN.
  2. Что-то имело монопольную блокировку на файле, и MD5 не могло произойти.

В случае № 1, попытайтесь обновить до последней версии SVN. Возможно, также отправьте это в svn-devel списке рассылки ( http://svn.haxx.se ), таким образом, разработчики видят его.

В случае № 2, проверьте, чтобы видеть, заблокировали ли чему-нибудь файл. Можно загрузить копию Проводника Процесса для проверки. Обратите внимание, что Вы, вероятно, хотите видеть, у кого есть блокировка на текстовая основа файл, не фактический файл, который Вы пытались фиксировать.

11
ответ дан myron-semack 7 November 2019 в 12:15
поделиться

Had this issue, our dev VM's are all *nix our workstations win32. some fool(s) created files of the same name (different case) on the *nix box all of a sudden checkouts on Win32 blows up... because win doesn't know which of the 2 files of the same name to MD5 against, checkouts on *nix were fine... leaving us to scratch our heads for a bit

I was able to update the repo on the win box by copying the ".svn" folders over from a *nix box with a good working copy. have yet to see if the repo can be cleaned to the point where we can do a full checkout again

1
ответ дан 24 November 2019 в 15:29
поделиться

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

ПРЕДОСТЕРЕЖЕНИЕ: Убедитесь, что ваша локальная копия является самой известной версией, И что кто-либо еще ваш проект знает, что вы делаете! (в случае, если это еще не было очевидным.)

Если вы знаете, что ваша локальная копия файла «хорошая», вы можете напрямую удалить файл с сервера SVN, а затем принудительно зафиксировать локальную копию.

синтаксис для прямого удаления:

svn delete -m "deleting corrupted file XXXX" 
svn+ssh://username@svnserver/path/to/XXXX

удачи!

J

3
ответ дан 24 November 2019 в 15:29
поделиться

вот как я исправил проблему - v просто, но, как указано в jsh выше, нужно быть уверенным, что ваша копия лучшая.

просто

  1. сделайте копию всех проблемных файлов в той же папке.
  2. удалите старые с помощью svn rm
  3. commit.
  4. затем переименуйте копии обратно в исходные имена файлов.
  5. совершить еще раз.

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

-2
ответ дан 24 November 2019 в 15:29
поделиться
Другие вопросы по тегам:

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