мерзавец, как бороться с ветками, где выполняется код - PullRequest
1 голос
/ 22 марта 2011

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

В последнее время я начал использовать git, и он мне хорошо помогает, пока я не столкнусь с ситуациями, описанными выше. У меня нет большого опыта использования внешних репозиториев (pull / push), но я подозреваю, что это можно решить с помощью локальных внешних репозиториев. Как бы вы справились с этой ситуацией?

Ответы [ 4 ]

3 голосов
/ 22 марта 2011

Просто клонируйте свой репо.Затем вы можете толкать и тянуть между основным репо и вашим клоном.Взгляните на git clone, git push и git pull.

2 голосов
/ 22 марта 2011

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

Поскольку я уверен, что вы знаете, как сделать последнее (набор git clone s из разных каталогов), вот инструкции по настройке первого:

Клонируйте пульт.Это будет ваша точка агрегации или «главный» репозиторий.Лучше разобраться (без рабочего дерева), чтобы избежать путаницы:

git clone --bare ssh://user@host/path/to/repo.git repo.git

Затем настройте несколько клиентов на этот:

git clone file:///path/to/local/repo.git

Каждый может быть сам по себеветвь и делай свое дело.Когда вы вносите изменения в одного из клиентов, выполните git push, чтобы перейти к точке агрегации, а затем из точки агрегации вы можете сделать git push для сервера.От других клиентов вам нужно будет сделать git fetch, чтобы получить новые изменения, которые вы выдвинули от других клиентов.

1 голос
/ 22 марта 2011

Я бы настроил процесс сборки так, чтобы копировать двоичные файлы в отдельное место за пределами исходной папки, и настраивал среду так, чтобы выходные файлы также записывались в отдельном месте. Держите исходное дерево в чистоте от сгенерированных данных.

0 голосов
/ 22 марта 2011

Вам нужно выполнить в отдельной папке.

git archive | tar

или что-то подобное. После этого вы можете продолжить работу в своем репо.

Клонирование не является хорошей идеей, так как вы будете разбросаны по списку ссылок и переоценке истории. Ссылка на репо для конкретных файлов, если вам нужно.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...