Как я разветвляю несколько проектов в один репозиторий с мерзавцем?

Вы, вероятно, использовали бы модуль подпроцесса . Что-то вроде этого:

import subprocess
p = subprocess.Popen(["scp", myfile, destination])
sts = os.waitpid(p.pid, 0)

, Где destination, вероятно, имеет форму user@remotehost:remotepath. Благодаря @Charles Duffy для указания на слабость в моем исходном ответе, который использовал единственный аргумент строки для определения scp операции shell=True - который не обработает пробел в путях.

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

Гарантируют, что Вы настроили надлежащие учетные данные так, чтобы можно было выполнить необслуживаемый, passwordless scp между машинами . Уже существует stackoverflow вопрос для этого .

5
задан Dane O'Connor 11 November 2009 в 22:17
поделиться

4 ответа

Вы всегда можете использовать « git remote add », чтобы добавить больше репозиториев в качестве источника.

3
ответ дан 13 December 2019 в 19:29
поделиться

Возможно, вас заинтересует функциональность git-submodule . Цитата из здесь :

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

5
ответ дан 13 December 2019 в 19:29
поделиться

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

А пока я все еще открыт для предложений.

1
ответ дан 13 December 2019 в 19:29
поделиться

Есть одна возможность, которую я никогда не пробовал "по-настоящему", но она может хорошо сработать.

Допустим, у вас есть три проекта с творческими названиями Proj1 , Proj2 и (угадайте) Proj3 . Предположим также, что все или некоторые из них зависят от внешних библиотек, например, одна называется Lib1.dll , а другая называется SuperLib.dll .

Во-первых, для структуры папок, Я бы сделал что-то вроде:

MyCode\
    build_all.bat
    Docs\
        [...]
    Libs\
        Lib1.dll
        SuperLib.dll
    Proj1\
        [...]
    Proj2\
        [...]
    Proj3\
        [...]

Затем вы должны создать по одному репозиторию для каждой из папок ProjX:

cd \MyCode\Proj1
git init
cd \MyCode\Proj2
git init
cd \MyCode\Proj3
git init

Затем вы создадите репозиторий для всего этого:

cd \MyCode
git init

Содержимое этого репозитория, для git, будет это папка Libs и ее содержимое, сценарий сборки build_all.bat и 3 подпроекта.

Итак, как только вы измените исходный код, скажем, Proj1 \ Main.cs , все не увидит изменений. Вам нужно будет выполнить git commit на Proj1, а затем перейти к целому , а затем git commit it (теперь git сможет увидеть, что Proj1 был изменен).

Используя этот метод, в истории всего объекта будет просто указано, когда ProjX был изменен, но он не будет напрямую отслеживать отдельные файлы. Однако, как и ожидалось, репозиторий на ProjX будет отслеживать каждый файл, как обычно.

Если вы попробуете его на «реальном проекте», дайте мне знать результаты!

Удачи!

не вижу модификации. Вам нужно будет выполнить git commit на Proj1, а затем перейти к целому , а затем git commit it (теперь git сможет увидеть, что Proj1 был изменен).

Используя этот метод, в истории всего объекта будет просто указано, когда ProjX был изменен, но он не будет напрямую отслеживать отдельные файлы. Однако, как и ожидалось, репозиторий на ProjX будет отслеживать каждый файл, как обычно.

Если вы попробуете его на «реальном проекте», дайте мне знать результаты!

Удачи!

не вижу модификации. Вам нужно будет выполнить git commit на Proj1, а затем перейти к целому , а затем git commit it (теперь git сможет увидеть, что Proj1 был изменен).

Используя этот метод, в истории всего объекта будет просто указано, когда ProjX был изменен, но он не будет напрямую отслеживать отдельные файлы. Однако, как и ожидалось, репозиторий на ProjX будет отслеживать каждый файл, как обычно.

Если вы попробуете его на «реальном проекте», дайте мне знать результаты!

Удачи!

Используя этот метод, в истории всего будет просто указано, когда ProjX был изменен, но он не будет напрямую отслеживать отдельные файлы. Однако, как и ожидалось, репозиторий на ProjX будет отслеживать каждый файл, как обычно.

Если вы попробуете его на «реальном проекте», дайте мне знать результаты!

Удачи!

Используя этот метод, в истории всего будет просто указано, когда ProjX был изменен, но он не будет напрямую отслеживать отдельные файлы. Однако, как и ожидалось, репозиторий на ProjX будет отслеживать каждый файл, как обычно.

Если вы попробуете его в «реальном проекте», дайте мне знать результаты!

Удачи!

2
ответ дан 13 December 2019 в 19:29
поделиться
Другие вопросы по тегам:

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