Git
Português (Brasil) ▾Topics ▾Latest version ▾ git-cvsimport last updated in 2.43.1

NOME

git-cvsimport - Recupere seus dados de outro SCM que as pessoas amam odiar

RESUMO

git cvsimport [-o <ramo-para-o-HEAD>] [-h] [-v] [-d <CVSROOT>]
	      [-A <arquivos-conv-do-autor>] [-p <opções-para-o-cvsps>] [-P <arquivo>]
	      [-C <repositório-git>] [-z <fuzz>] [-i] [-k] [-u] [-s <subst>]
	      [-a] [-m] [-M <expressão-regular>] [-S <expressão-regular>] [-L <limite-do-commit>]
	      [-r <remoto>] [-R] [<módulo-CVS>]

DESCRIÇÃO

AVISO: O git cvsimport usa o cvsps versão 2, que é considerado obsoleto; ele não funciona com o cvsps versão 3 e posteriores. Se estiver realizando uma importação única de um repositório CVS, considere usar cvs2git ou cvs-fast-export.

Importa um repositório CVS para o Git. Ele criará um novo repositório ou o importará incrementalmente para um já existente.

A divisão do registro do CVS em conjuntos de correções é feita pelo cvsps. É necessário ter pelo menos a versão 2.1.

AVISO: em determinadas situações, a importação leva a resultados incorretos. Consulte a seção PROBLEMAS para obter mais referências.

Você nunca deve fazer qualquer trabalho próprio nas ramificações criadas pelo comando git cvsimport. É predefinido que a importação inicial criará e preencherá uma ramificação "master" a partir da ramificação principal do repositório CVS, com a qual você poderá trabalhar livremente; depois disso, você precisará fazer o git merge nas importações incrementais ou em qualquer ramificação CVS. É recomendável especificar um nome remoto via -r para separar e proteger as ramificações que chegam.

Caso a sua intenção seja configurar um repositório público compartilhado para que todos os desenvolvedores tenham permissão de leitura/escrita, caso queiram utilizar o git-cvsserver[1], então é preferível que você crie um clone simples do seu repositório importado para que seja utilizado como um repositório compartilhado. Consulte gitcvs-migration[7].

OPÇÕES

-v

Loquaz: permita que cvsimport relate o que está fazendo.

-d <CVSROOT>

A raiz do arquivo CVS. Pode ser local (um caminho simples) ou remoto; atualmente, são compatíveis apenas o :local:, :ext: e :pserver: access. Caso não seja utilizado, o comando git cvsimport tentará a ler do CVS/Root. No caso de tal arquivo não existir, verifica a existência da variável de ambiente CVSROOT.

<módulo-CVS>

O módulo CVS que você deseja importar. É relativo ao <CVSROOT>. Se não for fornecido, o comando git cvsimport tentará lê-lo a partir do CVS/Repositório.

-C <diretório-de-destino>

O repositório Git para onde importar. Ele será criado caso o diretório não exista. A predefinição é o diretório atual.

-r <remoto>

O Git remoto para onde importar este repositório CVS. Move todas as ramificações do CVS para remotes/<ramo-remoto>/<ramo> de forma semelhante à maneira como o comando git clone usa origin por padrão.

-o <ramo-para-o-HEAD>

Quando nenhum ramo remoto é especificado (via -r), o ramo HEAD do CVS é importado para o ramo origin dentro do repositório Git, pois HEAD já tem um significado especial para o Git. Quando um controle remoto é especificado, a ramificação HEAD é denominada remotes/<ramo-remoto>/master, espelhando o comportamento do comando git clone. Use esta opção caso queira importar para uma ramificação diferente.

Utilize -o master para continuar uma importação que foi inicialmente feita pela antiga ferramenta cvs2git.

-i

Import-only: não realizar um "checkout" após a importação. Esta opção garante que o diretório de trabalho e o índice permaneçam intocados, assim como não serão criados caso eles não existiam.

-k

Kill keywords: extrairá arquivos com -kk do arquivo CVS para evitar atritos com o changesets. Altamente recomendado, a sua predefinição retorna para desativado visando preservar a compatibilidade com as árvores importadas anteriormente.

-u

Converta sublinhados nos nomes das tags e das ramificações em pontos.

-s <subst>

Substitua o caractere "/" nos nomes dos ramos com <subs>

-p <opções-para-o-cvsps>

Opções adicionais para o cvsps. As opções -u e -A são implícitas e não devem ser usadas aqui.

Caso precise usar várias opções, separe-as com uma vírgula.

-z <fuzz>

Encaminhe o registro de data e hora do fato "fuzz" ao cvsps em segundos. Caso não esteja definido, o cvsps retorna para a predefinição 300s.

-P <arquivo-cvsps-gerado>

Em vez de chamar o cvsps, leia o arquivo cvsps fornecido. Útil para a depuração ou quando o cvsps está sendo manuseado fora do cvsimport.

-m

Tente detectar as mesclagens com base na mensagem do commit. Esta opção ativará as expressões regulares que tentam capturar o nome da origem do ramo na mensagem do commit.

-M <expressão-regular>

Tenta detectar as mesclagens com base na mensagem do commit com um regex personalizado. Ele pode ser utilizado com a opção -m para ativar os regexes já predefinidos. Você deve escapar as barras inclinadas.

O regex deve capturar o nome da origem do ramo em $1.

Esta opção pode ser utilizada várias vezes para fornecer vários regexes de detecção.

-S <expressão-regular>

Ignore os caminhos que correspondam ao regex.

-a

importe todos os commits, incluindo os mais recentes. Por predefinição o cvsimport ignora os commits que têm o registro de data e hora menor que 10 minutos.

-L <limite>

Limita a quantidade de commit a serem importados. Solução alternativa para os casos em que o cvsimport vaza memória.

-A <arquivos-conv-do-autor>

Por predefinição o CVS utiliza nome de usuário em formato Unix ao escrever os registros log dos commits. O uso desta opção e de um arquivo conv do autor mapeia o nome registrado no CVS para o nome do autor, endereço de email e o fuso horário opcional:

	exon=José Antônio <ja@enois.br>
	spawn=Paulo Roberto <parob@empresa.org> America/Sao_Paulo

O comando git cvsimport fará com que pareça que estes autores tinham o GIT_AUTHOR_NAME e o GIT_AUTHOR_EMAIL definidos corretamente o tempo todo. Se um fuso horário for especificado, o GIT_AUTHOR_DATE terá o offset correspondente aplicado.

Por conveniência, esses dados são salvos em $GIT_DIR/cvs-authors sempre que a opção -A for utilizada e lidos deste mesmo arquivo sempre que o comando git cvsimport for executado.

Não é recomendável usar esse recurso caso você queira exportar as alterações novamente para o CVS mais tarde com o comando git cvsexportcommit.

-R

Gere um arquivo $GIT_DIR/cvs-revisions contendo um mapeamento dos números de revisão do CVS para os IDs recém-criados do commit do Git. O arquivo gerado conterá uma linha para cada par (nome do arquivo, revisão) importado; cada linha terá a seguinte aparência

src/widget.c 1.1 1d862f173cdc7325b6fa6d2ae1cfd61fd1b512b7

Os dados da revisão são anexados ao arquivo, para uso ao fazer as importações incrementais, caso já exista.

Esta opção pode ser útil caso tenha os números da revisão do CVS armazenados nas mensagens do commit, sistemas de rastreamento de erros, arquivos de email e similares.

-h

Imprima uma mensagem curta de uso e encerre.

SAÍDA

Caso -v seja utilizado, o script informa o quê está fazendo.

Caso contrário, o sucesso é indicado da maneira Unix, ou seja, simplesmente saindo com um status de saída zero.

PROBLEMAS

Problemas relacionados aos registro de data e hora:

  • Caso os registro de data e hora dos commits no repositório CVS não forem estáveis o suficiente para serem utilizados para ordenar os commits, estes poderão aparecer na ordem errada.

  • Caso algum arquivo seja "importado por cvs" mais de uma vez (por exemplo, a importação de mais de uma versão do fornecedor), o conteúdo do HEAD estará errado.

  • Caso a ordem do registro de data e hora dos diferentes arquivos cruze com a ordem da revisão dentro do commit que concida com a janela de tempo do commit, a ordem dos commits poderá estar incorreta.

Problemas relacionados com os ramos:

  • As ramificações não são importadas quando nenhum commit tenha sido for feito neles.

  • Todos os arquivos do ponto de ramificação são adicionados a um ramo, mesmo que nunca sejam adicionados ao CVS.

  • Isso aplica-se aos arquivos adicionados ao ramo de origem após a criação de uma ramificação filha tenha sido criada: no caso de nenhum commit anterior ter sido feito nesta ramificação filha, esta será erroneamente adicionada ao git.

Problemas relacionados com as tags:

  • Caso a mesma revisão tenha várias tags, elas não serão importadas.

Se você suspeitar que algum desses problemas possa se aplicar ao repositório que você deseja importar, considere usar o cvs2git:

  • O cvs2git (parte do cvs2svn), https://subversion.apache.org/

GIT

Parte do conjunto git[1]

scroll-to-top