Неспособный согласиться на Подрывную деятельность

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

   public override int GetHashCode()
   {
      return base.GetHashCode();
   }

(Конечно, я мог бы использовать #pragma, чтобы выключить предупреждение, но я предпочитаю этот способ.)

Если вы находитесь в том положении, в котором вы делаете , то, конечно, требования к производительности, чем все проблемы, упомянутые другими, применяются здесь. Самое главное - иначе вы получите неправильные результаты при извлечении элементов из хеш-набора или словаря: хеш-код не должен меняться в зависимости от времени жизни объекта (точнее, в течение времени, когда требуется хэш-код, например, ключ в словаре): например, следующее неверно, поскольку значение является общедоступным и поэтому может быть изменено извне в класс во время жизни экземпляра, поэтому вы не должны использовать его в качестве основы для хеш-кода:


   class A
   {
      public int Value;

      public override int GetHashCode()
      {
         return Value.GetHashCode(); //WRONG! Value is not constant during the instance's life time
      }
   }    

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


   class A
   {
      public readonly int Value;

      public override int GetHashCode()
      {
         return Value.GetHashCode(); //OK  Value is read-only and can't be changed during the instance's life time
      }
   }

33
задан Ewan Makepeace 5 December 2008 в 21:21
поделиться

11 ответов

Ewan

я столкнулся с той же самой проблемой с Визуальным Сервером SVN, установленным в Windows 2003, я изменил установку по умолчанию для размещения Папки репозитория на отдельный раздел, так как серверы C диск являются маленькими. Я должен был изменить разрешение на ту папку (в этом случае D:\Repository), как быстрый и грязный взлом я просто добавил "Всех" пользователь к этой папке и выбрал, "Изменяют" права (не самое безопасное наверняка, но грязный рабочий взлом тем не менее). Это решило вопрос.

0
ответ дан 11 October 2019 в 08:07
поделиться

"Не может записать в файл пересмотра прототипа транзакции" Перезапуск апача, также решил эту проблему для меня. Я отправляю так, чтобы что-то полезное могло бы на самом деле добраться до вершины Google.

Удачи!

1
ответ дан 11 October 2019 в 08:07
поделиться

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

1
ответ дан DamianM 11 October 2019 в 08:07
поделиться

У меня была подобная проблема кроме сообщения, сказанного "..., предыдущее представление в настоящее время пишется ЭТИМ процессом".

svnadmin lstxns не показал транзакций.

Apache Перезапуска решил проблему для меня.

15
ответ дан 11 October 2019 в 08:07
поделиться

Ваш репозиторий имеет застрявшую транзакцию. Можно использовать команду svnadmin для восстановления его. Как все другие svn утилиты, svnadmin принимает управление, сопровождаемое опциями (обычно просто каталог репозитория). svnadmin должен быть выполнен на сервере с репозиторием.

Делают что-то вроде этого:

svnadmin lstxns /path/to/repository

для получения списка транзакций в процессе (необходимо видеть оскорбление 551-1 там). Можно тогда решить, как лучше всего восстановиться с этой ошибки... svnadmin, также имеет команду rmtxns для удаления незаконной транзакции. Для получения дополнительной информации, проблема:

svnadmin help

или посмотрите тигрский веб-сайт: http://subversion.tigris.org/ . Можно также получить более подробную справку на определенных командах следующим команда справки с названием команды, которой Вы интересуетесь. Например:

svnadmin help lstxns

, Очевидно, Вы должны будете окружить доступ к серверу репозитория и полномочиям записи на репозитории для использования svnadmin. Если Вы - формат репозитория, DB Berkely, необходимо временно отстранить svnserve демона (если Вы используете его), и любой web_dav/web_svn доступ, чтобы гарантировать, чтобы Вы не повреждали базу данных при давании svnadmin команд.

9
ответ дан Jason Coco 11 October 2019 в 08:07
поделиться

Я регистрирую то же неправильное сообщение, и когда я «получаю блокировку» фиксации, успех ~

0
ответ дан 27 November 2019 в 17:51
поделиться

Я проголосовал за @DamianM. Ответ. В моем случае, похоже, в этом и была проблема. Файл Коррупция, которая не позволяла писать на сервере. Проблема с фиксацией SVN для определенного расширения файла

Но вместо перезапуска процесса / перезагрузки сервера svn я снова скопировал dlls[файлы с проблемой] в рабочую папку и смог зафиксировать.

0
ответ дан 27 November 2019 в 17:51
поделиться

Исправил ту же проблему, перезапустив apache.

3
ответ дан 27 November 2019 в 17:51
поделиться

Вы можете устранить эту ошибку без перезагрузки:

  1. Определите (или создайте) каталог в корневом репозитории SVN, который не был частью неудачной фиксации.

  2. Создайте новый файл в каталоге с шага 1.

  3. Зафиксируйте новый файл (и каталог, если он был создан на шаге 1). Поскольку файл новый, он не конфликтует с предыдущей фиксацией и может обновлять номер ревизии на сервере.

  4. Зафиксируйте исходные файлы / каталоги.

  5. Удалите новый файл (и каталог, если он был создан на шаге 1).

  6. Зафиксировать все дерево.

** Шаги 5 и 6 не требуются, но я предпочитаю содержать свой репозиторий в порядке ...

Я часто получаю эту ошибку b / c SVN часто выходит из строя в середине фиксации моих больших файлов, что, в свою очередь, заставляет последующие коммиты попытаться записать в ревизию, которая была прервана.

43
ответ дан 27 November 2019 в 17:51
поделиться

Решил ту же проблему после того, как отменил выполняемую фиксацию. После выполнения svnadm rmtxns с номером транзакции для удаления я все еще получил сообщение. Я использую webdav с apache, поэтому перезапустил apache, как было предложено (/ sbin / service httpd restart). Работал.

2
ответ дан 27 November 2019 в 17:51
поделиться

Для меня проблема была решена (как указано в обновлении вопроса) путем изменения разрешений моей локальной папки (не репозитория). В Windows Vista для этого нужно щелкнуть папку правой кнопкой мыши и изменить разрешения в свойствах / безопасности.

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

5
ответ дан 27 November 2019 в 17:51
поделиться
Другие вопросы по тегам:

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