Git: mudanças entre as edições

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
Linha 32: Linha 32:
== Iniciando um Repo Git a partir de um projeto já existente ==
== Iniciando um Repo Git a partir de um projeto já existente ==


Basta  
Basta entrar no diretório raiz do projeto e iniciar o repo:
    $ git init
Depois de limpar os arquivos temporários e auxiliares, adicione todo mundo:
    $ git add .
Este comando acima já adiciona toda a árvore.
 
Dá um 'git status' para ver se não tem algum arquivo lixo. Se tiver, manda um:
    $ git unstage <arquivo>
Para cada arquivo. Pronto! Pode commitar!


== Interface Git para Subversion e CVS ==
== Interface Git para Subversion e CVS ==

Edição das 01h23min de 13 de outubro de 2011

Para uma breve lista de comandos, veja Comandos Git.

Para aprender Git, veja Literatura recomendada pela equipe#Git

Create Repos on Sourceforge

Acesse a conta do projeto por ssh:

   ssh -t USER,PROJECT@shell.sourceforge.net create

Vá ao diretório do projeto:

   cd /home/scm_git/l/la/labmacambira

Crie o diretório com o nome do repositório desejado:

   mkdir NOME_REPOS

Crie o repositório (bare):

   git --git-dir=NOME_REPOS init --shared=all --bare

Pronto, agora você poderá usá-lo:

Clone-o:

   git clone ssh://USERNAME@labmacambira.git.sourceforge.net/gitroot/labmacambira/NOME_REPOS

Se já tiver um repos git e quer migrá-lo para SF como origin:

   cd NOME_REPOS
   git remote rm origin
   git remote add origin ssh://USERNAME@labmacambira.git.sourceforge.net/gitroot/labmacambira/NOME_REPOS
   git config branch.master.remote origin
   git config branch.master.merge refs/heads/master
   git push origin master

Mais informações em http://sourceforge.net/apps/trac/sourceforge/wiki/Git

Iniciando um Repo Git a partir de um projeto já existente

Basta entrar no diretório raiz do projeto e iniciar o repo:

   $ git init

Depois de limpar os arquivos temporários e auxiliares, adicione todo mundo:

   $ git add .

Este comando acima já adiciona toda a árvore.

Dá um 'git status' para ver se não tem algum arquivo lixo. Se tiver, manda um:

   $ git unstage <arquivo>

Para cada arquivo. Pronto! Pode commitar!

Interface Git para Subversion e CVS

Para usar Git como interface para o Subversion: https://sourceforge.net/apps/trac/vxl/wiki/GitSvn

Para usar Git como interface para o CVS: https://sourceforge.net/apps/trac/vxl/wiki/GitCvs

Gerando patches pra comitadas

Muitos projetos nao dao acesso a commitadas diretamente, exigindo submissao de patches. Veja como fazer isso com git format-patch [1]:

Cria-se um branch a partir do master, com suas mudancas. Depois cria-se um patch desse branch referente ao master, executando o seguinte comando a partir desse novo branch:

git format-patch master --stdout > fix_bug_69.patch

Tambem e' util saber dar um squash nos seus commits pro patch ficar mais limpo depois de varias edicoes, ver [2].

Migrar de SVN para GIT

Criamos um repos temporário para baixar o SVN:

   mkdir repos_tmp
   cd repos_tmp
   git svn init URL_DO_SEU_REPOSITORIO_SVN --no-metadata
   git svn fetch

Agora vamos limpar a sujeira deixada pelo SVN, clonando o repos temporário no repos final:

   cd ..
   git clone repos_tmp repos_final
   cd repos_final

E configuramos para usar o SF:

   git remote rm origin
   git remote add origin ssh://USERNAME@labmacambira.git.sourceforge.net/gitroot/labmacambira/NOME_REPOS
   git config branch.master.remote origin
   git config branch.master.merge refs/heads/master
   git push origin master


Migrar de CVS para Git

Exitem diversas maneiras de se converter um repositorio existente para Git. Se o repositorio principal nao sera convertido para Git, ou se o repo principal e' simples, pode-se usar o git cvs. Nesse caso, veja o link: https://sourceforge.net/apps/trac/vxl/wiki/GitCvs

Ver tambem o seguinte link, para o caso de se usar Git com Subversion: https://sourceforge.net/apps/trac/vxl/wiki/GitSvn

Agora, para migrar o repositorio CVS para Git de uma vez por todas, vou descrever um jeito que usei para converter o SIP, o qual tinha um repositorio CVS no sourceforge. Primeiramente, usei o seguinte comando de backup do sourceforge pra baixar o repo CVS:

 rsync -av rsync://siptoolbox.cvs.sourceforge.net/cvsroot/siptoolbox/* .


Segui as instrucoes em Creating Multiple Repositories da pagina https://sourceforge.net/apps/trac/sourceforge/wiki/Git

  • Tenho 4 repositorios dentro do projeto siptoolbox: animal,simpletoolbox,www e siptoolbox
  • Dentro do shell do sourceforge:
mkdir animal simpletoolbox www
git --git-dir=www init --shared=all --bare

este ultimo comando sendo repetido para animal e simpletoolbox.

Em seguida, dei um clone em cada um, depois, para cada modulo (p.ex. www abaixo), editei cvs2git.options colocando o caminho apropriado na string logo apos run_options.set_project

cvs2git --options=../cvs2git.options
cd www
cat ../cvs2svn-tmp/git-{blob,dump}.dat | git fast-import
git reset --hard
git push origin master
rm -rf ../cvs2svn-tmp

Eh isso ae, mais ou menos..


Referencias de migracao CVS para Git


Canal do IRC sobre Git

  1. git ou #github no freenode



Ver Tambem

Comandos Git