通常我手动执行此操作:
mkdir -p folder1/foder2/folder3
cd folder1/foder2/folder3
svn export svn://127.0.0.1/svn/app1/branches/branch1/folder1/foder2/folder3/file1.txt
有没有我不需要执行第 1 步和第 2 步的方法或直接 svn export 命令?我希望有一种更简单的方法,svn 会自动创建从 SVN 到我的本地机器的目录结构。
谢谢!
通常我手动执行此操作:
mkdir -p folder1/foder2/folder3
cd folder1/foder2/folder3
svn export svn://127.0.0.1/svn/app1/branches/branch1/folder1/foder2/folder3/file1.txt
有没有我不需要执行第 1 步和第 2 步的方法或直接 svn export 命令?我希望有一种更简单的方法,svn 会自动创建从 SVN 到我的本地机器的目录结构。
谢谢!
好的,现在我想出了一个创建相对路径的 bash 脚本。我对 bash 脚本没有深入的了解,所以这有点难看。请原谅我。但希望这能激起一个想法。
svn_export.sh
#!/bin/sh
for var in "$@"
do
svnArg1=$var;
svnArg2=`echo "$svnArg1" | sed -e 's/file:\/\/\/usr\/share\/svn\///'`;
tempDir=`dirname $svnArg2`;
tempFile=`basename $svnArg2`;
if [ -n "$tempFile" ]; then
if [ ! -d "$tempDir" ]; then
echo "mkdir -p $tempDir";
echo `mkdir -p $tempDir`;
fi
echo "svn export $svnArg1 $svnArg2";
echo `svn export $svnArg1 $svnArg2`;
fi
done
exit 0;
用法:
sudo svn diff -r 1:HEAD --summarize file:///usr/share/svn/TestRepository/ | awk '{print $2}' | xargs ./svn_export.sh
输出
A TestRepository/trunk/test2.txt Export complete.
A TestRepository/trunk/test3.txt Export complete.
A TestRepository/trunk/test.txt Export complete.
所以基本上,你只需要将's 参数file:\/\/\/usr\/share\/svn\/
中的这个字符串修改sed
为你的 svn URL。
例子:svn:\/\/127.0.0.1\/svn\/project1\/branches\/
所以现在,用法如下:
svn diff -r 1540:HEAD --summarize svn://172.0.0.1/svn/project1/branches/branch1 | awk '{print $2}' | xargs ./svn_export.sh
希望这可以帮助!
如果存储库中已知硬编码路径的情况 - 是的,只需在导出中写入目标路径(手动)
svn export svn://127.0.0.1/svn/app1/branches/branch1/folder1/foder2/folder3/file1.txt folder1/foder2/folder3/file1.txt
如果是动态可变的相对路径 - 不,您没有内部预制选项。但是,如果您从存储库中导出修订内容,您可以使用svnlook
子命令和代码中的自己的逻辑来实现它
在as in 中似乎没有-p
等价物,你最好的选择是在你的svn export/checkout
mkdir
.bashrc
function svnExport() {
mkdir -p "$(dirname "$1")" && svn export "$0$1" "$1"
}
所以你的具体例子是
svnExport 'svn://127.0.0.1/svn/app1/branches/branch1/' 'folder1/foder2/folder3/file1.txt'
编辑:原来--force
将处理子目录,但有自动覆盖等副作用。因此,如果您不担心,那么您可以这样做
svn export --force 'svn://127.0.0.1/svn/app1/branches/branch1/folder1/foder2/folder3/file1.txt' 'folder1/foder2/folder3/file1.txt'
或者
function svnExport() {
svn export --force "$0$1" "$1"
}