2

У меня есть каталог для моих рабочих файлов, который находится под контролем версий (Mercurial):

~/ MyFiles

В подпути у меня есть каталог с пакетами Emacs для моей настройки режима org:

~/ MyFiles / орг-режим

Как я уже сказал, весь путь находится под контролем версий и поэтому "синхронизируется" с хранилищем Hg. Исходным источником для подкаталога org-mode также является (git) хранилище в Интернете (http://orgmode.org/cgit.cgi/org-mode.git/ ).

Поэтому было бы неплохо иметь возможность извлекать новые версии этого каталога непосредственно из официального репозитория org-mode и затем фиксировать их в моем личном репозитории, чтобы всегда иметь версию, которая работает с моей конфигурацией Emacs.

Для программиста это может быть очень простой вопрос - поскольку я не программист, я не уверен, как с этим справиться, но я предполагаю, что это должно быть распространенной проблемой.

Конечно, я могу сохранить каталог org-mode локально по другому пути и оставить его вне контроля версий, но тогда я не смогу легко восстановить полную рабочую настройку в определенный момент времени.

3 ответа3

1

Звучит так, как будто вы хотите, чтобы орг-режим был подпунктом. И кажется, что git поддерживается в качестве subrepo. В документации ясно, что делать дальше:

echo "http://orgmode.org/cgit.cgi/org-mode.git" >> .hgsub
hg add .hgsub
git clone http://orgmode.org/cgit.cgi/org-mode.git org-mode

Это позволит отслеживать ваши вещи локально и извлекать изменения из orgmode, когда они доступны.

1

Использование hg и git в одном и том же дереве не приводит к конфликту; поскольку эти программы разрабатывались независимо, само собой разумеется, что они не мешают друг другу.

Однако, и в этом случае hg накладывает себя на git (еще один способ убедиться, что репозиторий git зависит от базовой структуры каталога hg ). Таким образом, рассмотрим следующий пример, где у вас уже клонирован режим org и имеется патч, ожидающий извлечения из онлайн-хранилища.

Вот как может выглядеть hg перед тем, как вы извлечете изменения из git:

c:\myfiles> hg log -l 1
changeset:   123:da5f372c3901
tag:         tip
user:        John Doe <john@doe.com>
date:        Fri Jun 13 12:00:00 2014 -0500
summary:     Some change in the work files

Затем вы извлекаете изменения в режиме org из git. Однако здесь важнее всего то, что действие pull не сразу отражается на репозитории hg.

Вы можете проверить, работают ли более новые исправления в режиме org. Если они не работают сразу после установки, вы должны запустить hg revert --all , который восстановит то, как хранилище выглядело во время последнего коммита. Если они работают или вы не обнаружите никаких проблем, вам следует зафиксировать изменение в hg, отражающее, что вы перенесли набор изменений в org-mode.

c:\myfiles> hg com -m "Pulling changes in org-mode"

c:\myfiles> hg log -l 1
changeset:   124:da5f372c3901
tag:         tip
user:        John Doe <john@doe.com>
date:        Fri Jun 13 12:01:00 2014 -0500
summary:     Pulling changes in org-mode

Если git хранит свои метаданные относительно хранилища в папке org-mode (то есть, как hg делает с папкой .hg в корне хранилища), не должно быть проблем с откатом коммита в hg (если случайно после коммита обнаружите, что есть проблема с org-mode):

c:\myfiles> hg rollback
rolling back last transaction

c:\myfiles> hg log -l 1
changeset:   123:da5f372c3901
tag:         tip
user:        John Doe <john@doe.com>
date:        Fri Jun 13 12:01:00 2014 -0500
summary:     Some change in the work files

Кроме того, как указано в моих комментариях, вы можете делать это независимо от того, какое программное обеспечение VCS вы используете. Если у вас есть:

c:\my_repo
c:\my_repo\2nd_repo

Проблем не будет, так как для работы с каждым репозиторием вам придется работать, находясь внутри каталога, в котором вы работаете.

1 - я адаптировал некоторый код отсюда, потому что, как указано, у меня нет большого опыта в этой теме

0

Ваш код зависит от «ветки поставщика». У каждого есть свой репозиторий. Нет проблем. Большинство систем контроля версий позволяют «экспортировать» последний код, то есть без метаданных. Если вы добавите это в свой собственный репозиторий, то столкновения не будет. Маловероятно, что вам нужно фиксировать оба хранилища. Но если вам нужно, вы можете решить это. Поисковый запрос: «филиал продавца»

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