让 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)