Skip to content
Snippets Groups Projects
Commit 415f5a74 authored by Eduardo E. R. Junior's avatar Eduardo E. R. Junior
Browse files

Conclui seção de interfaces gráficas (execução e visualização) GIT

SmartGit interface muito completa porém é software proprietário,
por esse motivo não foi descrito
parent f75d54ca
No related branches found
No related tags found
1 merge request!29Issue#40
...@@ -65,10 +65,11 @@ Baseada em *Tcl/Tk* a *GUI* chamada `git gui` é mantida como projeto ...@@ -65,10 +65,11 @@ Baseada em *Tcl/Tk* a *GUI* chamada `git gui` é mantida como projeto
independente do GIT, mas as versões estáveis são distribuídas junto com independente do GIT, mas as versões estáveis são distribuídas junto com
o programa principal. Portanto não é necessário o download e o programa principal. Portanto não é necessário o download e
instalação. A interface é voltada para realizar alterações no instalação. A interface é voltada para realizar alterações no
repositório. `git gui` permite a realização de diversas modificações no repositório. `git gui` permite a realização de diversas modificações,
repositório, desde as mais simples como *commitar* arquivos até mais desde as mais simples como *commitar* arquivos até as mais específicas
específicas como voltar estágios ou reescrever o último *commit* (muito como voltar estágios ou reescrever o último *commit* (muito útil quando
útil quando notamos erros de gramática logo após a submissão). notamos erros de gramática logo após a submissão). Nesta seção
abordaremos apenas as alterações mais comuns no repositório.
`git gui`, no Windows, pode ser aberto pelo menu iniciar. Nesta `git gui`, no Windows, pode ser aberto pelo menu iniciar. Nesta
plataforma, ao instalar o GIT (conforme visto no capítulo 2) duas plataforma, ao instalar o GIT (conforme visto no capítulo 2) duas
...@@ -76,9 +77,9 @@ aplicações ficam disponíveis **git BASH** e **git GUI**. Em sistemas ...@@ -76,9 +77,9 @@ aplicações ficam disponíveis **git BASH** e **git GUI**. Em sistemas
LINUX podemos criar um *alias* (criar e editando adequadamente um LINUX podemos criar um *alias* (criar e editando adequadamente um
arquivo em */usr/share/applications*) para que `git gui` fique listada arquivo em */usr/share/applications*) para que `git gui` fique listada
junto as aplicações do sistema. --Descobrir no MAC se `git gui` fica no junto as aplicações do sistema. --Descobrir no MAC se `git gui` fica no
lançador automaticamente. De forma geral, independente da plataforma de lançador automaticamente. Porém, de forma geral, independente da
trabalho `git gui` pode ser iniciada a partir de um terminal `bash`, com plataforma de trabalho `git gui` pode ser iniciada a partir de um
o comando: terminal `bash`, com o comando:
```sh ```sh
git gui git gui
...@@ -176,10 +177,6 @@ Mais um arquivo criado" > OTHER.txt ...@@ -176,10 +177,6 @@ Mais um arquivo criado" > OTHER.txt
Após as alterações a interface gráfica é chamada. Após as alterações a interface gráfica é chamada.
```sh
git gui
```
![](./images/git-gui1.png) ![](./images/git-gui1.png)
FIGURA: Inteface `git gui` FIGURA: Inteface `git gui`
...@@ -204,31 +201,164 @@ executado é o inglês. Para português (Brasil) as mensagem ficam ..... ...@@ -204,31 +201,164 @@ executado é o inglês. Para português (Brasil) as mensagem ficam .....
Além das quatro áreas principais da interface, que facilitam Além das quatro áreas principais da interface, que facilitam
interativamente atividades como `git status`, `git diff`, `git add`, interativamente atividades como `git status`, `git diff`, `git add`,
`git commit` e `git push`, temos mais implementações no menu da `git commit` e `git push`, temos mais implementações no menu da
interface para procedimentos não cotidianos. interface para procedimentos não cotidianos. Essas implementações podem
ser acessadas com um simples clique, e são bem auto-explicativas.
### gitk ###
Pioneira dentre as interfaces gráficas para GIT, `gitk` foi a primeira
*GUI* implementada pra GIT. Também implementada em *Tcl/Tk* esta *GUI*
tem como objetivo a apresentação do histórico de um projeto GIT. `gitk`
é incorporado ao principal repositório do GIT, portanto nas instalações
completas do GIT esta interface já fica disponível sem ser necessário
download e instalação. Nesta seção apresentamos a `gitk` detalhando a
disposição dos elementos nesta interface que se mostra muito útil na
visualização de projetos GIT.
`gitk` trabalha em conjunto com a `git gui`. Em `git gui` podemos fazer
alterações de forma rápida e visual nos arquivos que estão na *staging
area* e *working directory*, porém para visualizar o histórico completo
de *commits*, com ramificações, marcações e demais detalhes, recorremos
à `gitk`. Essa interface se mostra muito útil também como ferramenta de
aprendizagem GIT, uma vez que visualizar de forma gráfica as alterações
que os comandos realizados causam no projeto, torna mais fácil a
compreensão dos mesmos.
`gitk`, assim como a `git gui` pode ser chamada atráves de linha de
comando.
```sh
gitk
```
### gitk (Tcl/Tk) / gitg (Gtk) / gitx (MacOS) ### Para exemplificar a disposição dos elementos nesta interface, seguimos
com as alterações feitas na seção anterior, lembrando que temos todas as
alterações já realizadas no capítulo 2 e ainda duas modificações e uma
inclusão de arquivos não *commitadas*. Visualizando a interface `gitk`
chamada neste estado do repositório temos:
![](./images/gitk1.png)
FIGURA: Inteface `gitk`
Perceba na figura ?? que esta interface é bem mais completado que a `git
gui`, no que diz respeito à informação. Divida em apenas duas partes a
`gitk` apresenta na primeira todo o histórico do projeto, é uma
implementação visual e agradável do comando `git log --graph`. No
gráfico apresentado as bolinhas azuis representam *commits* passados, a
amarelo indica o estado atual do repositório e em vermelho são as
modificações no *working directory* ao lado estão os autores dos
respectivos *commits* e o momento em que foram feitos. Na parte
inferior da interface temos o detalhamento do *commit* selecionado
na parte superior. As informações contidas aqui vão desde o
identificador do *commit* (*SHA1 ID*), diferença das modificações
referenciadas por este *commit* com relação ao estado anterior do
repositório até a listagem dos arquivos atingidos pelo *commit*
selecionado.
Além da exelente apresentação visual do repositório GIT, `gitk` também
permite algumas alterações. Clicando com o botão direito de seu *mouse*
em qualquer *commit* listado podemos criar *tags*, reverte o repositório
neste estado, criar um ramo a partir do *commit* dentre outras opções
possíveis atráves da interface.
`gitk` é uma implementação em *Tcl/Tk* para visualização de repositórios
GIT. Com o mesmo objetivo outras interfaces gráficas foram
implementadas.
Podemos destacar duas delas pela grande similaridade à
`gitk`, são elas `gitg` e `gitx`. Ambas
* https://git-scm.com/docs/gitk * https://git-scm.com/docs/gitk
* https://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to-understand-git/ * https://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to-understand-git/
### Outras Interfaces ### ### Outras Interfaces ###
Citar materiais de referência para instalação e utilização. #### gitg e gitx ####
Interfaces a serem comentadas:
Estas duas interfaces tentam juntar em uma única as opções
* RabbitVCS (Linux/Unix) proporcionadas pela `git gui` e pela `gitk`. Os layouts são muito
* GitHub (MacOS e Windows) similares e as propostas também a diferença está na portabilidade.
* git-cola `gitg` é implementada em *GTk+* e está disponível para sistemas LINUX e
* Smart-Git `gitx` foi implementado para Mac OS seguindo o estilo de aplicativos
deste sistema operacional. De forma geral não há detalhes a serem
Escolhidas por serem multiplataforma (Windows, Linux/Unix e MacOS) repassados sobre estas interfaces uma vez que as possibilidades já foram
listadas nas seções sobre `git gui` e `gitk`
Plugins e extensões, comentar a utilização do **GIT** em editores já
utilizados pela comunidade estatística. ![](./images/gitg.png)
FIGURA: Interface `gitg`
* Emacs (`magit`)
* RStudio ![](./images/gitx.png)
* Gedit FIGURA: Interface `gitx`
#### RabbitVCS ####
*RabbitVCS* é uma coleção de ferramentas gráficas para navegadores de
arquivos dos sistemas LINUX que permitem o acesso simples e direto aos
sistemas de controle de versão, GIT e/ou Subversion. Não se caracteriza
como interface, porém altera a visualização no navegador de arquivos de
diretórios sob versionamento GIT além de dispor de ações implementadas
nas opções do menu quando pressionado o botão direito do mouse.
![](./images/rabbitvcs.png)
FIGURA: Navegador *Nautilus* com uso do `RabbitVCS`
Na figura ?? temos o *screenshot* do repositório `meu1repo` no navegor
de arquivos `nautilus` (padrão do sistema Ubuntu 14.04). Perceba que com
essa interface os ícones de arquivos e pastas no navegador ganham
destaque com um outro pequeno ícone na paste inferior. Estes pequenos
ícones indicam o estado do arquivo sem precisar recorrerao terminal, ou
seja, temos um `git status` no próprio navegador de arquivos. Além disso
`RabbitVCS` complementa o menu de opções acessados com o botão direito
do mouse. As opções implementadas neste menu são muito completas, vão
desde simples *commits*, criação de *branchs* e *tags* até a ações de
reverter o estado do repositório.
#### git-cola ####
Esta também é uma interface alternativa que se destaca por ser completa
e pela portabilidade (disponível para sistema LINUX, Windows e
Mac. Implementada em *python* `git-cola` é uma alternativa à `git gui`
e contém praticamente os mesmo elementos para alterações no
repositório. Como `git gui` se auxilia da `gitk` para visualização,
`git-cola` também tem uma interface de apoio, chamada de `git-dag` que
vem instalado junto ao `git-cola`.
![](./images/git-cola.png)
FIGURA: Interface `git-cola` e `git-dag`
Perceba pela figura ?? que as opções das interfaces são muito similares
as apresentadas em `git gui` e `gitk`. As interfaces `git-cola` e
`git-dag` se destacam pela fácil manipulação do layout exibido, além de
buscar deixar a interface o mais intuitiva possível. Como destaque em
implementação de funcionalidade GIT, `git-cola` se sobresai com relação
à `git gui` na possibilidade de execução do comando `git rebase` via
interface.
#### Plugins e extensões para editores ####
Muitas vezes é inconveniente trabalhar em códigos fonte em um editor e
ter que abrir um terminal *bash* em outra janela do sistema operacional
para verificar o sistema versionamento, realizar commits,
etc. Felizmente alguns editores possuem um sistema **GIT** integrado,
seja por meio de *plugins* adicionais instalados ou opção nativa do
editor.
Destacamos aqui três editores, comumente utilizados pela comunidade
estatística, que possuem os comandos **GIT** intergrado à sua
interface. São eles o `emacs`, onde temos as opções de *buffers* no
editores onde podemos abrir uma isntância *shell* e executar os comandos
**GIT** junto com o desenvolvimento do código fonte. Além disso uma
extensão bastante poderosa está disponível e em desenvolvimento para o
**GIT** no `emacs`, de nome `magit`[^magit] esta extensão proporciona
opções de comandos e visualização em um *buffer* do editor que facilitam
muito o trabalho de verisionamento. Outro editor também muito utilizado
em Estatística, talvez o mais utilizado pela comunidade, é o RStudio que
também implementa em sua interface vários comandos **GIT**, assim como
as interfaces anterioremente descritas e de para tarefas não triviais
uma chamada do terminal *Shell* é possível dentro do aplicativo. As
diversas ferramentas do editor RStudio serão exploradas no capítulo ??,
com exemplos e ilustrações voltadas para a comunidade estatística.
## Interfaces de comparação ## ## Interfaces de comparação ##
...@@ -263,3 +393,5 @@ utilização. ...@@ -263,3 +393,5 @@ utilização.
```{r, engine = "bash", include = FALSE, eval = FALSE} ```{r, engine = "bash", include = FALSE, eval = FALSE}
sudo rm -R meu1repo sudo rm -R meu1repo
``` ```
[^magit]: http://magit.vc/
images/git-cola.png

148 KiB

images/git-gui1.png

50.1 KiB | W: | H:

images/git-gui1.png

90.1 KiB | W: | H:

images/git-gui1.png
images/git-gui1.png
images/git-gui1.png
images/git-gui1.png
  • 2-up
  • Swipe
  • Onion skin
images/gitg.png

114 KiB

images/gitk1.png

163 KiB

images/gitx.png

413 KiB

images/rabbitvcs.png

110 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment