Может ли кто-нибудь подтолкнуть меня в правильном направлении, чтобы использовать сценарий оболочки или Python для создания сценария, упрощающего передачу ветви bzr на панель запуска?
Процесс сценария будет простым:
cd /directory/to/code
bzr commit - m $comment
bzr push lp:~path/to/code
Вы можете поместить это в сценарий почти так, как есть ...
#!/bin/sh -e
cd /directory/to/code
bzr commit
bzr push
Я намеренно пропустил -m
для bzr commit
. Bazaar запустит сконфигурированный текстовый редактор, в котором вы сможете его ввести, не нужно «просить».
Я также опущен lp:~path/to/code
намеренно. После того, как вы выполните bzr push lp:~path/to/code
один раз вручную, Bazaar запомнит это место, и в следующий раз достаточно будет просто сделать bzr push
.
Дайте мне знать, если вам нужно что-нибудь еще.
Сценарии оболочки довольно просты для запуска. Первая строка должна быть #!/bin/sh
(a shebang - просто скопировать и вставить). Затем поместите одну команду в строку.
Если вы хотите, чтобы сценарий остановился в случае сбоя команды, добавьте строку set -e
в качестве второй строки.
Если вы отлаживаете скрипт и хотите отобразить команды, которые он выполняет непосредственно перед их выполнением, добавьте set -x
во второй строке.
#!/bin/sh
set -e
cd /directory/to/code
bzr commit
bzr push lp:~path/to/code
Лучший способ «попросить коммит» - это открыть редактор, в который вы можете его ввести. Вот что делает bzr commit
.
Сохраните этот файл в каталоге ~/bin
(создайте его, если он не существует) и предоставьте ему разрешения на выполнение (chmod +x ~/bin/push-my-code
в командной строке).
Если вы вызываете этот скрипт из командной строки, то, как правило, вы уже находитесь в правильном каталоге, поэтому вам сначала не понадобится команда cd
. Вместо сценария, в этом случае, вы можете добавить функцию к .bashrc
:
commit-and-push () {
bzr commit &&
bzr push lp:~path/to/code
}
. Затем, набрав commit-and-push
, вы запустите две команды bzr commit
и bzr push
. Знак &&
в конце первой команды означает, что следующая команда не будет выполнена, если первая команда не выполнена (поэтому, если вы заметили, что допустили ошибку при вводе записи в журнал изменений и отменили фиксацию, то ничего не будет выдвинуто) , Если вы всегда нажимаете на одно и то же место, оставьте аргумент в команде push - просто bzr commit
, тогда достаточно bzr push
.