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

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 <commitlimit>]
	      [-r <remoto>] [-R] [<módulo-CVS>]

DESCRIÇÃO

ADVERTÊNCIA o comando git cvsimport usa o cvsps versão 2 já descontinuada; não funciona com o vcsps versão 3 e posteriores. Caso esteja executando 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 log do CVS em conjuntos de patches é feito por cvsps. É necessário usar no mínimo a versão 2.1.

ADVERTÊNCIA: em determinadas situações, a importação leva a resultados incorretos. Consulte a seção ISSUES para futuras referências.

Você nunca deve fazer qualquer trabalho seu nos ramos criados pelo git cvsimport. É predefinido que a importação inicial criará e irá preencher uma ramificação "master" a partir do ramo principal do repositório CVS, com a qual você poderá trabalhar livremente; depois disso, você precisará fazer uma importação incremental com o comando git merge ou quaisquer outras ramificações do CVS você mesmo. É aconselhável determinar um nome remoto através de -r para separar e proteger as ramificações recebidas.

Caso a sua intenção seja configurar um repositório público compartilhado para que todos os desenvolvedores tenham permissão de leitura e escrita ou 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 deseja importar. Relativo ao <CVSROOT>. Caso não seja utilizado, o comando git cvsimport tenta ler do CVS/Repository.

-C <diretório-de-destino>

O repositório Git para o qual irá importar. Se o diretório não existir, ele será criado. A predefinição é o diretório atual.

-r <remoto>

O Git remoto para importar este repositório CVS. Move todas as ramificações do CVS nos ramos remotos/<remoto>/<ramo>, semelhante a maneira predefinida como o comando git clone usa origin.

-o <ramo-para-o-HEAD>

Quando nenhum ponto remoto definido (via -r), o ramo HEAD do CVS é importado para o ramo origin dentro do repositório Git, pois o` HEAD` já possui um significado especial para o Git. Quando um ponto remoto é especificado, o ramo HEAD é chamado de remotes/<remoto>/master espelhando-se no comportamento do comando git clone. Utilize 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 realize o "checkout" após a importação. Esta opção garante que o diretório e o índice de trabalho permaneçam intocados e não os criará caso eles não existam.

-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 estão implícitas e não devem ser utilizadas 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 git cvsimport fará com que estes autores apareçam como se sempre tivessem as variáveis GIT_AUTHOR_NAME e GIT_AUTHOR_EMAIL corretamente definidas o tempo todo. Se um fuso horário for utilizado, a variável GIT_AUTHOR_DATE terá a correção do fuso horário correspondente devidamente ajustado.

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 da revisão do CVS para os IDs dos commits do Git recém-criados. O arquivo gerado conterá uma linha para cada par (nome do arquivo, revisão) importado; cada linha será semelhante a

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:

  • cvs2git (part of cvs2svn), http://subversion.apache.org/

GIT

Parte do conjunto git[1]

scroll-to-top