Як аўтаматычна ўсталяваць пасля здзяйснення ў гнюса?

Як усталяваць Git аўтаматычна націснуць на выдалены РЭПО (у тым ліку аўтаматычна забяспечваючы маю ключавую фразу) пасля кожнага камітаў мясцовага РЭПО?

60
Які пратакол вы штурхаючы над? Калі гэта запыт пароля, я мяркую, што гэта альбо SSH або HTTP.
дададзена аўтар Mark Longair, крыніца
Акрамя таго, гэта заўсёды карысна з GIT пытанні, па меншай меры, згадаць, што аперацыйная сістэма, якую вы выкарыстоўваеце.
дададзена аўтар Mark Longair, крыніца
Я стаўлю пад сумненне мудрасць такога набору ўверх. Гэта ліквідуе любую магчымасць рэарганізаваць свае змены ў іншы набор фіксацый (перабазавання, асабліва). Я раблю занадта шмат памылак для набору ўверх, як гэта ў канчатковым выніку карысна для мяне.
дададзена аўтар jpmc26, крыніца

5 адказы

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

Затым вы павінны стварыць файл у .git/Гаплікі/пост зафіксаванай , які змяшчае наступнае:

#!/bin/sh
git push origin master

... налады гэтай лініі, калі вы хочаце, каб націснуць на выдалены акрамя паходжання або націснуць галіна, акрамя майстар . Пераканайцеся, што вы робіце, што выкананы файл.

110
дададзена
Не ўдалося зрабіць SSH-агент памятаю фразу, таму давялося зрабіць яго пустым. Спадзяюся, што мая жонка не будзе ўзламаць мой кошт :)
дададзена аўтар ulu, крыніца
мярзотнік штуршок --all паходжання
дададзена аўтар Yada, крыніца
Кажучы пра наладу, што калі я хачу, каб падштурхнуць некаторыя, але не ўсе галіны ў гэтай манеры? Напрыклад, я хачу, каб аўта-штуршок толькі галіны, якія маюць адпаведны аддалены філіял, адзначаны ў .git/канфігурацыях з прэфіксам асаблівасці/х/.
дададзена аўтар A-B-B, крыніца
CHMOD + х .git/гаплікі/пост-здзяйсняюць
дададзена аўтар UnchartedWorks, крыніца

Калі вы пачынаеце выкарыстоўваць больш, чым асноўную галіну, вы можаце аўтаматычна ўсталяваць бягучую галіну. Мой крук ( .git/Гаплікі/пасля фіксацыі ) выглядае наступным чынам:

#!/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? » здзелкі з гэтым і іншымі спосабамі, каб атрымаць бягучае імя галіны.

Аўтаматычны штуршок для кожнай галіны можа быць трывожным пры працы ў філіялах задач, дзе вы чакаеце некаторы вырабу каўбасы адбыцца (вы не зможаце лёгка перабазаваць пасля націску). Такім чынам, крук не будзе штурхаць галіны, якія заканчваюцца з пэўным суфіксам (у прыкладзе «_local»).

Для першай лініі, я павінен быў выкарыстоўваць #!/Bin/ш , каб прымусіць яго працаваць. У адваротным выпадку ён паўтараў: Памылка: не ўдаецца запусціць .git/Гаплікі/пасля фіксацыі: Няма такога файла ці каталога . Дзякуй, мне падабаецца ваша рашэнне лепш.
дададзена аўтар oyalhi, крыніца
Дзякуй за каментар, @oyalhi, я абнавіў прытон лінію ў адказ. Ён павінен порт лепш!
дададзена аўтар i4h, крыніца

Стварыце файл з імем «пасля здзяйснення» ў каталогу .git/гакаў са зместам «гнюса штуршок», хоць, калі вы хочаце, каб аўтаматычна ўвесці пароль, так што спатрэбіцца мадыфікацыя.

8
дададзена
Я зрабіў гэта для вас.
дададзена аўтар ulu, крыніца
Я upvote адказаць калі Я магу.
дададзена аўтар Colin R, крыніца
Пачакайце, што? Колін R цяпер у верхнім 2% :)
дададзена аўтар Post Self, крыніца

Гэта гіт-autopush сцэнар дазваляе наладзіць пасля здзяйснення кручок, падобнае таму, што было рэкамендавана ў « Як наладзіць аўтаматычнае штурхаючы? ».
Але для ключавой фразы, вам трэба запусціць SSH-агент .

Вось простая інструкцыя для штурхання/пацягнуўшы без прадастаўлення ключавой фразы праз SSH для людзей, якія выкарыстоўваюць Linux і Windows (GIT Баш)

На вашым кліенце:

  1. Check out if you have ssh keys generated:

    $ 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. If you don't have any key (two "ls: cannot access ..." lines) generate a new one. If you have any of the keys skip this step.

    $ 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. Copy your key to remote server from which you want to pull or push using git:

    $ ssh-copy-id [email protected]_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
    [email protected]_name's password:
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh '[email protected]_name'"
    and check to make sure that only the key(s) you wanted were added.
    

Заўвага: Вы павінны будзеце прадаставіць пароль падчас гэтай аперацыі. Пасля гэтага вашыя цягнуць/штурхаць аперацыі не будзе запытваць пароль.

Заўвага 2: Вы павінны ўвайсці на сервер з дапамогай user_name па меншай меры адзін раз, перш чым выкарыстоўваць гэтую працэдуру (хатні каталог, у якім ключы SSH капіююцца ствараецца пры першым ўваходзе ў сістэму)

0
дададзена