1

我们有大约 100 个 CVS 存储库,我们希望将它们转换为 git。我们尝试使用git cvsimportwhich 工作正常。

但是我们有一些文件名中有特殊字符的文件。特殊字符在新 git 存储库的文件名中最终成为不可打印的字符。

CVS 客户端和 CVS 服务器都在 Windows 上运行。Windows 客户端对所有文件使用 cp1252 字符集。git cvsimport使用 cygwin 调用,因为它不适用于 Windows。

运行后在 git 中获取正确文件名的任何想法git cvsimport

4

1 回答 1

1

我们最终编写了两个脚本来修复所有提交中的文件和目录名称。

对于文件:

#!/bin/bash
echo "$1 --> $2"

cmd="if [ -f '$1' ]
then
mv '$1' '$2'
fi"

git filter-branch --tree-filter "$cmd" --force -- --all

对于目录:

#!/bin/bash
echo "$1 --> $2"

cmd="if [ -d '$1' ]
then
mv '$1' '$2'
fi"

git filter-branch --tree-filter "$cmd" --force -- --all

根据操作系统和终端,您无法输入某些字符。大多数情况下,您只需?在第一个模式中键入 a。脚本假定文件/目录在当前签出分支中可见。

于 2013-06-26T06:09:49.520 回答