Как автоматически нажать после совершения в git?



Как настроить Git для автоматического нажатия на удаленное РЕПО (включая автоматическое предоставление моей парольной фразы) после каждой фиксации в локальном РЕПО?

658   5  

5 ответов:

во-первых, убедитесь, что вы можете нажать вручную без ввода пароля. Если вы нажимаете на HTTP или HTTPS, это будет случай либо создание .netrc файл с логином или добавление имени пользователя и пароля в URL для удаленного. Если вы используете SSH, вы можете либо создать пару ключей, где закрытый ключ не имеет пароля, либо использовать ssh-agent кэш ваш закрытый ключ.

затем вы должны создайте исполняемый файл (chmod +x файл) в .git/hooks/post-commit, который содержит следующее:

#!/bin/sh
git push origin master

... настройка этой строки, Если вы хотите нажать на пульт, отличный от origin, или нажмите ветку, отличную от master. Убедитесь, что вы делаете этот файл исполняемым.

Если вы начинаете использовать больше, чем основная ветвь, вы можете автоматически нажать текущую ветвь. Мой крюк (.git/hooks/post-commit) выглядит так:

#!/usr/bin/env bash

branch_name=`git symbolic-ref --short HEAD` 
retcode=$?
non_push_suffix="_local"


# Only push if branch_name was found (my be empty if in detached head state)
if [ $retcode = 0 ] ; then
    #Only push if branch_name does not end with the non-push suffix
    if [[ $branch_name != *$non_push_suffix ]] ; then
        echo
        echo "**** Pushing current branch $branch_name to origin [i4h_mobiles post-commit hook]"
        echo
        git push origin $branch_name;
    fi
fi

он толкает текущую ветвь, если он может определить имя ветви с помощью Git symbolic-ref.

"как получить текущее название филиала в Git? " имеет дело с этим и другими способами, чтобы получить текущее название филиала.

автоматический толчок для каждой ветви может быть тревожным при работе в задаче ветви, где вы ожидаете некоторые колбасу делать случиться (вы не сможете легко перебазировать после нажатия). Таким образом, крючок не будет толкать ветви, которые заканчиваются определенным суффиксом (в Примере "_local").

создайте файл с именем "post-commit".каталог git/hooks с содержимым "git push", хотя если вы хотите автоматически предоставить пароль, поэтому потребуется модификация.

этой git-autopush скрипт позволяет настроить крюк после фиксации, подобный тому, что было рекомендовано в "как настроить автоматическое толкая?".
Но для парольной фразы, вам нужно запустить ssh-agent.

вот простая инструкция для нажатия / вытягивания без предоставления парольной фразы через ssh для людей, использующих Linux и Windows (git bash)

на ваш клиент:

  1. проверьте, если у вас есть SSH-ключи генерируются:

    $ ls ~/.ssh/id_rsa.pub; ls ~/.ssh/id_dsa.pub
    /c/Users/Cermo/.ssh/id_rsa.pub  <-- I have RSA key
    ls: cannot access '/c/Users/Cermo/.ssh/id_dsa.pub': No such file or directory
    
  2. Если у вас нет ключа (два "ls: не удается получить доступ ..."линии") генерируют новый. Если у вас есть какие-либо ключи, пропустите этот шаг.

    $ ssh-keygen.exe
    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Users/Cermo/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase): <-- press Enter
    Enter same passphrase again: <-- press Enter
    
  3. скопируйте ключ на удаленный сервер из которого вы хотите вытащить или нажать с помощью git:

    $ ssh-copy-id user_name@server_name
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to 
    filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you 
    are prompted now it is to install the new keys
    user_name@server_name's password:
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'user_name@server_name'"
    and check to make sure that only the key(s) you wanted were added.
    

Примечание: Вы должны предоставить пароль во время этой операции. После этого ваши операции pull/push не будут запрашивать пароль.

примечание 2: вы должны войти на сервер с помощью user_name по крайней мере один раз перед использованием этой процедуры (домашний каталог, в который копируются ключи ssh создается во время первого входа в систему)

Comments

    Ничего не найдено.