让 GIT 与 CVS 共享一个工作目录(附工具)

有一种插件叫 git-cvs, Debian 一系的发布版中 apt-cache search 都可以找到,但是本人实在不想记忆太多命令,所以找了个方法让工作目录同时支持 git 与 CVS。说白了就是设置 .gitignore 和 .cvsignore 无它。

首先将两个工作目录合并,这步最关键,要确定合并后的代码的准确性。然后 CVS/ 与 .git/ 目录都要保留好。然后设置 ignore 文件就好了,土人我的 ignore 文件如下

.cvsignore

.git/*
.*
gen/*
bin/*
*.apk
*.tar.gz

.gitignore

CVS/
.cvsignore
gen/*
bin/*
*.apk
*.tar.gz

最主要的是红色部分,其他视具体情况设置

再备份个工具 cpcvs.py 用于复制CVS目录树,不太完整,见笑

#!/usr/bin/env python
import sys, os

def copyCVS1(_src, _dst):
    def _cpfunc(_, _indir, _fnames):
        if 'CVS' in _fnames:
            _fnames.remove("CVS")
            os.system("cp -a %s/CVS/ %s/%s/" % (_indir, _dst, _indir))

    os.path.walk('.', _cpfunc, _dst)

def copyCVS2(_src, _dst):
    for _indir, _dirs, _ in os.walk(_src):
        if 'CVS' in _dirs:
            _dirs.remove('CVS')
            os.system("echo cp -a %s/CVS/ %s/%s/" % (_indir, _dst, _indir))

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print("Usage: %s <source dir> <destin dir>" % sys.argv[0])
        sys.exit(0)
    _cur = os.getcwd()
    _src = sys.argv[1]
    _dst = os.path.abspath(sys.argv[2])
    try:
        os.chdir(_src)
        copyCVS2('.', _dst)
    except:
        sys.exit(1)
    finally:
        os.chdir(_cur)
posted @ 2012-04-27 12:01  luckybug  阅读(267)  评论(0编辑  收藏  举报