Как я могу использовать специфичные для репозитория каталоги отмены VIM (undodir), не раскрывая свою структуру пути всем, кто клонирует репо? - PullRequest
0 голосов
/ 26 сентября 2018

Я недавно обнаружил постоянную функцию отмены VIM, и мне она нравится, потому что она позволяет мне вернуться и настроить мои коммиты git, если это необходимо.

В настоящее время все мои файлы отмены VIM просто создаются рядом скаждый отредактированный файл.Это прекрасно работает, но это засоряет дерево исходного кода.Это выглядит непрофессионально и неорганизованно.

Поэтому я натолкнулся на настройку для использования в моем локальном (специфичном для проекта) .vimrc, которая позволяет мне сохранять все отмененные файлы в каталоге относительно рабочего каталога.Это было бы идеально, за исключением того, как VIM затем выбирает имена этих файлов - то есть использовать полный путь для создания имени файла, чтобы обеспечить уникальность.Очевидно, что эта функция предназначена для указания каталога, такого как ~/.vimundo, для хранения файлов отмены нескольких проектов.Однако я не хочу этим пользоваться.Я хочу, чтобы это происходило отдельно для каждого проекта, не беспокоясь об остальной системе.

.vimrc:

set undodir=./.vimundo/
set undofile

В результате чего-то подобное создается внутри моего проекта ./.vimundo каталог для каждого отредактированного файла в моем проекте (это для моего проекта .vimrc):

%home%douglas%Projects%auto_gen_projects%cmake_project_files%.vimrc

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

Существует ли эффективный способ отделения файлов отмены от дерева исходных текстов без обязательства, которое VIM создает из способа, которым оновыбирает имена файлов при установке опции undodir?

Или есть лучший способ выполнить то, что я хочу, - просто использовать зависящие от проекта файлы, не зависящие от местоположения, которые не нарушаютпрезентация моего дерева исходников при сохранении их в репо?

1 Ответ

0 голосов
/ 28 сентября 2018

Я настоятельно рекомендую использовать Git (частные ветки, тайники или что-то в этом роде - Git очень любезен здесь), чтобы иметь возможность "вернуться и настроить мои коммиты"?Это будет иметь гораздо больше смысла для меня;Я вижу отмену как кратковременную и эфемерную, а Git как долгосрочную и постоянную.

Я уже прокомментировал это, и после вашего подтверждения я думаю, что нашел то, что, по крайней мере для меня, составило быa shoptopper: Отмена Vim отслеживает все изменения без возможности редактировать эти .Теперь представьте, что вы случайно вставили пароль, или токен доступа, или URL-адрес веб-сайта для взрослых в Vim (я делаю это все время - случайное вставление, то есть) , немедленно отмените это, но это все равнобыть доступным через вашу постоянную отмену (поскольку Vim хранит не только последовательную историю, но и полные ветви).Вам придется явно очистить историю отмены (:set ul=-1) или надеяться, что произойдет достаточное (по умолчанию 1000) дальнейшее редактирование, чтобы изменения были исключены из истории до их фиксации.

После подтвержденияGit (и отправленный в общедоступное место, такое как GitHub ), изменения в основном являются публичной записью, от которой трудно, если не невозможно, избавиться снова.Хотя вероятность реальной «атаки» против вас невелика, я бы не стал использовать такой процесс.

Альтернативы

Если вы не хотите хранить свои промежуточные изменения как артефакты Git,Есть другие возможности для хранения определенных версий в течение некоторого времени.Например, мой плагин writebackup предоставляет облегченную систему управления версиями, которая вообще не мешает Git (вы можете хранить резервные копии вне рабочей копии, или игнорировать git файлы резервных копий или выделенный каталог резервных копий, который собираетвсе резервные копии из рабочей копии).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...