方案如下:
我有一个很大的CVS存储库,我想转换为14个不同的git存储库.这个cvs2git过程的一部分很好,并导致一个大的存储库repo.git.
对于14 git repo中的每一个,我克隆主repo并运行以下命令:
git filter-branch -d /tmp/rep --tag-name-filter cat --prune-empty --subdirectory-filter "sub/directory" -- --all
Run Code Online (Sandbox Code Playgroud)
但是,在此命令之前,我必须git filter-branch为某些git存储库执行另一个命令,因为我必须重写提交以将文件从目录移动到另一个目录.这--tree-filter是我使用的选项.以下是执行命令行的示例:
script_tree_filter="if test -f rep/to/my/file && test -d another/rep ; then echo Moving my file ; mv rep/to/my/file another/rep; fi"
git filter-branch -d /tmp/rep --tag-name-filter cat --prune-empty --tree-filter '$script_tree_filter' -- --all
Run Code Online (Sandbox Code Playgroud)
在过程结束时(14500提交:大约需要1小时!)我清理refs并使用git gc:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --prune=now
Run Code Online (Sandbox Code Playgroud)
最后,我获得了一个大小为1.2Go的存储库(显然仍然是太大了),通过查看提交,我可以看到很多旧的仍然存在.它们涉及在--subdirectory-filter命令之后不再存在的文件和目录. …
当我尝试打印PyQT字符串时,它不会转换为普通字符串.我该怎么做?请参阅下面的代码.
def _execute_test(self):
test_in = str(self.buildFlags.inFlags)
test_out = str(self.buildFlags.exFlags)
print(str(test_in))
print("============")
print(str(test_out))
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
>>> [PyQt4.QtCore.QString(u'Documents'), PyQt4.QtCore.QString(u'New folder')]
Run Code Online (Sandbox Code Playgroud)