Git

Nesta página iremos descrever de forma muito sucinta o uso de repositórios Git e a forma de os usar no Visual Studio Code. Para mais informações sobre este tema existem na Internet diversos tutoriais quer sob a forma de páginas Web, quer sob a forma de vídeos YouTube.

Uma das utilidades do uso do Git é poder partilhar o código fonte dos vossos projetos MicroPython. Surge no entanto a questão de se uma simples pasta partilhada Dropbox ou afim não resolveria o mesmo problema.

Na verdade, os repositórios git não só incluem outras funcionalidades não disponíveis nesse género de “servidores de partilha de ficheiros” como também estão em geral integradas no próprio VSCode o que facilita o seu uso.

GitHub

Para que o uso de repositórios git não se limite a um computador será preciso escolher um servidor de que o GitHub é o mais comum. Será pois necessário criar uma conta no GitHub e tomar nota do username e password pois serão usadas mais tarde.

Instalação do git

Para que o git seja usado no nosso computador é necessário instalar esse software que no caso do Windows pode ser obtido aqui.

Após a instalação será necessário executar numa janela de comando (no windows cmd ou powershell) os seguintes comandos para definir o user e email:

git config --global user.name Helio
git config --global user.email [email protected]

Criação dum projeto Micropython no VSCode

Para criar, por exemplo o projeto newproj, no VSCode será preciso numa janela de comando (terminal) ir até à pasta do workspace (que contem todos os projetos que temos criado) e executar o comando:

micropy init newproj

Segue-se a escolha de todas as opções indicadas (carregando na tecla i seguida de Enter em ambos os casos) e finalmente adicionar a pasta do projeto clicando na opção “Add Folder”.

De notar que é feita uma tentativa de contacto com o ESP32 pela rede (no IP 192.168.4.1) que não é bem sucedida pois no nosso caso a ligação é feita pela porta série (por exemplo COM6), pelo que há que alterar o ficheiro pymakr.conf, mais concretamente as seguintes duas linhas:

"address": "COM6",
(...)
"open_on_start": false,

Caso a consola Pymakr (na barra inferior do VSCode) seja dada como inativa (se as palavras “Pymakr Console” forem precedidas dum X) é preciso clicar nelas para que apareça antes um “visto”.

Note-se que é através da consola Pymakr que temos acesso ao REPL MicroPython, assim como aos print que realizamos nos nossos programas, sendo ainda por aí que podem ser introduzidos valores para instruções Python como o input.

Um bug associado à extensão PyMakr é o facto das respetivas consolas (Pymakr console) irem-se acumulando na lista de terminais (não havendo forma de as encerrar clicando na “lata do lixo”: Kill terminal). Este problema pode ser contornado indo ao menu View, escolher Command Palette…, procurar o comando “Developer: Reload Window” e executá-lo.

Criação dum repositório local

Uma vez criado um projeto MicroPython no VSCode (neste exemplo designado de newproj) a criação do respetivo repositório git faz-se clicando no icon “Source Control” (terceiro icon presente na toolbar da esquerda) e aí carregar no botão “Initialize Repository”.

Será pedido a pasta onde queremos colocar o repositório que em geral será a própria pasta do projeto. Aí será criada uma pasta escondida .git que guardará todos os ficheiros necessários.

De notar nesta fase que grande parte dos ficheiros que compõem o nosso projeto ficam assinalados com a letra U (Update) indicando que ainda não fazem parte do repositório.

Para que isso aconteça é necessário selecioná-los individualmente ou de forma coletiva carregando nos sinais + adequados para o efeito. Isso altera o estado dos ficheiros para A (Added).

A razão de alguns ficheiros/pastas não ficarem marcadas com o U prende-se com a existência dum ficheiro chamado .gitignore que indica todos os que devem ser ignorados em matéria da criação do repositório. Se abrirmos esse ficheiro vemos por exemplo que no seu final existe a indicação de que a pasta .micropy e parte do conteúdo da pasta .vscode devem ser ignorados. Isto deverá incluir ficheiros/pastas que não necessitam de ser incluídos no repositório (o que o torna menos “pesado”) porque podem ser depois criadas de forma automática como veremos mais tarde.

Os ficheiros com o A ainda não se encontram guardados no repositório, para tal é preciso ainda preencher uma mensagem que deverá ser descritiva das alterações que vamos guardar, e clicar no Enter.

Voltando ao “Explorer” (primeiro icon da toolbar da esquerda) é possível fazer novas alterações que serão de novo marcadas com as letras (U – novo ficheiro, M – ficheiro modificado, etc.)

Criação dum repositório no GitHub

Para criarmos no GitHub espaço para o nosso repositório git começamos por clicar no botão New dentro da aba Repositories, seguido da escolha do “Repository name” que poderá ser o mesmo nome do projeto.

Sugere-se a escolha da opção “Private” para que só o seu autor possa ter acesso, e finalmente carrega-se no botão “Create repository”.

Surge então numa nova página uma série de informações sendo a principal o link para o repositório que deve ser copiada: https://github.com/<user>/newproj.git

Regressando ao VSCode vamos informar da existência do repositório remoto GitHub. Para isso vamos no menu escolher View, depois Command Palette… e procurar o comando Git: Add Remote, que uma vez selecionado pede o nome do repositório (por exemplo GitHub) e o respetivo link (anteriormente copiado).

Está na hora de transferir o repositório local para o GitHub. Para isso iremos de novo ao “Source Control” e aí carregamos nas reticências (…), escolhendo o comando “Push to…” seguido do nome do repositório remoto criado no passo anterior. Aqui num primeiro acesso serão pedidos os dados de acesso ao seu GitHub que podem contudo ser guardados para que no futuro este preenchimento seja dispensado.

Se na página GitHub dizermos agora um “Refresh” veremos finalmente os ficheiros e pastas do nosso projeto.

Clonagem dum repositório

Para fazer o processo inverso (criar um projeto a partir dum repositório GitHub) só teremos que em vez de clicar no botão “Add Folder”, escolher antes “Clone Repository” sendo-nos perguntado qual o respetivo link assim como a localização pretendida para ele no nosso computador (por exemplo a pasta workspace que temos vindo a usar nos nossos projetos MicroPython).

No final será dada a possibilidade de abrir de imediato esse projeto no nosso workspace escolhendo a opção “Add to workspace”

Nesta altura pode surgir um aviso, indicando se pretendemos ativar o pylint (devido a presença do ficheiro .pylintrc a que nós deveremos responder, clicando no botão “Enable pylint”

De notar que a pasta .micropy não está presente (sendo ela necessária para ter acesso às funcionalidades IntelliSense no MicroPython). Mas isto pode ser resolvido abrindo uma janela de comando (terminal) na pasta do projeto e escutando o comando:

micropy install

Caso o projeto já esteja associado a um repositório remoto (neste exemplo do GitHub) futuras atualizações do repositório local são efetuadas indo a “Source Control” e nas reticências (…) escolher a opção Pull.

Projeto semáforo e final

Uma das razões desta apresentação dos repositórios git prende-se com a minha intenção em que todos os projetos criados pelos alunos que estejam sujeitos a avaliação sejam efetuados pela partilha do link do respetivo repositório remoto GitHub.

Como em princípio os repositórios devem aí ser criados como “privados” será necessário cada estudante partilhar comigo o seu acesso ago que pode ser realizado na página GitHub do repositório, indo a Settings, depois Manage access, e aí carregar no botão “Invite a collaborator” indicando a minha conta: hsm.feup

A partir desse momento basta que me enviem um email contendo o link para o repositório, pois após a minha aceitação terei acesso ao mesmo!