# ♾ Własna integracja - 2. Przenosimy kody do Github

**URL:** <https://ai-speaker.discourse.group/t/wlasna-integracja-2-przenosimy-kody-do-github/930>\
**Category:** Programowanie\
**Created:** [10 Listopad 2020 17:50 UTC](https://ai-speaker.discourse.group/t/wlasna-integracja-2-przenosimy-kody-do-github/930 "2020-11-10T17:50:04Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Autor:** ![araczkowski](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/araczkowski/32/6_2.png) [@araczkowski](https://ai-speaker.discourse.group/u/araczkowski)\
**Data wpisu:** [10 Listopad 2020 17:50 UTC](https://ai-speaker.discourse.group/t/wlasna-integracja-2-przenosimy-kody-do-github/930/1 "2020-11-10T17:50:04Z")

</div>

## Własna integracja - 2. Przenosimy kody do Github

W tej części pokażemy jak przenieść z bramki kody do repozytorium wersjonowania kodu git. Nasze kody przeniesiemy do Github bo jest za darmo i pozwala na tworzenie dowolnej ilości repozytoriów.  
Ten opis może się przydać nie tylko dla osób które programują ale też dla tych co chcieli by dodać sobie prywatne repozytorium w Github (też można za darmo) i np. wersjonować w nim całą konfigurację z bramki czy zdjęcia robione kamerami itd. W ten sposób można wersjonować pliki z dowolnego folderu.

To jest kontynuacja opisu w jaki sposób dodać własną integrację do Asystenta domowego. Będę bazował na strukturze katalogów które zostały dodane w pierwszej części.

> [@infinity Własna integracja - 1. Struktura katalogów](https://ai-speaker.discourse.group/t/wlasna-integracja-1-struktura-katalogow/917):
>
> Własna integracja Wstęp / teoria To przewodnik dla początkujących w świecie Asystenta domowego programistów. Celem cyklu “Własna integracja” jest wyjaśnienie na przykładzie, w jaki sposób można dodać własną integrację do systemu. Zaczniemy od dodania integracji na własnej bramce, gdy nasza integracja będzie już działała i robiła coś pożytecznego dla innych to przeniesiemy ją do Asystenta domowego. Struktura katalogów Domena - nazwa integracji W systemie Asystent domowy, każda integracja jest …

* * *

#### Dzięki przeniesieniu kodów do Github będziemy mogli edytować je dowolnym edytorem (co jest o wiele prostsze niż edycja w konsoli) i oczywiście będziemy mogli je wersjonować i synchronizować z bramką.

## Zaczynamy:

### 1. Tworzymy nowe repozytorium w Github

jeżeli jeszcze nie mamy to zakładamy konto w serwisie Github:

> **[GitHub · Change is constant. GitHub keeps you ahead.](https://github.com/)**
>
> Join the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.

wybiearmy opcję **New repository** żeby dodać nowe repozytorium:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/c/cfdcc8fe7343a5e344fd6de1ccf68f72377152a7.png)

nazywamy je np. **ais\_hello** wybieramy czy ma być prywatne czy publiczne i naciskamy przycisk **Create repository**

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/8/82f6c7c0dde319e93ad243f7623baf06933eb33d.png)

### Dodanie naszego projektu z kodami z bramki do repozytorium

Po utworzeniu repozytorium Github podpowiada nam jak dodać dodać nasze kody do repozytorium z lini komend.

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/e/ed2d581421c6362d1b39e0a755ec150291b1123c.png)

Wystarczy, że przekleimy komendy do konsoli na bramce. Otwieramy konsole na bramce i przechodzimy od naszego folderu z integracją:

```auto
cd ~/AIS/custom_components/ais_hello/

```

następnie komendy które podpowiada Github:

```auto
echo "# ais_hello" >> README.md
git init
git add .

```

> ⚠ komendą: `git add . ` dodaliśmy wszystkie nasze kody z folderu ~/AIS/custom\_components/ais\_hello/  
> Jeżeli dodałeś publiczne repozytroium to uważaj co do niego w ten sposób dodajesz.

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/9/9e37a349ce6471b587a055a396862aec400dd094.png)

Gdy będziemy chcieli zapisać zmiany:

```auto
git commit -m "first commit"

```

to git zapyta nas o to kim jesteśmy:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/a/a7be9931680b4314dcb414e106fb899ea6efd234.png)

podajemy inroamcje takie jak podaliśmy przy zakładaniu konta w Github, w moim przypadku:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/8/857c3dc6ff35a68fb92ae63d11f0b84a1b5c1698.png)

teraz będziemy mogli kontynuować i dodać pierwszy komit (piewszą wersję naszej aplikacji) z opisem:

```auto
git commit -m "aplikacja w wersji z części piewszej"

```

i pozostałe 2 komendy

```auto
git branch -M main
git push -u origin main

```

w efekcie dostaniemy coś takiego w konsoli:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/3/3943a19f14777f6c1cec4e29efb30b506f448306.png)

i w serwisie Github możemy już zobaczyć nasze kody z bramki:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/9/9482c9ed8654f0c9bd028f5a221d89d30229bbad.png)

### Synchronizowanie zmian pomiędzy bramką a repozytorium kodów

Normalnie teraz repozytorium kodu integracji klonujemy na swój komputer na którym mamy ulubiony edytor do pisania kodu. Pominę ten opis bo tu każdy może mieć inne podejście do tematu.

W ulubionym edytorze kodu wykonujemy kolejną wersję naszej integracji i przesyłamy do repozytorium.  
Ja te zmiany kodu do kolejnej wersji zrobię bezpośrednio w repozytorium Github:

zmianiamy kod

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/a/abbc5f5d8f05421b6ce7c8b6f1a309f4b893baf3.png)

```python
DOMAIN = "ais_hello"

def setup(hass, config):
    
    liczniki = [1, 2, 3]
    for x in liczniki:
        hass.states.set("ais_hello.licznik" + str(x), x*5)

    return True

```

komitujemy ze stosownym komenarzem

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/e/ec3bacb6018195bf8631a751e1b1473b6fa78091.png)

Wracamy do konsoli na bramce, przechodzimy do naszego folderu z integracją i wykonujemy komendę git pull - pobieramy najnowszą wersję programu z repozytorium kodów:

```auto
cd ~/AIS/custom_components/ais_hello/
git pull

```

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/1/153cde45cc7d7b808cf301cdbe5e3d4c32280d0e.png)

restart serwisu ais:

```auto
pm2 restart ais

```

po ponownym uruchomieniu Asystenta możemy zobaczyć już efekt działania naszego nowego programu:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/6/6ca2c79a7f5fd6c524b172863ee643748f385f7d.png)

## Podsumowanie

2 komendy najważniejsze w życiu programisty to:

```auto
git commit -m 'komentarz'
git push

```

Będziemy je dość często używać w kolejnych częściach.  
Dzięki temu żadna linijka nie ginie. Jak ważne są to komendy obrazuje ten rysunek znany z biur firm informatycznych 😉

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/6/67663834387d8dc2c23fe7785e5105bdf7625e99.jpeg)

Jest to oczywiście żart ale wynalezienie git-a przez twórce Linux-a 🙏 jest ogromnym ułatwieniem - mam kilka komputerów i nigdy nie straciłem żadnego pliku (chyba że skasowałem sam).

Wystarczy znać te komendy i można dowolne plik za darmo wersjonować w prywatnym repozytorium.

PS  
Kody Asystenta domowego są dobrze zabezpieczone dla przyszłych pokoleń 🙂

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/a/a3b05a8a2afa7fcf1a2f60a8b2f99a7f48e701da.png)

Github przechowuje kody Asystenta domowego w “Arktycznym archiwum” - to nie żart:  
[https://dailyweb.pl/github-przechowa-dla-przyszlych-pokolen-kod-open-source-w-arktycznym-archiwum/](https://dailyweb.pl/github-przechowa-dla-przyszlych-pokolen-kod-open-source-w-arktycznym-archiwum/)
