Como utilizar o Git no Github (final)

Pode levar quatro anos para que vulnerabilidades em software de código aberto sejam detectadas
GitHub contabilizou mais de 56 milhões de desenvolvedores na plataforma, com mais de 60 milhões de novos repositórios. Imagem: GitHub.

Para começar esta quarta e última parte do tutorial sobre como utilizar o git no Github vamos fazer um clone do repositório que vimos no passado e depois vamos começar a programar para fazer as mudanças e lançar uma versão estável.

Para clonar o repositório

$ git clone https://github.com/rodrigo-leutz-sempreupdate/media-alunos

Como utilizar o github para checar os branches existentes no repositório.

$ git branch -r

Criando o branch para começar a edição.

$ git checkout -b quote dev

Criando funções para vários alunos

Editando o programa.

$ nano media_alunos.kt

Agora vamos deixar o arquivo media_alunos.kt da seguinte forma.

var alunoList = ArrayList() fun main(){ do { val menu = menu() when(menu) { "1" -> { addAluno() } "2" -> { listAluno() } } } while(menu != "q") } private fun clearscreen(){ print("u001b[Hu001b[2J") } private fun menu(): String? { clearscreen() println("1 --> Adiciona Aluno.") println("2 --> Lista alunos e médias.") println("q --> Sair") val menu = readLine() return menu } private fun addAluno(){ val aluno = readAluno() alunoList.add(aluno) } private fun listAluno(){ if(alunoList.size == 0){ println("Não existem alunos.") } else { println("Lista de alunos e médias.") for(x in 0..alunoList.size-1){ showMedia(alunoList.get(x)) } } readLine() } private fun readAluno(): Aluno { println("Digite o nome do aluno:") val nome = readLine() println("Digite a nota 1:") val n1 = readNota() println("Digite a nota 2:") val n2 = readNota() println("Digite a nota 4:") val n3 = readNota() println("Digite a nota 4:") val n4 = readNota() return Aluno(nome,n1,n2,n3,n4) } private fun showMedia(aluno: Aluno) { val media = (aluno.n1+aluno.n2+aluno.n3+aluno.n4)/4 println("nNome: "+aluno.nome) println("Média: $media") } private fun readNota(): Double { var nota = readLine() try{ nota = nota!!.replace(",",".") val y = nota.toDouble() if(y > 10.0) { println("Nota maior que 10, valor = 10.") return 10.0 } else if(y < 0.0) { println("Nota menor que 0, valor = 0.") return 0.0 } else { return y } } catch(e: NumberFormatException){ println("Não foi digitado um número válido, valor = 0.") return 0.0 } } data class Aluno( var nome: String?, var n1: Double = 0.0, var n2: Double = 0.0, var n3: Double = 0.0, var n4: Double = 0.0 )
ctrl+x e S ou Y para salvar.

Fazendo um novo commit das mudanças.

$ git add media_alunos.kt
$ git commit -m “Adicionado menu para ter vários alunos.”

Criar função de remover alunos

Vamos editar o arquivo novamente e adicionar a função de remover alunos, deixando o código da seguinte forma.

$ nano media_alunos.kt
var alunoList = ArrayList() fun main(){ do { val menu = menu() when(menu) { "1" -> { addAluno() } "2" -> { listAluno() } "3" -> { removeAluno() } } } while(menu != "q") } private fun clearscreen(){ print("u001b[Hu001b[2J") } private fun menu(): String? { clearscreen() println("1 --> Adiciona Aluno.") println("2 --> Lista alunos e médias.") println("3 --> Deleta aluno") println("q --> Sair") val menu = readLine() return menu } private fun addAluno(){ val aluno = readAluno() alunoList.add(aluno) } private fun listAluno(){ if(alunoList.size == 0){ println("Não existem alunos.") } else { println("Lista de alunos e médias.") for(x in 0..alunoList.size-1){ showMedia(alunoList.get(x)) } } readLine() } private fun getIndex(nome: String): Int? { return alunoList.indexOfFirst { it.nome == nome } } private fun removeAluno(){ var nomeAluno: String? = readLine() if(nomeAluno == null){ println("Nome é nulo") } else{ val ind = getIndex(nomeAluno) if(ind == null){ println("Não tem nenhum aluno com esse nome.") } else { alunoList.removeAt(ind) } } } private fun readAluno(): Aluno { println("Digite o nome do aluno:") val nome = readLine() println("Digite a nota 1:") val n1 = readNota() println("Digite a nota 2:") val n2 = readNota() println("Digite a nota 4:") val n3 = readNota() println("Digite a nota 4:") val n4 = readNota() return Aluno(nome,n1,n2,n3,n4) } private fun showMedia(aluno: Aluno) { val media = (aluno.n1+aluno.n2+aluno.n3+aluno.n4)/4 println("nNome: "+aluno.nome) println("Média: $media") } private fun readNota(): Double { var nota = readLine() try{ nota = nota!!.replace(",",".") val y = nota.toDouble() if(y > 10.0) { println("Nota maior que 10, valor = 10.") return 10.0 } else if(y < 0.0) { println("Nota menor que 0, valor = 0.") return 0.0 } else { return y } } catch(e: NumberFormatException){ println("Não foi digitado um número válido, valor = 0.") return 0.0 } } data class Aluno( var nome: String?, var n1: Double = 0.0, var n2: Double = 0.0, var n3: Double = 0.0, var n4: Double = 0.0 )

ctrl+x e S ou Y para salvar.

$ git add media_alunos.kt
$ git commit -m “Adicionada função de remover aluno.”

Vamos executar o programa para ver como está.

$ ./kompila media_alunos.kt

Podemos ver que ainda contêm erros no código, então vamos arrumar todos eles e criar a nossa versão estável do código.

Como utilizar o github para criar uma versão estável

Editando arquivo para mudanças finais.

$ nano media_alunos.kt
var alunoList = ArrayList() fun main(){ do { val menu = menu() when(menu) { "1" -> { addAluno() } "2" -> { listAluno() } "3" -> { removeAluno() } } } while(menu != "q") } private fun clearscreen(){ print("u001b[Hu001b[2J") } private fun menu(): String? { clearscreen() println("1 --> Adiciona Aluno.") println("2 --> Lista alunos e médias.") println("3 --> Deleta aluno") println("q --> Sair") val menu = readLine() return menu } private fun addAluno(){ val aluno = readAluno() if(aluno != null){ alunoList.add(aluno) } } private fun listAluno(){ var mediaTotal: Double = 0.0 if(alunoList.size == 0){ println("Não existem alunos.") } else { println("Lista de alunos e médias.") for(x in 0..alunoList.size-1){ showMedia(alunoList.get(x)) mediaTotal += getMedia(alunoList.get(x)) } mediaTotal = mediaTotal/alunoList.size println("nnMédia da sala: $mediaTotal") } readLine() } private fun getIndex(nome: String): Int? { return alunoList.indexOfFirst { it.nome == nome } } private fun existeNome(nome: String): Boolean { val exist = alunoList.find { it.nome == nome } if(exist == null){ return false } else{ return true } } private fun removeAluno(){ println("Digite o nome do aluno a ser removido:") var nomeAluno = readNome() if(!existeNome(nomeAluno)){ println("Não tem nenhum aluno com esse nome.") readLine() } else { val ind = getIndex(nomeAluno) alunoList.removeAt(ind!!) } } private fun readNome(): String{ var nome: String? do{ nome = readLine() if(nome == "") println("Nome não pode ser nulo. Digite novamente") } while(nome == "") return nome!! } private fun readAluno(): Aluno? { println("Digite o nome do aluno:") val nome = readNome() if(existeNome(nome)){ println("Aluno ja existe") readLine() return null } println("Digite a nota 1:") val n1 = readNota() println("Digite a nota 2:") val n2 = readNota() println("Digite a nota 4:") val n3 = readNota() println("Digite a nota 4:") val n4 = readNota() return Aluno(nome,n1,n2,n3,n4) } private fun showMedia(aluno: Aluno) { val media = getMedia(aluno) println("nNome: "+aluno.nome) println("Média: $media") } private fun getMedia(aluno: Aluno): Double { return (aluno.n1+aluno.n2+aluno.n3+aluno.n4)/4 } private fun readNota(): Double { var nota = readLine() try{ nota = nota!!.replace(",",".") val y = nota.toDouble() if(y > 10.0) { println("Nota maior que 10, valor = 10.") return 10.0 } else if(y < 0.0) { println("Nota menor que 0, valor = 0.") return 0.0 } else { return y } } catch(e: NumberFormatException){ println("Não foi digitado um número válido, valor = 0.") return 0.0 } } data class Aluno( var nome: String?, var n1: Double = 0.0, var n2: Double = 0.0, var n3: Double = 0.0, var n4: Double = 0.0 )

ctrl+x e S ou Y para salvar.

Executando o programa terminado para dar uma olhada.

$ ./kompila media_alunos.kt
Como utilizar o Git no Github
Média dos Alunos

Como utilizar o github para fazer o ultimo commit e enviar a versão estável

Agora vamos a parte final de nosso tutorial, escrever nosso último commit e fazer o upload para o branch dev e depois para o master inserindo a tag que significa versão estável no nosso exemplo.

Adicionando nosso arquivo ao git.

$ git add media_alunos.kt

Fazendo o commit

$ git commit -m “Projeto finalizado”

Fazendo mudanças no README.md para ver como funciona

Vamos mudar o arquivo README.md para ficar da seguinte forma.

$ nano README.md
# Média dos Alunos

- Aplicativo que calcula a média dos alunos de uma sala e a média da sala.

ctrl+x e S ou Y para salvar.

Assim podemos ver que é possível usar algumas tags para mudar como é apresentado o arquivo quando se entra no repositório. Também é possível utilizar algumas tags html.

Adicionando arquivo ao commit

$ git add README.md

Fazendo o commit da mudança no README.md.

$ git commit -m “Arrumando o readme”

Agora vamos criar a tag de versão estável.

git tag 2.0

Como utilizar o github para enviar para atualizar o branch dev

Entrando no branch dev.

$ git checkout dev

Fazendo merge do branch quote no dev.

$ git merge quote

Utilizar o github para enviar as atualizações.

$ git push

Como utilizar o github para enviar as tags das versões.

$ git push –tags

Como utilizar o github para enviar a versão estável

Mudando para o branch master.

$ git checkout master

Fazendo o merge do branch dev no master.

$ git merge dev

Enviando as atualizações no branch master.

$ git push

Para ver os logs.

$ git log

Ou se preferir ver em um aplicativo gráfico.

$ gitk

Assim termino essa série de tutoriais com como utilizar o git no github final.

<- Como utilizar o Git no Github