Я академик, и я люблю писать как можно больше в Emacs. Ключевой вещью, которая мне не хватает, является возможность легко просматривать изменения, которые я внес в текстовый файл с течением времени.
Функции отслеживания в статьях Википедии или Документах Google совпадают с тем, что я ищу. Я играл с системами контроля версий, такими как git, потому что они, похоже, хорошо поддерживаются Emacs, но я нашел их сложными в использовании и гораздо более сложными, чем мне нужно. Регистрация репозиториев, проверка и выход, все это было просто хлопотно.
Я не думаю, что есть какие-либо пакеты, которые предоставляют функциональность, которую я ищу, относительно дружественным способом?
version-control
writing
Брайан З
источник
источник
git
иmagit
- github.com/magit/magit - так как вы уже немного поиграли с ним. Возможно, вы захотите ознакомиться с параметрами командной строки, чтобы лучше понять, чтоmagit
происходит. Emacs не для не-кодеров, но вы достаточно долго были на сцене, чтобы не бояться этого - :) Вы также можете попробовать поиграть сgist
: github.com/defunkt/gist.elvc-
группы команд является упрощение процесса использования VCS. К сожалению, они не настолько интуитивны, чтобы позволить пользователям без опыта эффективно их использовать. С другой стороны, системы, подобные тем, о которых вы упомянули, очень ограничены, так что можно быстро разработать требования, которые они не могут удовлетворить. gnu.org/software/emacs/manual/html_node/emacs/… Существует упрощенный механизм хранения резервных копий, но из-за вышеизложенного я бы лучше рекомендовал научиться использовать некоторые VCS вместо этого.git
/magit
для контроля версий моих работ. Это выглядит пугающе для начала, но а) вам не нужно учить все сразу, и б) им приятно пользоваться после прохождения начальной кривой обучения. Хороший рабочий процесс также помогает вам дисциплинировать свои письменные задачи, поскольку он побуждает вас комментировать то, что вы делаете, - это отличный способ получить график развития письменного проекта.Ответы:
Проблема с существующими системами контроля версий заключается не столько в их сложности; дело в том, что информации так много, что новичкам может быть очень трудно увидеть лес за деревьями (т. е. понять, что они делают, и им не нужно учиться, когда они только начинают ).
В этом посте
git
речь пойдет о том , как управлять им из Emacs с помощью дополнительного пакета, называемогоmagit
. Да ,git
это сложно, но вам не нужно многому учиться, чтобы использовать его продуктивно для целей, которые вы описываете.Я собираюсь предположить, что вы
git
установили (если вы этого не сделаете, получите его здесь ), и что вы вообще не хотите покидать Emacs.Установка
magit
magit
этоgit
интерфейс для Emacs. Он доступен в MELPA, и вы можете установить его через:M-x
package-install
RETmagit
RETЕсли вы не включили MELPA в своей конфигурации, вы можете найти инструкции о том, как это сделать, здесь .
Настройка репозитория
Допустим,
~/writing
в вашем домашнем каталоге есть папка с одним или несколькими документами, которые вы хотите поместить под контроль версий.~/writing
RETshell
RETgit init
и нажмите RET.Вот и все. Теперь у вас есть
git
хранилище. Нет необходимости «регистрировать» его где-либо.git
является распределенной системой контроля версий; для отслеживания изменений не требуется удаленный сервер.Проверка состояния вашего репозитория
magit-status
RET.Вы можете думать о буфере, который появляется как ваша «панель управления» для работы с вашим репозиторием. Для нового хранилища это выглядит примерно так:
Вы можете перемещаться между различными разделами этого буфера, используя n(
magit-goto-next-section
) и p(magit-goto-previous-section
).Вы можете обновить буфер, нажав g(
magit-refresh
).Обратите внимание, что вы можете вызвать буфер состояния из любого файла или каталога, принадлежащего ранее настроенному вами хранилищу.
Добавление файлов
Как вы можете видеть на скриншоте, в хранилище есть три файла, которые
git
в настоящее время не отслеживаются. Для того, чтобы сказать ,git
чтобы начать отслеживать файл, вы должны поставить его: С точкой на файл , который вы хотите добавить, нажмите s. Буфер состояния будет выглядеть так:совершение
Поместив один или несколько файлов, вы можете зафиксировать их, нажав c c. Это вызовет буфер, который выглядит следующим образом:
Введите ваше сообщение о коммите вверху и затем нажмите, C-c C-cчтобы завершить коммит. (Чтобы прервать, нажмите C-c C-k.)
Буфер состояния будет выглядеть так:
Постановочные изменения
Если вы внесете изменения в отслеживаемый файл, они будут перечислены в отдельном разделе («Неустановленные изменения») в буфере состояния:
Чтобы просмотреть изменения, внесенные в файл, перейдите к строке, которая говорит,
Modified file-1.txt
и нажмите TAB:Чтобы внести эти изменения, нажмите s:
Просмотр последних коммитов
Наконец, если вы хотите просмотреть прошлые коммиты, вы можете нажать l l(это две строчные буквы L):
Как обычно, вы можете перемещаться по буферу, который подходит nи p. Magit покажет изменения, связанные с отдельными коммитами, перечисленными в этом буфере, в отдельном окне.
Резюме
Из оболочки:
git init
: Инициализироватьgit
репозиторий в текущем каталогеИз любого файла или каталога, связанного с
git
хранилищем:magit-status
RETИз буфера состояния:
s добавлять новые файлы или сценические изменения
c c совершать поэтапные изменения
Вот и все. :)
источник
git init
из оболочки. Если вы позвонитеM-x magit-status
куда-нибудь за пределы любого git-репозитория, он предложит его создать. (Но вам нужно будет вызвать его снова, чтобы вызвать буфер состояния после того, как вы закончили настройку).magit-diff-refine-hunk
чтобы получить желаемое поведение. Добавьте(setq magit-diff-refine-hunk t)
или(setq magit-diff-refine-hunk 'all)
в ваш init-файл. Вы можете сделать,C-h v
magit-diff-refine-hunk
RET
чтобы получить больше информации о том, что означают различные настройки.В дополнение к
magit
(как наглядно демонстрирует ответ @ itsjeyd), вы также можете попробоватьgit-timemachine
, что предоставляет средства для быстрого циклического просмотра старых версий файла подgit
управлением версиями. Согласно странице github, следующие комбинации клавиш по умолчанию дают вам представление о том, что вы можете сделать:p
Посетите предыдущую историческую версиюn
Посетите следующую историческую версиюw
Скопируйте сокращенный хеш текущей исторической версииW
Скопируйте полный хеш текущей исторической версииq
Выходите из машины времени.источник
Я подозреваю, что вы найдете режим резервного копирования и / или Backup Walker очень интересным.
Оба стремятся использовать существующие механизмы резервного копирования в Emacs и обеспечивают лучший доступ к истории файлов и ее видимость, не требуя дополнительной VCS.
источник
Как было упомянуто, простой способ иметь разные версии файла - это система резервного копирования Emacs.
При этом будет использоваться специальный каталог для пронумерованных резервных копий, который никогда не будет автоматически удален. Затем вы можете использовать C-u C-x C-sдля создания другой версии в любое время.
Хотя, я думаю, нет простого, готового к использованию интерфейса, например, для демонстрации этих версий. Поэтому вам придется вручную открыть одну или две из этих резервных копий и использовать
ediff-buffers
их и / или исходный буфер.источник
m
точкой перемещения в другом файле и нажмите=
).У меня еще не было возможности использовать это решение, но вы также можете рассмотреть флеш-пирог Кори Доктороу и Томаса Гидеона . Вот что Доктороу должен сказать по этому поводу :
При этом у меня никогда не было возможности проверить это, так как я закончил писать много вещей в режиме org, и много программировал, и ... ну ... я вроде стал лучше пользоваться
magit
, и в конце концов, я просто ... не нуждался в этом.В любом случае, это решение было нацелено на авторов, работающих над нетехническими проектами. Вы можете обнаружить, что это может соответствовать вашим требованиям.
источник
Хотя это абсолютно не связано
emacs
, вы все равно можете сохранять свои текстовые файлы в Dropbox, а если вы являетесь профессиональным пользователем, вы можете использовать расширенную историю версий . (Если вы хотите шифрование, вы можете посмотреть на SparkleShare .)Тогда есть flashbake, который немного автоматизирован ( вот учебник ).
Также он просил в другом месте тоже , для которых ответы могут оказаться полезными.
источник
Вы можете использовать Dropbox. Это делает версию вашего файла пересматриваемой каждый раз, когда вы нажимаете Cx Cs. Для шифрования моих текстовых файлов я использую GNU Privacy Guard, он поддерживается Emacs.
источник