<div>Só completando:</div><div> </div><div>O conceito do GitHub é quase o mesmo de controle de versão como o svn, mas chega a ser bem mais que isso, acredito que uma comparação mais justa seria com um sourceforge da vida.</div>

<div> </div><div>Se é fácil ou complicado de mexer, vai do gosto de cada um. Eu quando começei a mexer com o GitHub achei meio chatinho no início, mas acabei acostumando.</div><div><br clear="all">lmassis <at> yahoo <dot> com <dot> br<br>

assis.leonard <at> gmail <dot> com<br>
<br><br></div><div class="gmail_quote">2011/8/16 Benilton Carvalho <span dir="ltr"><<a href="mailto:beniltoncarvalho@gmail.com">beniltoncarvalho@gmail.com</a>></span><br><blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">

Para entender o que o GitHub, e' necessario entender um pouco do<br>
conceito do 'git' (a explicacao abaixo nao contem codigo algum e<br>
trata-se apenas de uma exposicao de conceitos).<br>
<br>
O git e' um software que oferece controle de versoes de arquivos. Como<br>
exemplo, tome o caso usual no qual voce esta' escrevendo um codigo que<br>
faz uma serie de manipulacoes em um banco de dados. A maioria dos<br>
usuarios salvara' esse arquivo usando nomes como "Manipula.R".<br>
<br>
Acontece que ao fazer alguma modificacao no codigo de "Manipula.R", o<br>
usuario cuidadoso vai querer manter as duas versoes do codigo (a<br>
original e a modificada). Entao, ele acaba por salvar a versao<br>
modificada como "Manipula1.R". Se o usuario for um aluno escrevendo<br>
tese, chega-se facilmente a "Manipula20.R".<br>
<br>
Usando o 'git', manter essas diferentes versoes nao e' tarefa tao<br>
complexa quanto lembrar-se o que cada uma das 20 versoes diferentes<br>
tem.<br>
<br>
Tudo comeca por fazer analogia a uma arvore: seu codigo original e' o<br>
tronco (master); cada modificacao em progresso e' um galho (branch).<br>
<br>
Partindo do Manipula.R, voce observa que precisa fazer modificacoes.<br>
Neste ponto, voce cria um novo branch (existe um comando para isso<br>
que, em teoria, copia o "Manipula.R" para uma pasta escondida). Como<br>
sua arvore agora possui um novo galho, voce precisa informar ao 'git'<br>
onde vc vai trabalhar (no tronco - master; ou no galho - branch). Para<br>
as modificacoes, voce informa que vai trabalhar no branch.<br>
<br>
Qualquer modificacao feita no branch nao afeta o tronco principal<br>
(master). Na pratica, isso quer dizer que se voce quiser executar a<br>
versao original do Manipula.R, basta mudar do branch para o master. A<br>
outra vantagem e' que, dada essa independencia dos galhos com o tronco<br>
principal, voce nao precisa criar arquivos Manipula1.R / Manipula2.R /<br>
etc.<br>
<br>
Uma vez que voce esteja satisfeito com as modificacoes feitas no galho<br>
da sua arvore, voce incorpora (une) o galho ao tronco. Esse processo<br>
e' chamado 'merging' (existe um comando para isso). A parte legal e'<br>
que, mesmo depois do merge, voce pode retornar `a versao original do<br>
codigo e tudo isso sem vc ter q manter Manipula1/Manipula2/etc...<br>
<br>
O outro conceito usado bastante e' em colaboracao de codigo. Suponha<br>
que o Walmes comecou com a versao original de 'Manipula.R', dai' o<br>
Paulo pegou carona e decidiu tentar uma modificacao dele proprio...<br>
Neste caso, o Paulo pode criar um branch dele e fazer as modificacoes<br>
ali. Uma vez que o Paulo fizer as modificacoes, ele pode submeter um<br>
pedido de merge ao tronco principal, que sera' (ou nao) aprovado pelo<br>
Walmes para incorporacao plena no codigo original.<br>
<br>
E' possivel manter arquivos binarios sob 'git' tambem. Mas por motivos<br>
que fogem o escopo da mensagem, isso nao e' algo muito recomendado<br>
(para os interessados, manter diffs de arquivos binarios nao e' algo<br>
legal).<br>
<br>
Outra aplicacao do conceito do git: vc esta' trabalhando num artigo<br>
com diversos autores... Cada autor pode criar um branch e trabalhar<br>
nesse branch... depois voces podem "merge" todos os branches para<br>
montar o artigo final...<br>
<br>
Note que o git nao liga se o arquivo e' um script em R, um programa em<br>
C, um documento em TXT ou TeX. O importante (no meu ponto de vista) e'<br>
que seja um arquivo texto padrao (ie, nada de Word, PowerPoint, por<br>
exemplo). A outra coisa importante e' que o git nao exige a existencia<br>
de um servidor, voce pode fazer tudo isso num diretorio qualquer do<br>
seu computador.<br>
<br>
Pronto, dito isso (em suma, o git transforma sua linha de producao num<br>
esquema que usa uma arvore como modelo; no qual a parte estavel eh o<br>
tronco e as modificacoes em curso sao os galhos), fica menos enrolado<br>
entender o que eh o GitHub.<br>
<br>
GitHub e' um portal no qual voce pode criar projetos (de codigo). Por<br>
exemplo, os pacotes que eu desenvolvo estao la'. Eu posso fazer todas<br>
essas coisas de branching, merging e reverting usando o website. Como<br>
ele e' um portal, o site funciona como um servidor. Assim, eu faco as<br>
modificacoes (criacao de galhos, unificacoes com tronco, etc) no meu<br>
computador e sincronizo com o servidor. Outros usuarios do website<br>
podem acompanhar o projeto.<br>
<br>
Por exemplo, um dos meus colaboradores acompanha as modificacoes que<br>
tenho nos meus pacotes. Quando ele tem alguma sugestao, ele clona o<br>
meu projeto e faz as modificacoes ao gosto dele... Uma vez que as<br>
modificacoes estao prontas, ele (via website) manda as modificacoes<br>
para o meu projeto e eu, entao, preciso aprovar ou nao... Se<br>
aprovadas, as mudancas dele (antes independentes do meu projeto) sao<br>
incorporadas ao tronco principal.<br>
<br>
Para facilitar acompanhamento de projetos, o GitHub oferece a<br>
possibilidade de voce "seguir" outras pessoas, incorporando tambem uma<br>
parte 'social' ao projeto.<br>
<br>
Em termos de gerenciamento de projeto, GitHub tambem oferece servicos<br>
de Wiki e Bug Tracker.<br>
<br>
Todos esses servicos sao gratuitos, na condicao de que o seu projeto<br>
seja publico.<br>
<br>
Se voce nao quiser que outros usuarios vejam o seu projeto, voce pode<br>
criar projetos privados... mas apenas se voce for um usuario pago.<br>
<br>
b<br>
_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br>
</blockquote></div><br>