Pergunta

Eu tenho um projeto de 20 anos de idade, que eu gostaria de migrar do RCS para git, sem perder a história. Todas as páginas web sugerem que a One True Path é através de CVS. Mas depois de uma hora de pesquisando e tentando diferentes roteiros, eu ainda tenho que encontrar alguma coisa que sucesso converte minha árvore do projeto RCS para CVS. Eu estou esperando que as pessoas boas no Stackoverflow vai saber o que realmente funciona, ao contrário do que é reivindicada para o trabalho e que não funciona.

(Eu procurei Stackoverflow usando tanto a pesquisa de modo nativo e uma pesquisa no Google, mas se há uma resposta útil no banco de dados, eu perdi.)

Atualizar : A ferramenta rcs-fast-export em http: //git.oblomov .eu / RCS-fast-exportação foi reparado no dia 14 de abril de 2009, e esta versão parece funcionar para mim. Isso converte ferramenta até para git sem CVS intermediária. Graças Giuseppe e Jakub !!!


coisas que não trabalho que eu ainda me lembro:

  • O script rcs-to-cvs que os navios no diretório contrib das fontes CVS

  • A ferramenta rcs-fast-export em http://git.oblomov.eu/rcs-fast -exportação em versões antes de 13 abril de 2010

  • O script rcs2cvs encontrado em um documento chamado "CVS-RCS- HOW-TO documentos para Linux"

Foi útil?

Solução

InterfacesFrontendsAndTools em Git Wiki, em "Ferramentas", "Interação com outros Revision Control sistemas", 'Outros'. Ali você encontrará uma descrição e um link para RCS-fast-exportação ( gitweb ) rubi roteiro de Giuseppe "Oblomov" Bilotta.

(pesquisa Web iria encontrar também Ohloh página e anúncio para o projeto mencionado) .

Outras dicas

Como regra geral, você deve ter cuidado sobre o que scripts que você executar. Para RCS -> GIT ele pode estar em seu melhor interesse para seguir o RCS-> CVS-> GIT metodologia

.

Tomou um rápido olhar para RCS-fast-export.rb a partir de 2011-01-12 e corri em toda esta parte do código. Isso é assustador na melhor das hipóteses.

# steal username/email data from other init files that may contain the
# information
def steal_username
    [
            # the user's .hgrc file for a username field
            ['~/.hgrc',   /^\s*username\s*=\s*(["'])?(.*)\1$/,       2],
            # the user's .(g)vimrc for a changelog_username setting
            ['~/.vimrc',  /changelog_username\s*=\s*(["'])?(.*)\1$/, 2],
            ['~/.gvimrc', /changelog_username\s*=\s*(["'])?(.*)\1$/, 2],
            []
    ].each do |fn, rx, idx|
...

OK, depois de um pouco de ajustes, eu achei que era trivial para converter RCS para CVS. Os arquivos estão no mesmo formato, por isso é simplesmente uma questão de mover os arquivos para uma raiz CVS existente. Isso pressupõe que você tem acesso aos arquivos RCS.

# Create CVS root dir. You only need to do this once.
mkdir $HOME/cvs/
cd $HOME/cvs/
cvs init

# Import a repository from RCS to CVS
cp -a _projectname_/RCS $HOME/cvs/_projectname_

Só encontrei este, que funcionou bem para mim:

http://cynic.cc/blog/posts/migrate -de-RCS-to-git /

Apenas nota que "cvs-source-dir" em que as necessidades de página para ser um caminho absoluto.

Eu tive esse problema também e lutou com cvs2svn, parsecvs e outros enfeites. parsecvs tem o mais próximo, mas Keith parece ter deixado para trás e agora garfos aleatórias estão surgindo . O problema que atingiu com ele foi que iria analisar o RCS arquivos muito bem, mas a última coisa que ele fez foi git rm o arquivo, então eu teria que mexer com git reset para desfazer a exclusão.

Então eu descobri de convert mercurial: https://www.mercurial-scm.org/wiki/ConvertExtension Problema resolvido!

Eu tentei adicionar incrementalmente algumas coisas de árvores RCS separados, parece ter funcionado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top