Как добавить репозиторий мерзавца как общую зависимость другого репозитория мерзавца?

Мне нужно что-то сродни подмодулям, но которые существуют возле основного репозитория как зависимость.

Вот проблема:

Я пытаюсь использовать Мерзавца (ДЕЙСТВИТЕЛЬНО неловким способом) для управления файлами дизайна для инструмента CAD (Орел Cadsoft), и мне нелегко выяснять, существует ли способ использовать подмодули мерзавца для управления зависимостью каждого проекта от общей библиотеки инструмента CAD.

Я использую структуру папок как это:

~/eagle/ <-- Main library used by multiple projects
    .git/     
    <library files>

~/projects/ <-- Projects folder
    Proj0/
        .git/
        <design files>
    Proj1/
        .git/
         <design files>

В этом случае не имеет смысла добавлять eagle.git репозиторий как подмодуль мерзавца для каждого проекта.

Однако мне все еще нужен способ создать снимки текущее состояние "eagle.git" репозитория так, чтобы, если библиотека обновляется в будущем, она могла откатываться для доступа к определенному пересмотру файлов библиотеки, которые использовались, когда Proj[x] фиксировался.

Идеально, я хотел бы что-то как следующее:

~/eagle/ <-- Main library used by multiple projects
    .git/     
    <library files>

~/projects/ <-- Projects folder
    Proj0/
        .git/
        <design files>
        **eagle** <-- something that acts like a submodule  
                      but which actually points to ~/eagle/
    Proj1/
        .git/
         <design files>
         **eagle** <-- something that acts like a submodule  
                       but which actually points to ~/eagle/

Я хотел бы смочь к:

cd ~/projects/Proj0
git submodule update

и имейте ~/eagle/, каталог автоматически откатывают к пересмотру, зарегистрировался в Proj0.

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

7
задан cdwilson 27 July 2010 в 19:23
поделиться

2 ответа

Для каждого проекта добавьте .git / hooks / pre-commit (и убедитесь, что он исполняемый):

#!/bin/sh
git --git-dir=~/eagle/.git log -1 --pretty=format:%H >.eagle_rev
git add .eagle_rev

Затем для каждого проекта:

git config alias.update-eagle '!git --git-dir=~/eagle/.git --work-tree=~/eagle checkout -q $(<.eagle_rev)'

Когда вы создаете commit, он запишет текущий HEAD ~ / eagle, а git update-eagle проверит этот коммит в ~ / eagle. (Тогда просто убедитесь, что вы git checkout в ~ / eagle, прежде чем вносить в него какие-либо изменения.)

4
ответ дан 7 December 2019 в 14:26
поделиться

Если орел не имеет своего места в ProjX ,
, но каждый ProjX может использовать конкретная версия eagle ,
затем:

Для каждого ProjX вам необходимо:

  • иметь репозиторий MainProjX Git , в котором вы найдете:
    • a ProjX
    • версия eagle (на том же уровне, что и ProjX )

Цель каждого MainProjX родительский проект должен хранить вместе версии ProjX и eagle , то есть записывать правильные зависимости.

~/projects/ <-- Projects folder
    MainProj0
      Proj0/
          .git/
          <design files>
      eagle/
          .git/
          <library files>

    MainProj1
      Proj1/
          .git/
          <design files>
      eagle/
          .git/
          <library files>

Да, это много дублирования " eagle ", но это необходимо, если каждый ProjX может использовать свою собственную eagle ревизию. .

0
ответ дан 7 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

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