2014-09-17 5 views
2

Я пытаюсь сделать псевдоним git, чтобы утверждать запрос (ы) на GitHub. Основной особенностью этого псевдонима является способность к совпадению многократных запросов на ось осьминогов.Упростить выражение Xargs в псевдониме git

То, что я получил до сих пор (.gitconfig):

[alias] 
    approve = "!f() { git fetch origin $(echo [email protected] | xargs -n 1 | xargs -I {} echo refs/pull/{}/head:gh-{}) && git merge $(echo [email protected] | xargs -n 1 | xargs -I {} echo gh-{}) --edit --log;}; f" 

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

$(echo [email protected] | xargs -n 1 | xargs -I {} echo refs/pull/{}/head:gh-{}) 

и

$(echo [email protected] | xargs -n 1 | xargs -I {} echo gh-{}) 

$ git approve 1 2 3 # to approve pull requests #1, #2 and #3 

Выход

SHA-1: XXXX 

* Merge branches 'gh-1' and 'gh-2' 

* gh-1: 
    fix 1 

* gh-2: 
    fix 2 

ответ

-1

Если у вас есть GNU Параллельно я думаю, что это будет работать:

approve = "!parallel -X -j1 'git fetch origin refs/pull/{}/head:gh-{} && git merge gh-{} --edit --log' ::: " 

Все новые компьютеры имеют несколько ядер, но большинство программ серийный характер и, следовательно, не использовать несколько ядер. Тем не менее, многие задачи чрезвычайно parallelizeable:

  • Выполнить ту же программу на многих файлах
  • Выполнить ту же самую программу для каждой строки в файле
  • Run та же программа для каждого блока в файле

GNU Parallel - это общий параллелизатор и позволяет легко запускать задания параллельно на одном компьютере или на нескольких компьютерах, к которым у вас есть доступ ssh.

Если у вас есть 32 различных заданий, которые вы хотите работать на 4-х процессоров, прямо вперед способ распараллеливания является выполнение 8 заданий на каждом CPU:

Simple scheduling

GNU Parallel вместо порождает новый процесс, когда один заканчивается - поддержание процессоров активным и тем самым экономя время:

GNU Parallel scheduling

Установка

Личная установка не требует доступа root.Это может быть сделано в течение 10 секунд, делая это:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash 

Для других вариантов установки см http://git.savannah.gnu.org/cgit/parallel.git/tree/README

Подробнее

Другие примеры: http://www.gnu.org/software/parallel/man.html

смотреть интро видео: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Прогулка по t он учебник: http://www.gnu.org/software/parallel/parallel_tutorial.html

Зарегистрируйтесь на список адресов электронной почты, чтобы получить поддержку: https://lists.gnu.org/mailman/listinfo/parallel