Я нахожусь в процессе создания Мерзавца, работающего копия с нашего сервера SVN с 'мерзавцем svn клон'. Но это занимает некоторое время (мы имеем> 20 000 версий и почти 10 000 файлов). У меня есть некоторые другие машины (для других разработчиков), что я хотел бы установить тот же путь. Будет возможно скопировать получающиеся файлы с первой машины на других, чтобы провести меньше времени?
Другими словами, есть ли что-нибудь в Мерзавце, работающем копия, которая связывает его с машиной, на которой это было создано?
Спасибо.
Я не думаю, что что-то встроено в структуру, чтобы сделать это для вас, я боюсь
В 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 и не зависит ни от чего другого.
Нет, все будет хорошо, чтобы просто скопировать корневой каталог репо. Просто убедитесь, что вы получаете какие-либо невидимые файлы , особенно каталог .git
. (В корне проекта), который содержит все данные конфигурации для репо.
Также стоит упомянуть, что если у вас нет локальных изменений («Статус Git» не показывает ничего, что вы хотите сохранить), вы можете скопировать только Каталог .GIT и сделать «Git Checkout». из (почти пустой) корневой каталог хранилища в конце.
Если это медленная связь, это также стоит переупаковать репозиторий до передачи.
Единственное, о чем я беспокоюсь, это если Git-Svn запоминает некоторую информацию о пользователе, которую вы не хотите копировать другим разработчикам.