Git
Chapters ▾ 2nd Edition

6.3 GitHub - Одржување на проект

Одржување на проект

Сега, кога сме удобно да придонесеме за еден проект, ајде да погледнеме на другата страна: создавање, одржување и администрирање на вашиот сопствен проект.

Креирање на нов складиште

Ајде да создадеме ново складиште со кое ќе го споделиме нашиот проект код. Започнете со кликнување на копчето ‘` Нов репозиторија '’ на десната страна на контролната табла или од копчето + во горната лента со алатки веднаш до вашето корисничко име како што се гледа во << _ new_repo_dropdown >>.

The ``Your repositories'' area.
Figure 105. The “Your repositories” area.
The ``new repository'' dropdown.
Figure 106. The “New repository” dropdown.

Ова ќе ве однесе до формула "нов складиште":

The ``new repository'' form.
Figure 107. The “new repository” form.

Сите што навистина треба да направите тука е да обезбедите име на проектот; остатокот од полињата се целосно опционални. За сега, едноставно кликнете на копчето Креирај репозиториум 'и бум - имате ново складиште на GitHub, наречено <корисничко име> / <име на проект> `.

Бидејќи немате уште уште еден код, GitHub ќе ви покаже инструкции за тоа како да креирате сосема нов Git складиште или да поврзете постоечки проект Git. Ние нема да го објавиме ова тука; ако ви треба освежувач, проверете << ch02-git-basics-chapter >>.

Сега, кога вашиот проект е хостиран на GitHub, можете да го дадете URL-то на секој со кого сакате да го споделите вашиот проект. Секој проект на GitHub е достапен преку HTTPS како https://github.com/ <user> / <project_name> и над SSH како git@github.com: <user> / <project_name>. Git може да преземе од и да им помогнам на двата од овие УРЛ-адреси, но тие се контролирани со пристап врз база на ингеренциите на корисникот што се поврзува со нив.

Note

Често е подобро да се сподели HTTPS базиран URL за јавен проект, бидејќи корисникот не мора да има GitHub сметка за да го пристапи за клонирање. Корисниците ќе мора да имаат сметка и подигнато SSH клуч за пристап до вашиот проект, ако им го дадете SSH URL-то. HTTPS-от е исто така иста URL-адреса што тие ќе ја стават во прелистувачот за да го видат проектот таму.

Додавање на соработници

Ако работите со други луѓе на кои сакате да им дадете пристап за пристап, треба да ги додадете како ‘` соработници '’. Ако Бен, Џеф и Луиз се регистрираат за сметки на GitHub и сакате да им дадете пристап до вашето складиште, можете да ги додадете во вашиот проект. Со тоа ќе им се даде пристап до "push", што значи дека имаат и пристап за читање и запишување на проектот и Git репозиториум.

Кликнете на врската "Поставувања" на дното на десната странична лента.

The repository settings link.
Figure 108. The repository settings link.

Потоа изберете "соработници" од менито на левата страна. Потоа, едноставно внесете корисничко име во полето и кликнете ‘` Додај соработник. ’ Можете да го повторите ова онолку пати колку што сакате да им дадете пристап на сите што ги сакате. Ако треба да го откажете пристапот, само кликнете на `` X ' на десната страна од нивниот ред.

The repository collaborators box.
Figure 109. Repository collaborators.

Управување со барањата за повлекување

Сега кога имате проект со некој код во него, а можеби дури и неколку соработници кои исто така имаат притисни пристап, ајде да преминеме што да правиме кога ќе добиеш Барање за влечење.

Барањата за повлекување или може да дојдат од гранка во вилушка на вашето складиште или тие можат да доаѓаат од друга гранка во истото складиште. Единствената разлика е што оние во вилушка често се од луѓе каде што не можете да им помогнам на нивната гранка и тие не можат да им помогнам на вашите, додека со внатрешните Потребни барања генерално двете страни можат да пристапат до гранката.

За овие примери, да претпоставиме дека сте ‘` tonychacon ’ и сте создале нов Arduino код проект наречен `` избледи '.

Известувања за е-пошта

Некој доаѓа заедно и прави промена на вашиот код и ви испраќа барање за повлекување. Треба да добиете е-мејл за известување за новото барање за повлекување и треба да изгледа нешто како << _ email_pr >>.

Pull Request email notification
Figure 110. Email notification of a new Pull Request.

Има неколку работи што треба да ги забележите за оваа е-пошта. Тоа ќе ви даде мал diffstat - листа на датотеки кои се променија во Потребното барање и колку. Тоа ви дава линк до барањето за повлекување на GitHub. Исто така, ви дава неколку URL-адреси што можете да ги користите од командната линија.

Ако ја забележите линијата која вели git pull <url> patch-1, ова е едноставен начин да се спојат во оддалечена гранка без да мора да додадете далечински управувач. Отидовме брзо ова во << _checking_out_remotes >>. Ако сакате, можете да креирате и префрлите на гранка на тема и потоа стартувајте ја оваа команда за да се спојат во промените на барањето.

Другите интересни URL-и се адресите на ".diff" и ".patch", кои, како што може да претпоставите, обезбедуваат обединети разни и patch верзии на Pull Request. Вие би можеле технички да се спојат во Работата со барање за повлекување со нешто слично:

$ curl http://github.com/tonychacon/fade/pull/1.patch | git am

Соработка на барањето за повлекување

Како што се опфатени во << ch06-github_flow >>, сега можете да разговарате со лицето кое го отворило барањето за влечење. Можете да коментирате за конкретни линии на код, да коментирате за цели обврски или да коментирате за целото барање за повлекување, користејќи го GitHub Flavored Markdown насекаде.

Секој пат кога некој друг ќе коментира за барањето за повлекување ќе продолжи да добива известувања преку e-mail, за да знаете дека се случува активност. Секој од нив ќе има линк до Барањето за повлекување, каде што се случува активноста, а исто така можете директно да одговорите на е-поштата за да коментирате за низата за повлекување.

Email response
Figure 111. Responses to emails are included in the thread.

Откако кодот е на место кое ви се допаѓа и сакате да го вклучите, можете или да го повлечете кодот и да го споите локално, или со синтаксата git pull <url> <branch> што ја видовме претходно, или со додавање на вилушка како далечински и преземање и спојување.

Ако спојувањето е тривијално, исто така можете само да го притиснете копчето ‘Merge '’ на GitHub-страницата. Ова ќе направи "не-брз напред" спојување, создавајќи залог за спојување дури и ако е можно брзо спојување. Ова значи дека без оглед на тоа, секој пат кога ќе го достигнете копчето за спојување, се креира спојување. Како што можете да видите во << _ merge_button >>, GitHub ви ги дава сите овие информации ако кликнете на линкот за навестување.

Merge button
Figure 112. Merge button and instructions for merging a Pull Request manually.

Ако одлучите дека не сакате да го споите, исто така можете само да го затворите барањето за повлекување и да го известите лицето кое го отворило.

Барање за одмаглување

Ако се занимавате со * многу * на Потребни Потврди и не сакате да додадете еден куп од далечински управувачи или да направите едно време да го повлечете секој пат, постои уреден трик што GitHub ви овозможува да го направите. Ова е малку напреден трик и ние ќе ги надминеме деталите за ова малку повеќе во << _refspec >>, но може да биде прилично корисно.

GitHub всушност ги рекламира гранките за повлекување на барањето за складиште како вид на псевдо-филијали на серверот. Стандардно, не ги добивате кога клонирате, но тие се таму на нејасен начин и можете лесно да пристапите до нив.

За да го демонстрираме ова, ние ќе користиме команда на ниско ниво (често нарекувана "водовод", која ќе ја прочитаме повеќе во << _plumbing_porcelain >>), наречена ` ls-remote ". Оваа команда генерално не се користи во секојдневни операции Git, но корисно е да ни покаже кои референци се присутни на серверот.

Ако ја извршуваме оваа команда против "blink" складиштето што го користевме порано, ќе добиеме листа на сите гранки и ознаки и други референци во складиштето.

$ git ls-remote https://github.com/schacon/blink
10d539600d86723087810ec636870a504f4fee4d	HEAD
10d539600d86723087810ec636870a504f4fee4d	refs/heads/master
6a83107c62950be9453aac297bb0193fd743cd6e	refs/pull/1/head
afe83c2d1a70674c9505cc1d8b7d380d5e076ed3	refs/pull/1/merge
3c8d735ee16296c242be7a9742ebfbc2665adec1	refs/pull/2/head
15c9f4f80973a2758462ab2066b6ad9fe8dcf03d	refs/pull/2/merge
a5a7751a33b7e86c5e9bb07b26001bb17d775d1a	refs/pull/4/head
31a45fc257e8433c8d8804e3e848cf61c9d3166c	refs/pull/4/merge

Се разбира, ако сте во вашето складиште и извршувате git ls-remote location или што далечински сакате да проверите, тоа ќе ви покаже нешто слично на ова.

Ако складиштето е на GitHub и имате било какви Отвори за Повлекување кои се отворени, ќе ги добиете овие референци кои се префиксирани со refs / pull /. Тие се во основа гранки, но бидејќи тие не се под refs / heads /, не ги добивате нормално кога клонирате или добивате од серверот - процесот на преземање ги игнорира нормално.

Постојат две референци по Барањето за повлекување - оној што завршува со / head укажува на истата обврска како последната застапеност во гранката Барање за повлекување. Значи, ако некој го отвори Барањето за повлекување во нашето складиште и нивната гранка се нарекува bug-fix и посочува да се изврши` a5a775`, тогаш во * нашето * складиште нема да имаме branch fix филијала (бидејќи тоа е во нивната вилушка), но ние ќе имаме pull / <pr #> / head што укажува на` a5a775`. Ова значи дека ние лесно можеме да ја повлечеме секоја филијала за повлекување на повик во една оди, без да мора да додадеме кутија од далечински управувачи.

Сега, можете да направите нешто како преземање на референцата директно.

$ git fetch origin refs/pull/958/head
From https://github.com/libgit2/libgit2
 * branch            refs/pull/958/head -> FETCH_HEAD

Ова му кажува на Git, "Поврзете се со далечинскиот управувач" и повлечете го реф код наречен "refs / pull / 958 / head". ' Git среќно се послужува и презема сè што ви е потребно за да го конструирате тој рефлектира и поставува покажувач кон саканата заложба под .git / FETCH_HEAD. Можете да го следите тоа со git спојување FETCH_HEAD во гранка што сакате да ја тестирате, но таа порака за спојување изгледа малку чудно. Исто така, ако разгледувате * многу * на барања за повлекување, ова станува досадно.

Исто така, постои начин да се донесат all на барањата за повлекување, и да ги задржите во тек со секое поврзување со далечинскиот управувач. Отворете .git / config во вашиот омилен уредувач и побарајте го далечинскиот управувач` потекло`. Треба да изгледа малку вака:

[remote "origin"]
    url = https://github.com/libgit2/libgit2
    fetch = +refs/heads/*:refs/remotes/origin/*

Таа линија што започнува со fetch = е ‘` refspec. '’ Тоа е начин на мапирање имиња на далечинскиот управувач со имиња во вашиот локален .git именик. Ова особено кажува Git, "работите на далечинскиот управувач што се наоѓаат под" refs / heads "треба да одат во моето локално складиште под" refs / remotes / origin "." Можете да го промените овој дел за да додадете уште еден рефлекс:

[remote "origin"]
    url = https://github.com/libgit2/libgit2.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

Последната линија му кажува на Git, ‘` Сите рефлекти кои изгледаат како refs / pull / 123 / head треба да се складираат локално како` refs / remotes / origin / pr / 123`. '’ Сега, ако ја зачувате таа датотека и направете git fetch:

$ git fetch
# …
 * [new ref]         refs/pull/1/head -> origin/pr/1
 * [new ref]         refs/pull/2/head -> origin/pr/2
 * [new ref]         refs/pull/4/head -> origin/pr/4
# …

Сега сите барања за далечинско повлекување се претставени локално со рефлекти кои делуваат како проследени гранки; тие се само за читање, и тие се ажурираат кога ќе направите донеси. Ова го прави супер лесно да се обиде кодот од барање за повлекување на локално ниво:

$ git checkout pr/2
Checking out files: 100% (3769/3769), done.
Branch pr/2 set up to track remote branch pr/2 from origin.
Switched to a new branch 'pr/2'

На орел очи меѓу вас ќе се забележи на "главата" на крајот на далечинскиот дел од refspec. Исто така има и "refs / pull / # / merge" ref на GitHub страна, што претставува залог што ќе резултира ако го притиснете копчето ‘` спојување '’ на страницата. Ова може да ви овозможи да го тестирате спојувањето пред да го притиснете копчето.

Повлечете Барања за Повлекување Барања

Не само што може да ги отворите барањата за повлекување кои се насочени кон главната или майстер филијалата, всушност можете да отворите барање за повлекување насочено кон било која гранка во мрежата. Всушност, можете дури и да наведете друго барање за повлекување.

Ако видите Барање за влечење кое се движи во вистинската насока и имате идеја за промена која зависи од неа или не сте сигурни дека е добра идеја или едноставно немате пристап до тастатурата до целните гранки, можете директно да го отворите барањето за повлекување.

Кога одите за да отворите барање за повлекување, има кутија на врвот на страницата која одредува која гранка барате да се повлече и од која барате да се повлечете. Ако го притиснете копчето ‘` Измени '’ десно од тоа поле, можете да ги промените не само гранките, туку и која вилушка.

PR targets
Figure 113. Manually change the Pull Request target fork and branch.

Овде можете прилично лесно да одредите за да ја споите вашата нова гранка во друго барање за повлекување или друга вилушка на проектот.

Цели и известувања

GitHub, исто така, има прилично убав систем за известувања изграден во тоа што може да ни се најде кога имате прашања или ви требаат повратни информации од одредени поединци или тимови.

Во секој коментар можете да почнете да пишувате знак @ и ќе започне автоматски да се заврши со имињата и корисничките имиња на луѓе кои се соработници или соработници во проектот.

Mentions
Figure 114. Start typing @ to mention someone.

Можете исто така да споменете корисник кој не е во тоа паѓачко мени, но често автокомплетирот може да го направи побрз.

Откако ќе го објавите коментар со корисничко име, тој корисник ќе биде известен. Ова значи дека ова може да биде навистина ефикасен начин за повлекување на луѓето во разговорите, наместо да ги прави анкетите. Многу често во барањата за повлекување на GitHub луѓето ќе се повлечат во други луѓе во нивните тимови или во нивната компанија за да ги разгледаат прашањата за издавање или повлекување.

Ако некој се споменува на барање за повлекување или проблем, тие ќе бидат "претплатени" на него и ќе продолжат да добиваат известувања секогаш кога ќе се случи некоја активност на неа. Исто така, ќе се претплатите на нешто ако сте го отвориле, ако го гледате складиштето или ако коментирате за нешто. Доколку повеќе не сакате да добивате известувања, на копчето "Отпишување" на страницата можете да кликнете за да престанете да добивате ажурирања на неа.

Unsubscribe
Figure 115. Unsubscribe from an Issue or Pull Request.

Страница за известувања

Кога ги споменуваме "известувањата" тука во однос на GitHub, ние подразбираме специфичен начин на кој GitHub се обидува да стапи во контакт со вас кога се случуваат настани и постојат неколку различни начини на кои можете да ги конфигурирате. Ако одите во табулаторот "Известување центар" од страницата со поставки, можете да видите некои од опциите кои ги имате.

Notification center
Figure 116. Notification center options.

Двата избори се да добијат известувања преку "Email" и над "Веб" и можете да изберете или, ниту за двете, кога активно учествувате во нештата и за активностите во складиштата што ги гледате.

Веб известувања

Веб известувањата постојат само на GitHub и можете да ги проверите само на GitHub. Ако ја изберете оваа опција во вашите претпочитани поставки и ќе се активира известување за вас, ќе видите мала сина точка над вашата икона за известувања на врвот на вашиот екран како што се гледа во << _ not_center >>.

Notification center
Figure 117. Notification center.

Ако кликнете на тоа, ќе видите листа на сите предмети за кои сте известувани, групирани според проект. Можете да филтрирате за известувања за одреден проект со кликнување на неговото име во левата страна лента. Можете исто така да го потврдите известувањето со кликање на иконата за знаци покрај известувањето или потврдување на сите известувања во проект со кликнување на белешка на врвот на групата. Исто така, постои копче за неми веднаш до секоја ознака за проверка која можете да кликнете за да не примате дополнителни известувања за таа ставка.

Сите овие алатки се многу корисни за ракување со голем број на известувања. Многу корисници на енергија од GitHub едноставно ќе ги исклучат известувањата за е-пошта и ќе управуваат со сите нивни известувања преку овој екран.

Известувања за е-пошта

Е-пошта известувања се на друг начин со кој можете да се справите со известувања преку GitHub. Ако го вклучите ова, ќе добивате е-пораки за секое известување. Видовме пример за тоа во << _ email_notification >> и << _ email_pr >>. Е-пораките, исто така, ќе бидат наведуваат правилно, што е убаво ако користите е-пошта клиент.

Постои, исто така, фер износ на метаподатоци вградени во насловите на пораките што ги испраќа GitHub, што може навистина да биде корисно за поставување на сопствени филтри и правила.

На пример, ако ги погледнеме актуелните заглавија на е-пошта испратени до Тони во е-поштата прикажана во << _ email_pr >>, меѓу испратените информации ќе ги видиме следните:

To: tonychacon/fade <fade@noreply.github.com>
Message-ID: <tonychacon/fade/pull/1@github.com>
Subject: [fade] Wait longer to see the dimming effect better (#1)
X-GitHub-Recipient: tonychacon
List-ID: tonychacon/fade <fade.tonychacon.github.com>
List-Archive: https://github.com/tonychacon/fade
List-Post: <mailto:reply+i-4XXX@reply.github.com>
List-Unsubscribe: <mailto:unsub+i-XXX@reply.github.com>,...
X-GitHub-Recipient-Address: tchacon@example.com

Тука има неколку интересни работи. Ако сакате да ги означите или пренасочите е-пораките до овој конкретен проект или дури и барањето за повлекување, информациите во Message-ID ви ги даваат сите податоци во` <user> / <project> / <type> / <id> формат. Ако ова беше проблем, на пример, полето <тип> би било ‘` прашања ’, наместо `` повлече '.

Полињата List-Post и` List-Unsubscribe` значи дека ако имате клиент-пошта што ги разбира тие, можете лесно да објавувате во листата или "Отпиши" од низата. Тоа би било во суштина исто како и кликнувањето на копчето ‘` неми ’ на веб-верзијата на известувањето или ,, Отпишување ' на самата страница за издавање или потпишување.

Исто така вреди да се напомене дека ако имате овозможено и е-мејл и веб известувања и ја читате верзијата за е-пошта на известувањето, веб-верзијата ќе биде означена и како прочитана, ако имате слики дозволени во вашиот клиент за пошта.