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)));
и т. д.
Помните, что это делегат, поскольку более подробная информация относится к документации.
Файл в .svn каталоге, который отслеживает то, что Вы проверили, когда, какой пересмотр, и от где, стал поврежденным так или иначе для того конкретного файла.
Это не более опасно или очень важно, чем нормальная нечетная проблема файла и может быть из-за различных проблем, как программа подрывной деятельности, умирающая середина изменения, разрушения питания, и т.д.
, Если этого не происходит больше, я не сделал бы много из него.
Это может быть зафиксировано путем выполнения, что Вы, сделайте копию своих рабочих файлов, действительно проверяйте новую копию и включайте измененные файлы назад.
Примечание, что это могло бы вызвать проблемы, если бы у Вас есть занятый проект, где необходимо было бы обычно объединяться в изменениях.
, Например, Вы и коллега и проверьте новую копию и начните работать над тем же файлом. В какой-то момент Ваш коллега регистрируется в своих модификациях. Когда Вы пытаетесь сделать то же, Вы получаете проблему контрольной суммы, которую Вы имеете. Если Вы теперь сделаете копии своих измененных файлов, сделайте новый контроль, то подрывная деятельность потеряет след того, как Ваши изменения должны быть объединены, въезжают задним ходом.
, Если Вы не получили проблему в этом случае при возвращении для регистрации в модификациях необходимо будет обновить рабочую копию сначала, и возможно обработать конфликт с файлом.
Однако, если Вы делаете новый контроль, вместе с Вашими изменениями коллег, теперь похоже, что Вы удалили его изменения и заняли место с Вашим собственным. Никакие конфликты и никакие признаки от подрывной деятельности, что что-то неправильно.
попытка: svn - file.c
силы Это работало на меня, не имея необходимость делать что-либо дополнительное
Как раз сегодня мне удалось восстановиться с этой ошибки путем проверки копии поврежденного каталога к/tmp и замены файлов в .svn/text-base со справедливыми co'ed. Я описал процедуру в некоторых деталях здесь на моем блоге . , мне будет интересно получать известие от более опытных пользователей SVN, что является преимуществами и недостатками каждого подхода.
Существует также более простая причина для этого, чем просто ошибки или дисковое повреждение и т.д. Я думаю это, наиболее вероятная причина для этого для случая состоит в том, когда кто-то пишет рекурсивную текстовую замену на рабочей копии без исключения .svn файлы.
Это означает нетронутые копии файлов (в основном Базовая версия файлов, это сохранило в .svn административной области), изменяются, и это делает недействительным сумму MD5.
Преграды @Andrew: это также объясняет, почему Ваше решение фиксирует это.
Я иногда получаю подобные вещи, обычно с файлами, что никто не был рядом в неделях. Обычно, если Вы знаете, что не работали в рассматриваемом каталоге, можно просто удалить каталог с проблемой и работать
svn update
для воссоздания его.
, Если у Вас есть живые изменения в каталоге тогда как lassevk и Вы сами предложили, более тщательный подход требуется.
Вообще говоря, я сказал бы, что это - хорошая идея не оставить отредактированные файлы незафиксированными, и сохранять рабочую копию опрятной - не добавляют целый набор дополнительных файлов в рабочую копию, которую Вы не собираетесь использовать. Фиксируйте регулярно, и затем если рабочая копия идет сиськи, можно просто удалить все это и запуститься, не волнуясь о том, что Вы могли бы или не могли бы проигрывать, и без боли попытки выяснить что файлы сохранить.
SVN сохраняет нетронутые копии всех файлов Вами контроль проложенный под землей в .svn каталогах. Это называют текстовой основой. Это допускает быстрый diffs и возвращается. Во время различных операций SVN сделает контрольные суммы на этих основных текстом файлах для ловли проблем повреждения файла.
В целом, несоответствие контрольной суммы SVN означает файл, который не должен был быть изменен, был изменен так или иначе. Что это означает?
, Все они плохи.
ОДНАКО , я думаю, что Ваша проблема отличается. Посмотрите на сообщение об ошибке. Обратите внимание, что это ожидало некоторые хеши MD5, но вместо этого возвратило 'пустой указатель'. Если бы это было простой проблемой повреждения файла, то я ожидал бы, что у Вас было бы два различных хеша MD5 для ожидания/получения. То, что у Вас есть 'пустой указатель', подразумевает, что что-то еще неправильно.
у меня есть две теории:
В случае № 1, попытайтесь обновить до последней версии SVN. Возможно, также отправьте это в svn-devel списке рассылки ( http://svn.haxx.se ), таким образом, разработчики видят его.
В случае № 2, проверьте, чтобы видеть, заблокировали ли чему-нибудь файл. Можно загрузить копию Проводника Процесса для проверки. Обратите внимание, что Вы, вероятно, хотите видеть, у кого есть блокировка на текстовая основа файл, не фактический файл, который Вы пытались фиксировать.
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
Другой, возможно, еще более опасный способ обхода конфликтов контрольных сумм, который я обнаружил, заключается в следующем:
ПРЕДОСТЕРЕЖЕНИЕ: Убедитесь, что ваша локальная копия является самой известной версией, И что кто-либо еще ваш проект знает, что вы делаете! (в случае, если это еще не было очевидным.)
Если вы знаете, что ваша локальная копия файла «хорошая», вы можете напрямую удалить файл с сервера SVN, а затем принудительно зафиксировать локальную копию.
синтаксис для прямого удаления:
svn delete -m "deleting corrupted file XXXX"
svn+ssh://username@svnserver/path/to/XXXX
удачи!
J
вот как я исправил проблему - v просто, но, как указано в jsh выше, нужно быть уверенным, что ваша копия лучшая.
просто
подозревают, что это, вероятно, уничтожает всю историю изменений в этом файле, так что это довольно уродливый способ сделать это ...