Как обмениваться файлами между папками или репозиториями - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю над фрагментом кода, который должен работать с несколькими темами.

Допустим, у меня есть три темы:

  • Оранжевый
  • Зеленый
  • Синий

В каждой теме есть папка «snippets», и я помещаю туда свой фрагмент кода.

  • Orange / snippets / code.html
  • Зеленый / snippets / code.html
  • Синий / snippets / code.html

Файл "code.html" одинаков для всех тем.Я отслеживаю его в своем репозитории GitHub, а затем копирую и вставляю в каждое репозиторий тем.

Как я могу отредактировать этот фрагмент в одном месте и быть уверенным, что он обновляется во всех темах?Я ищу способ, который был бы масштабируемым, так как скоро количество тем может увеличиться до 20-30.

В моей ситуации у меня есть больше файлов, чем пример с "code.html" - онив двух папках, и общая сумма составляет около 10.

Я читал о подмодулях Git, но я не уверен, что они соответствуют моей проблеме.Я не уверен, связана ли эта проблема с Git вообще, извините за это.

PS Я работаю над SaaS - Shopify, если быть точным.Таким образом, любые трюки PHP не будут работать в этом случае.Мне нужно, чтобы файлы обрабатывались каким-то образом локально.

Редактировать: Пример из реальной жизни:

У меня есть эти 4 файла:

{{ theme }}/snippets/file1.liquid
{{ theme }}/snippets/file2.liquid
{{ theme }}/assets/file3.liquid
{{ theme }}/assets/file4.liquid

Я не могу создать подкаталогиили другие каталоги.

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Допустим, у вас есть общий код в хранилище. Вы можете создать подмодуль в <Theme>/snippets/common. И обновляйте его до последней версии каждый раз, когда вы хотите создать / развернуть свою тему.

Это означает, что ваш code.html будет в <Theme>/snippets/common/code.html

cd <Theme>/snippets

# To add the submodule 
git submodule add <common code repository> common
# 2 new files will be added to the repository
# .gitmodules and the "common" folder

# When you clone the repo in another machine
# Always do the following command 
# to get the files from the common repository
git submodule update --init

# If you made a change in the common repository
git submodule update --remote
0 голосов
/ 26 ноября 2018

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

#!/usr/bin/env bash

declare -a filePaths=("Orange/snippets/code.html" "Green/snippets/code.html" "Blue/snippets/code.html")
declare newestFile

for file in "${filePaths[@]}"; do
echo "current file is $file"
if [[ "$file" -nt ${newestFile} ]];
then
newestFile="${file}"
fi
echo "newest file is ${newestFile}"
done

for file in "${filePaths[@]}"; do
if ! [[ "$file" -ef $newestFile ]];
then
echo "copying ${newestFile} to ${file}"
cp ${newestFile} ${file}
currentDir=`dirname "${file}"`
cd ${currentDir}
git add ${file}
git commit -m 'automatic update commit'
fi
done

После того, как вы изменили файл code.hmtl, вы можете запустить этот скрипт или включить его в рабочий конвейер.

0 голосов
/ 15 ноября 2018

Будет работать структура файла Php, подобная той, что вы перечислили выше.Папка snippets, по сути, будет расширением .php с включением для общего html-файла между проектами или темами вашего дела.

...