Я могу скопировать Мерзавца, работающего копия на другую машину?

Я нахожусь в процессе создания Мерзавца, работающего копия с нашего сервера SVN с 'мерзавцем svn клон'. Но это занимает некоторое время (мы имеем> 20 000 версий и почти 10 000 файлов). У меня есть некоторые другие машины (для других разработчиков), что я хотел бы установить тот же путь. Будет возможно скопировать получающиеся файлы с первой машины на других, чтобы провести меньше времени?

Другими словами, есть ли что-нибудь в Мерзавце, работающем копия, которая связывает его с машиной, на которой это было создано?

Спасибо.

26
задан Xavier Nodet 11 January 2010 в 14:43
поделиться

3 ответа

Я не думаю, что что-то встроено в структуру, чтобы сделать это для вас, я боюсь

В 4.0, есть:

StructuralComparisons.StructuralEqualityComparer.Equals(firstArray, secondArray);
-121--3440558-

Это зависит именно от того, что мы имеем в виду.

  • Следует ли использовать new для выделения памяти? Конечно, у нас нет другого выхода. new - это способ динамического выделения объектов в C++. Когда нам нужно динамически распределить объект типа T, мы делаем новые T (...) .
  • Следует ли вызывать new по умолчанию при необходимости создания экземпляра нового объекта? НЕТ . В Java или C # для создания новых объектов используется new , поэтому он используется везде. в C++ используется только для выделения кучи. Почти все объекты должны быть распределены по стеку (или созданы на месте в качестве членов класса), чтобы правила определения области действия языка помогали нам управлять их временем жизни. новый не часто требуется. Обычно, когда мы хотим выделить новые объекты в кучу, вы делаете это как часть более крупной коллекции, и в этом случае вы должны просто переместить объект в ваш контейнер STL, и позволить ему беспокоиться о выделении и освобождении памяти. Если требуется только один объект, его обычно можно создать как член класса или локальную переменную без использования new .
  • Должен ли новый присутствовать в коде бизнес-логики? Редко, если когда-либо. Как упоминалось выше, он может и должен быть, как правило, скрыт внутри классов обертки. std:: vector , например, динамически выделяет необходимую память. Таким образом, пользователю вектора это не обязательно. Я просто создаю вектор на стеке, и он заботится о распределении кучи для меня. Если вектор или другой класс контейнера не подходит, может потребоваться написать собственную обертку RII, которая распределяет часть памяти в конструкторе с помощью new и освобождает ее в деструкторе. Затем эта оболочка может быть распределена по стеку, поэтому пользователю класса никогда не придется вызывать new .

В одной из статей утверждалось, что Foo * f = new Foo (); был почти неприемлемым профессиональным кодом C++ по большому счету, и решение для автоматического управления памятью было подходящим.

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

Вместо Foo * f = new Foo (); следует использовать один из следующих вариантов:

Scoped_Foo f; // just create a wrapper which *internally* allocates what it needs on the heap and frees it when it goes out of scope
shared_ptr<Foo> f = new Foo(); // if you *do* need to dynamically allocate an object, place the resulting pointer inside a smart pointer of some sort. Depending on circumstances, scoped_ptr, or auto_ptr may be preferable. Or in C++0x, unique_ptr
std::vector<Foo> v; v.push_back(Foo()); // place the object in a vector or another container, and let that worry about memory allocations.
-121--1705549-

Вы можете скопировать его, все находится в папке .git и не зависит ни от чего другого.

35
ответ дан 28 November 2019 в 07:16
поделиться

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

2
ответ дан 28 November 2019 в 07:16
поделиться

Также стоит упомянуть, что если у вас нет локальных изменений («Статус Git» не показывает ничего, что вы хотите сохранить), вы можете скопировать только Каталог .GIT и сделать «Git Checkout». из (почти пустой) корневой каталог хранилища в конце.

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

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

8
ответ дан 28 November 2019 в 07:16
поделиться
Другие вопросы по тегам:

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