Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.43.2 → 2.47.1 no changes
- 2.43.1 02/09/24
- 2.35.1 → 2.43.0 no changes
- 2.35.0 01/24/22
- 2.11.4 → 2.34.8 no changes
- 2.10.5 09/22/17
- 2.9.5 07/30/17
- 2.3.10 → 2.8.6 no changes
- 2.2.3 09/04/15
- 2.1.4 no changes
- 2.0.5 12/17/14
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 doCVS/Root
. No caso de tal arquivo não existir, verifica a existência da variável de ambienteCVSROOT
. - <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 ramoHEAD
do CVS é importado para o ramo origin dentro do repositório Git, poisHEAD
já tem um significado especial para o Git. Quando um controle remoto é especificado, a ramificaçãoHEAD
é denominadaremotes/<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 ferramentacvs2git
. - -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 ochangesets
. 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 oGIT_AUTHOR_EMAIL
definidos corretamente o tempo todo. Se um fuso horário for especificado, oGIT_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 comandogit 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ênciasrc/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]