Как сделать резервную копию файлов в нескольких каталогах с помощью git?

Этот конкретный набор цветов предназначен для «старого» стиля. Lynx поддерживает один из следующих вариантов:

  • «новый» стиль цвета с цветами, назначенными типам тегов HTML, или
  • «старый» стиль »с цветами, назначенными для ссылок

« Новый »стиль - это настроенный с параметром COLOR_STYLE в lynx.cfg :

Также известный как «lss» ( lynx style-sheet ), файл цветовых стилей назначает сочетание цветов для тегов и комбинаций тегов. Обычно непустое значение компилируется в lynx , и пользователь может переопределить это, используя параметр командной строки -lss. Сценарий configure позволяет компилировать в пустая строка. Если lynx не находит значения для этого параметра, он имитирует назначения без цвета, используя параметры ЦВЕТ .

Если ни одна из командная строка "-lss "или указан этот параметр COLOR_STYLE , lynx пробует переменные среды " LYNX_LSS " и " lynx_lss ". Если ни один из них не задан, lynx использует th e первое скомпилированное значение (которое, как уже отмечалось, может быть пустым).

При запуске lynx запоминает имя файла цветового стиля, который использовался, и вместе с каждым указанным файлом предоставляет его в качестве вариантов в меню пунктов O ).

Исходники lynx включают сценарий oldlynx , который можно использовать для имитации старого стиля:

#!/bin/sh
# invoke lynx built with color-style, overriding the color options to use the
# non-color-style scheme -TD

my_cfg=${TMPDIR:-/tmp}/lynxcfg$$
trap "rm -f $my_cfg" 0 1 2 5 15

rm -f "$my_cfg"
echo "DEFAULT_COLORS:off" >>$my_cfg
if test -n "$LYNX_CFG" ; then
    echo "include:$LYNX_CFG" >>$my_cfg
fi
echo "COLOR_STYLE:" >>$my_cfg
echo "NESTED_TABLES:off" >>$my_cfg

LYNX_CFG=$my_cfg
export LYNX_CFG
unset LYNX_LSS

${LYNX_PROG-lynx} "$@"

Например, вот справочная страница с цветовым стилем по умолчанию:

enter image description here

и вот та же страница с использованием oldlynx (с использованием 2.8.7):

enter image description here

, хотя я только что заметил, что это не работает для 2.8.8: кое-что упущено в этом изменении для 2.8.8dev. 17 :

* modify configuration of COLOR_STYLE value in lynx.cfg, allowing multiple
  filenames to be specified and providing those as choices in the O'ptions
  menu (Debian #404893) -TD

Это сделало несколько значений для файла цветового стиля доступными в виде списка выбора в меню параметров. Простым обходным решением было бы заставить lynx использовать пустой файл цветового стиля , например,

#!/bin/sh
# invoke lynx built with color-style, overriding the color options to use the
# non-color-style scheme -TD

my_cfg=${TMPDIR:-/tmp}/lynxcfg$$
my_lss=${TMPDIR:-/tmp}/lynxlss$$
trap "rm -f $my_lss $my_cfg" 0 1 2 5 15

echo >$my_lss

rm -f "$my_cfg"
echo "DEFAULT_COLORS:off" >>$my_cfg
if test -n "$LYNX_CFG" ; then
        echo "include:$LYNX_CFG" >>$my_cfg
fi
echo "COLOR_STYLE:" >>$my_cfg
echo "NESTED_TABLES:off" >>$my_cfg

LYNX_CFG=$my_cfg
export LYNX_CFG
LYNX_LSS=$my_lss
export LYNX_LSS

${LYNX_PROG-lynx} "$@"

(некоторые могут использовать mktemp , но когда скрипт было написано менее актуальное, чем сейчас).

3
04.05.2016, 13:14
2 ответа

Если вы не возражаете против перемещения файлов...

Вы можете сделать это, переместив файлы в git-репозиторий и связав их симлинками со старыми местами; в итоге вы получите

  • ~/gitrepo/somedir/otherdir/file1, перемещенный из ~/somedir/otherdir/file1
  • ~/gitrepo/otherdir/somedir/file2, перемещенный из ~/otherdir/somedir/file2
  • симлинк от ~/somedir/otherdir/file1 на ~/gitrepo/somedir/otherdir/file1
  • симлинк из ~/otherdir/somedir/file2 на ~/gitrepo/otherdir/somedir/file2

После этого вы можете смело фиксировать файлы в git-репозитории, и работать с ними с помощью git, и всё, что использует старые пути к файлам, будет видеть текущее рабочее пространство git. Связывать файлы наоборот, или использовать жесткие ссылки, будет опасно, потому что любая операция git, которая перепишет файл (изменение ветвей, возврат к предыдущей версии...), нарушит связь. (Надеюсь, это объясняет, почему жесткие ссылки не являются действительно жизнеспособным решением.)

При таком сценарии вам придется быть осторожным с программами, которые полностью переписывают файлы, разрушая ссылки; многие текстовые редакторы делают это, как и такие инструменты, как sed -i и т.д. Более безопасным подходом было бы перемещение всех папок в git-репозиторий и симлинковка каталогов.

Если вы хотите сохранить файлы на месте...

Другая возможность - создать git-репозиторий в вашем домашнем каталоге, сказать git'у игнорировать всё, а затем принудительно добавить файлы, которые вы хотите отслеживать:

cd
git init
echo '*' > .gitignore
git add -f .gitignore
git commit -m "Initialise repository and ignore everything"
git add -f somedir/otherdir/file1
git commit -m "Add file1"
git add -f otherdir/somedir/file2
git commit -m "Add file2"

Сделав это, вы легко сможете отслеживать изменения в файлах, которые вы явно добавили, но git не будет рассматривать новые файлы. При такой настройке должно быть также безопасно иметь другие git-репозитории в подкаталогах вашего домашнего каталога, но я не проверял подробно...

10
27.01.2020, 21:12

Ознакомьтесь с src, простой системой контроля версий для локальных независимых файлов.

0
30.01.2020, 22:31

Теги

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