Skip to content
Snippets Groups Projects
Commit d334e23a authored by Alcides Conte Neto's avatar Alcides Conte Neto
Browse files

Merge branch 'issue#28' into 'devel'

Issue#28

Incorpora introdução e seção `git gui` do capítulo de ferramentas gráficas para GIT

See merge request !20
parents afb867dc 2f65e638
Branches
No related tags found
No related merge requests found
......@@ -16,35 +16,208 @@ opts_chunk$set(comment = NA)
## Ferramentas gráficas ##
Definir *GUI's (Graphical User Interfaces)*. Particularizar e motivar,
com situações exemplo, a utilização de interfaces gráficas no fluxo de
trabalho de um projeto com versionamento **GIT**.
No GIT, como vimos até agora, todo o gerenciamento do projeto é
realizado via *CLI (Command line interface)*, linhas de comando
interpretadas, geralmente pelo *bash*. Isso confere um maior controle e
segurança nas ações realizadas, mas em muitas situações os comandos e
*outpus* GIT não se apresentam de forma tão amigável seja pela difícil
memorização ou pela interatividade limitada.
Os comandos mais usuais como `git add`, `git commit` se tornam simples,
pois, mesmo para um usuário iniciante eles fazem parte do cotidiano em
um projeto sob versionamento GIT. Mas algumas situações que não ocorrem
com frequência, como por exemplo voltar a versão de um arquivo ou do
repositório, requerem comandos que são pouco utilizados e, não raramente
para realizá-las é necessário a consulta de algum material sobre
GIT. Outra situação onde a utilização dos comandos é dificultada, ocorre
para projetos maiores, onde muitos arquivos são alterados
simultaneamente e o procedimento de *commit* se torna trabalhoso, pois
é necessário listar todos os arquivos que fazem parte de um *commit*
no commando `git add`. Uma última situação exemplo em que o uso de *CLI*
não parece satisfatório é na comparação de arquivos, já usamos o comando
`git diff` na capítulo 3 e o *output* deste comando foi de simples
visualização, mas em arquivos maiores (com muitas linhas) a navegação
para verificar as alterações do arquivo não é tão amigável. Para
facilitar essas e outras situações surgem as *GUI's (Graphical User
Interfaces)*, interfaces gráficas para o usuário que incorporam comandos
GIT em *widgets*(botões, caixas de texto etc.) dispostos em um janela
gráfica de seu sistema operacional.
Neste capítulo apresentamos as principais *GUI's* para GIT em diferentes
plataformas sistemas UNIX, Mac OS X e Windows. Detalhes de download,
instalação e exemplos da utilização destas interfaces no fluxo de
trabalho de um projeto com versionamento **GIT** são descritos.
## Interfaces GIT ##
Interfaces para gestão de um repositório **GIT**. Estas facilitam a
utilização das principais instruções **GIT** (`git add`, `git commit`,
`git push`) e a visualização dos arquivos e alterações no repositório.
Neste material chamaremos de **Interfaces GIT** as *GUI's* para gestão de um
repositório **GIT**. Estas facilitam a utilização das principais
instruções **GIT** (`git add`, `git commit`, `git push`, `git pull`) e a
visualização dos arquivos e alterações no repositório.
Conteúdo de cada interface:
Desde o surgimento do GIT diversas *GUI's* foram propostas. Este
capítulo ter por objetivo apresentar as mais usuais interfaces dos
sistemas operacionais UNIX, Mac OS X e Windowns.
* *Scrennshots*
* Intruções para *download* e instalação
* Facilidades e limitações
### git-gui ###
### git-gui (Nativo) ###
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
o programa principal. Portanto não é necessário o download e
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, desde as mais simples como *commitar* arquivos até mais
específicas como voltar estágios ou reescrever o último *commit* (muito
útil quando notamos erros de gramática logo após a submissão).
### gitk (Tcl/Tk) / gitg (Gtk) / gitx (MacOS) ###
`git gui`, no Windows, pode ser aberto pelo menu iniciar. Nesta
plataforma, ao instalar o GIT (conforme visto no capítulo 2) duas
aplicações ficam disponíveis **git BASH** e **git GUI**. Em sistemas
LINUX podemos criar um *alias* (criar e editando adequadamente um
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
lançador automaticamente. De forma geral, independente da plataforma de
trabalho `git gui` pode ser iniciada a partir de um terminal `bash`, com
o comando:
```sh
git gui
```
Para exemplificar a utilização desta interface vamos alterar alguns
arquivos do repositório `meu1repo`, criado no capítulo 2.
```{r, engine = "bash", include = FALSE}
if [ -d meu1repo ]; then
sudo rm -R meu1repo
fi
mkdir meu1repo
cd meu1repo/
git init
echo "O que é GNU/Linux
Linux é o núcleo do sistema operacional, programa responsável pelo
funcionamento do computador, que faz a comunicação entre hardware
(impressora, monitor, mouse, teclado) e software (aplicativos em
geral). O conjunto do kernel e demais programas responsáveis por
interagir com este é o que denominamos sistema operacional. O kernel é o
coração do sistema.
Os principais programas responsáveis por interagir com o kernel foram
criados pela fundação GNU. Por este motivo é mais correto nos
referenciarmos ao sistema operacional como GNU/Linux ao invés de apenas
Linux.
Uma distribuição nada mais é que o conjunto de kernel, programas de
sistema e aplicativos reunidos num único CD-ROM (ou qualquer outro tipo
de mídia). Hoje em dia temos milhares de aplicativos para a plataforma
GNU/Linux, onde cada empresa responsável por uma distro escolhe os
aplicativos que nela deverão ser inclusos. " > README
git add .
git commit -m "Adiciona README"
git checkout -b newbranch
echo " Lista de afazeres:
* tarefa 1
* tarefa 2
* tarefa 2
* tarefa 3
* tarefa 4
* tarefa 5" > TODO.txt
git add .
git commit -m "Adiciona TODO list"
git checkout master
echo " --- vivaolinux.com" >> README
git add .
git commit -m "Adiciona referência do texto"
git checkout newbranch
### RabbitVCS (Linux/Unix) ###
echo "##-------------------------------------------
## Arquivo R
### GitHub (MacOS e Windows) ###
plot(iris)" > arquivo.R
git add .
git commit -m "Adiciona arquivo.R"
git checkout master
git merge master newbranch
git branch -d newbranch
```
```{r, engine = "bash", include = TRUE}
cd meu1repo/
echo $(tr '[[:lower:][:upper:]]' '[[:upper:][:lower:]]' < README) > README
echo "Lista de afazeres:
-------------------------------------------
* tarefa 1
* tarefa 2
* tarefa 3
* tarefa 4
* tarefa 5
* tarefa 6" > TODO.txt
echo "
Mais um arquivo criado" > OTHER.txt
```
Após as alterações a interface gráfica é chamada.
```sh
git gui
```
![](./images/git-gui1.png)
FIGURA: Inteface `git gui`
A interface `git gui` se apresenta de forma bem simples, o que facilita
sua utilização. Na figura ?? detacamos as quatro áreas que compreendem a
interface. Na primeira porção temos listados os arquivos presentes no
*working directory*, os arquivos criados aparecem com ícone em branco e
os modificados com linhas em azul. E aqui a interface implementa
interativamente o comando `git add`, pois ao clicar no ícone de um
arquivo ele é automaticamente adicionado à *staging area*. Na segunda
parte são listados os arquivos na *staging area* com ícone de *check
mark*. Na terceira parte destacada temos a implementação do comando
`git diff` para qualquer arquivo selecionado. Com destaque de cores a
interface apresenta em vermelho as deleções e verde as adições. Por fim
temos no canto inferior direito a área para escrever *commits* com
botões para submissão de ação. Um detalhe importante do `git gui` é que
o idioma do sistema operacional é verificado para sua construção, ou
seja, os botões da interface na figura ?? são *push*, *commit*, *sign
off*, etc pois o idioma do sistema operacional em que essa interface foi
executado é o inglês. Para português (Brasil) as mensagem ficam .....
Além das quatro áreas principais da interface, que facilitam
interativamente atividades como `git status`, `git diff`, `git add`,
`git commit` e `git push`, temos mais implementações no menu da
interface para procedimentos não cotidianos.
### gitk (Tcl/Tk) / gitg (Gtk) / gitx (MacOS) ###
* https://git-scm.com/docs/gitk
* https://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to-understand-git/
### Outras Interfaces ###
Citar materiais de referência para instalação e utilização.
Interfaces a serem comentadas:
* RabbitVCS (Linux/Unix)
* GitHub (MacOS e Windows)
* git-cola
* Smart-Git
......@@ -86,3 +259,7 @@ grande valia.
Citar materiais de referência para instalação e
utilização.
<!-- Exclui o repositório criado para exemplicação -->
```{r, engine = "bash", include = FALSE, eval = FALSE}
sudo rm -R meu1repo
```
images/git-gui1.png

50.1 KiB

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