2

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

Например, ~/workspace/src/file1.cpp и ~/workspace/src/myfolder/file2.cpp синхронизируются, а ~/workspace/build/file3.cpp - нет. Я продолжаю создавать и удалять проекты и не хочу заново настраивать пути к файлам для синхронизации каждый раз, когда создаю новый проект с новым каталогом src .

Сейчас я использую инструмент синхронизации файлов Unison для Mac, и я не знаю, как это сделать. Может кто-нибудь показать мне?

1 ответ1

0

К сожалению, похоже, что Unison (один) не может легко это сделать. Из использования ignorenot xxx в руководстве по Unison:

В частности, размещение ignore = Path * в вашем профиле и последующее использование ignorenot для выбора определенных путей для синхронизации не будут работать. Вместо этого вы должны использовать предпочтения пути, чтобы выбрать определенные пути для синхронизации.

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

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

    Path = path/to/src
    

    в свой профиль Unison.

  2. Не обращайте внимания на файлы сборки и конфигурации . Может быть, все ваши файлы сборки и конфигурации имеют только несколько различных шаблонов, с которыми вы можете сравнивать? Вы можете сказать Unison игнорировать эти шаблоны, в частности , добавив что-то в свой профиль Unison, например:

    ignore = Name *.o              #ignore object files
    ignore = Name build            #ignore paths that end with "build"
    ignore = Name {.*,*}.sw[ponx]  #ignore pesky vim swap files
    ignore = ...
    
  3. Напишите скрипт, который вам поможет: вы, конечно, могли бы написать скрипт, который ищет все каталоги с именем src и вызывает Unison для них по отдельности. Но это кажется глупым. Вы могли бы написать скрипт, который помогает с пунктом (1) выше. Напишите скрипт, который найдет все пути с именем src и для каждого такого пути добавьте строку

    Path = /path/to/src
    

    к какому-то файлу AllThePaths , а потом просто есть строка

    include AllThePaths
    

    в вашем профиле Unison.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .