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.11.4 → 2.34.1 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
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 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 deseja importar. Relativo ao <CVSROOT>. Caso não seja utilizado, o comando
git cvsimport
tenta ler doCVS/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 ramoHEAD
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 ramoHEAD
é chamado de remotes/<remoto>/master espelhando-se no comportamento do comandogit 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 ferramentacvs2git
. - -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 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
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áveisGIT_AUTHOR_NAME
eGIT_AUTHOR_EMAIL
corretamente definidas o tempo todo. Se um fuso horário for utilizado, a variávelGIT_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 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 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 asrc/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]