如何将svn中保存为文本/ascii的图像大批量转换为二进制?

如何将svn中保存为文本/ascii的图像大批量转换为二进制?,svn,binary-data,corrupt-data,Svn,Binary Data,Corrupt Data,不知何故,图像被保存为text/ascii,我需要递归地对数百个图像目录执行此操作,所有这些目录都位于一个根images目录下 我收到一些指示,指示我: svn proplist <yourfile> svn propdel svn:eol-style <yourfile> svn propset svn:mime-type application/octet-stream <yourfile> svn属性列表 svn propdel svn:eol样式 s

不知何故,图像被保存为text/ascii,我需要递归地对数百个图像目录执行此操作,所有这些目录都位于一个根
images
目录下

我收到一些指示,指示我:

svn proplist <yourfile>
svn propdel svn:eol-style <yourfile>
svn propset svn:mime-type application/octet-stream <yourfile>
svn属性列表
svn propdel svn:eol样式
svn propset svn:mime类型应用程序/八位字节流
是否有一些本地svn递归方法可以做到这一点?如果没有,有人能告诉我如何用bash脚本递归地应用它吗?

在shell上:

find -name '*.png' -exec \
sh -c "svn propdel svn:eol-style {} && svn propset svn:mime-type image/png {}" \;

我没有一个Subversion存储库可以测试这一点,但应该不会太难:

find . -name .svn -prune -o print
这将列出工作目录(sans.svn目录)中的所有文件

现在,您可以将其与while read循环相结合

find . -name .svn -prune -o print | while read file
do
   svn propdel svn:eol-style $file
   svn propset svn:mime-type application/octet-stream $file
done
现在,您注意到我没有验证文件是否设置了该属性。我根本不在乎。而且,这将处理每个文件。如果只想执行特定类型的文件,则必须修改
find
命令:

find . -name .svn -prune -o -name "*.jpg" print
我强烈建议您从一个干净的Subversion工作目录开始,并运行如下测试:

find . -name .svn -prune -o print | while read file
do
   echo svn propdel svn:eol-style $file
   echo svn propset svn:mime-type application/octet-stream $file
done

如果输出看起来不错,则移除回声,让其撕裂。

以下powershell代码将实现您希望执行的操作:

foreach( $file in get-childitem -name -include *.png -exclude .svn -recurse) {
    &  svn propdel svn:eol-style $file;
    & svn propset svn:mime-type image/png $file
};