предложения по использованию PATH для исполняемых файлов с контролем версий (Mercurial)

Итак, я новичок в управлении версиями, но я пытаюсь использовать Mercurial на своем Mac, чтобы организовать большую программу анализа данных Python. Обычно я клонирую свой основной репозиторий, немного подправляю код клона и запускаю код на своих данных. Если изменения были успешными, я фиксирую и в конечном итоге отправляю изменения обратно в свой основной репозиторий. Я предполагаю, что это довольно типичный рабочий процесс с контролем версий.

Моя проблема в том, что мой код запускается в командной строке с несколькими аргументами командной строки, которые ссылаются на файлы данных в текущем рабочем каталоге (и у меня есть много таких каталогов, в которых мне нужно протестировать код, и они вне контроля версий). Поэтому перед использованием Mercurial я просто хранил свой код в одном каталоге ~/bin, который был частью моей переменной окружения PATH. Теперь, с контролем версий, мне нужно либо (1) после каждого редактирования копировать исполняемые файлы моего текущего клона в каталог ~/bin перед запуском кода в командной строке, либо (2) каждый раз, когда я клонирую свой код, добавлять свой путь текущего клона к PATH, или (3) указывать весь/путь/к/моим/программам в командной строке каждый раз, когда я запускаю код. Ни один из них не очень удобен, и у меня осталось ощущение, что должно быть элегантное решение, которого я просто не знаю. Может быть, что-то связанное с хуками Mercurial? Я хочу, чтобы мой недоработанный код можно было запускать в командной строке между фиксациями, поэтому это, казалось, исключало хуки, но я не знаю... Большое спасибо за любые предложения!


person wgrover    schedule 13.11.2009    source источник


Ответы (2)


Ответ Ry4an хорош, если вы хотите продолжить рабочий процесс с несколькими клонами. Но также стоит знать, что Mercurial достаточно мощен, чтобы предоставить вам большинство преимуществ этого рабочего процесса, даже не выходя из вашего единственного «основного» репозитория. т.е. вы можете создавать ветки (именованные или анонимные) для экспериментальных функций, легко «обновлять hg» до любой версии кода, которую вы хотите протестировать, даже использовать расширение mq для обрезки веток, которые не сработали.

person Carl Meyer    schedule 14.11.2009
comment
Спасибо, Карл, я не оценил разницы между ветвлением и клонированием. Если кто-то еще находится на том же месте в процессе изучения Mercurial, вот хорошее сравнение различных способов ветвления кода: stevelosh.com/blog/entry/2009/8/30/ Я думаю, что ветвление с именованными ветвями лучше всего подходит для моего рабочий процесс - единственный рабочий каталог может быть в моем PATH; различные итерации кода, которые я тестирую, получают имена, чтобы держать меня в порядке, и я могу hg обновить все, что захочу, и обрезать мои ошибки с помощью mq, как вы предлагаете. Спасибо еще раз! - person wgrover; 17.11.2009

Что я делаю в таком случае, так это устанавливаю две глубокие цепочки символических ссылок на мой двоичный файл в моем текущем клоне. Например, у меня будет:

/usr/bin/myappname

который является символической ссылкой на

/home/me/repos/CURRENT/bin/myappname

где /home/me/repos/CURRENT — символическая ссылка на мой текущий рабочий клон, например:

/home/me/repos/myproject-expirment

После настройки начальной символической ссылки /usr/bin/myappname все, что мне нужно сделать, это обновить ТЕКУЩУЮ символическую ссылку, когда я создаю новый клон, над которым я работаю.

person Ry4an Brase    schedule 13.11.2009
comment
Спасибо, Ry4an, символические ссылки не пришли мне в голову, но они определенно были бы лучше, чем то, что я делаю сейчас (копирование текущих двоичных файлов в мой каталог bin). - person wgrover; 17.11.2009