Ber*_*ach 26 git cvs utf-8 cvs2svn character-encoding
我有一个包含文件的大型CVS存储库,ISO-8859-1
并希望将其转换为git.
当然我可以配置git ISO-8859-1
用于编码,但我想有它utf8
.
现在有了这样的工具,iconv
或者recode
我可以转换工作树中文件的编码.我可以用这样的消息来提交converted encoding
.
我现在的问题是,是否有可能转换完整的历史记录?从cvs转换为git或之后.我的想法是编写一个脚本来读取git存储库中的每个提交并将其转换utf8
为新的git存储库并将其提交.
这是可能的(我不确定哈希码以及如何遍历提交,分支和标签).或者是否有一个工具可以处理这样的事情?
Cel*_*ada 20
你可以这样做git filter-branch
.我们的想法是你必须在每次提交时更改文件的编码,然后重复编写每个提交.
首先,编写一个脚本来更改存储库中每个文件的编码.它可能看起来像这样:
#!/bin/sh
find . -type f -print | while read f; do
mv -i "$f" "$f.recode.$$"
iconv -f iso-8859-1 -t utf-8 < "$f.recode.$$" > "$f"
rm -f "$f.recode.$$"
done
Run Code Online (Sandbox Code Playgroud)
然后使用git filter-branch
一次又一次地运行此脚本,每次提交一次:
git filter-branch --tree-filter /tmp/recode-all-files HEAD
Run Code Online (Sandbox Code Playgroud)
/tmp/recode-all-files
上面的脚本在哪里.
在从CVS新升级存储库之后,您可能在git中只有一个分支,其线性历史记录回到开头.如果您有多个分支,则可能需要增强git filter-branch
命令以编辑所有提交.
归档时间: |
|
查看次数: |
19415 次 |
最近记录: |