Как восстановить с svn hotcopy резервные копии

Нет, нет причины, по которой вы когда-либо делали бы это:

  OtherObject other_object = create_other_object();
  other_objects.push_back(&other_object);

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

В этом главное отличие Python. В Python каждый объект является ссылкой на объект Python, даже целые числа. В C ++ у вас есть объект в стеке (как у вас) или в куче (созданный через new, make_unique ...). Если вы хотите имитировать поведение Python, вам нужны объекты в куче.

Существует только три допустимых шаблона, в зависимости от того, что делает create_object():

  • он создает объект и возвращает его по значению. В этом случае оберните его make_unique, чтобы получить копию. Этот паттерн обычно не очень полезен и не практичен.
  • он создает новый объект в куче и ожидает, что вызывающий код будет обрабатывать управление памятью. Таким образом, прототип: std::unique_ptr<OtherClass> create_other_object();
  • он создает новый объект, но не ожидает, что вызывающий код будет обрабатывать управление памятью, и в этом случае прототип должен быть OtherClass* create_other_object();
[1115 ] В вашем случае, это, вероятно, второй случай:

std::vector<std::unique_ptr<OtherClass>> other_objects;
void method() {
    other_objects.push_back(create_other_object());
}
11
задан chandrajeet 14 January 2009 в 21:34
поделиться

4 ответа

"svnadmin hotcopy" на самом деле копирует весь репозиторий в другое местоположение. Копия неотличима от исходного репозитория и может на самом деле использоваться в качестве самого репозитория. Так, необходимо смочь скопировать результаты svnadmin hotcopy назад к местоположению хранилища и иметь совершенно допустимый, восстановленный репозиторий.

Преимущество hotcopy по обычной копии файловой системы состоит в том, что он уважает механизм блокировки Подверсии.

26
ответ дан 3 December 2019 в 02:02
поделиться

Я сделал бы намного больше, затем просто выполняет hotcopy каждую ночь. Я использовал бы "svnadmin дамп" для создания истории изменений в dumpfile, который может быть восстановлен рабочему репозиторию.

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

1
ответ дан 3 December 2019 в 02:02
поделиться

Как часть Вашего ежедневного резервного копирования, Вы могли бы хотеть работать svnadmin verify <REPOSITORY>

Вы могли или проверить оригинал или hotcopied.

Определенно сделайте это прежде, чем восстановить от резервного копирования.

7
ответ дан 3 December 2019 в 02:02
поделиться

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

Необходимо также думать о стратегии, восстанавливают SVN-workingcopies: если Вы просто восстановите hotcopied (или выведенный) repo все workingcopys, которые находятся на более высоком пересмотре, то будет недопустимо, и разработчики должны проверить снова. обычно это занимает намного больше времени, чтобы быть снова на ходу, чем восстановление repo один.

Проблема на дампах: они являются очень трудоемкими, чтобы создать и воспроизвести.

Также, если Вы будете использовать сценарии рычага, то они будут включены в Ваш hotcopy, но они не будут в Ваших дампах.

Это сказано, что я рекомендовал бы комбинацию hotcopy и дампа на фиксацию

1
ответ дан 3 December 2019 в 02:02
поделиться
Другие вопросы по тегам:

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