如何在另一个文件夹中移动svn文件夹的内容?

联系

我们有一个svn文件夹结构,如下所示:

svn-repo
   |
   +------userA
   |        |
   |        +----projAA
   |        |
   |        +----projAB
   |        ...
   |
   +------userB
   |        |
   ...      +----projBA
            |
            +----projBB
            ...

来源直接在projAA,proj AB,...下

我们希望将来使用标签和分支。因此,我们希望具有这样的结构:

svn-repo
   |
   +------userA
   |        |
   |        +----projAA
   |        |       |
   |        |       +---tags
   |        |       |
   |        |       +---branches
   |        |       |
   |        |       +---trunk
   |        |       
   |        +----projAB
   |        |       |
   |        |       +---tags
   |        |       |
   |        |       +---branches
   |        |       |
   |        |       +---trunk
   |        ...
   |
   +------userB
   |        |
   ...      +----projBA
            |       |
            |       +---tags
            |       |
            |       +---branches
            |       |
            |       +---trunk
            |
            +----projBB
            |       |
            |       +---tags
            |       |
            |       +---branches
            |       |
            |       +---trunk
            ...

现在我的问题是我该如何自动执行此操作?

到目前为止,我已经编写了这个简单的脚本:

@echo off & setlocal

set MY_BAT_FILE=%~nx0
if [%1]==[] goto missing_param

set MY_SVN_PATH=%1
set MY_TMP_PATH=%MY_SVN_PATH%_TMP
set MY_SVN_TRUNK=%MY_SVN_PATH%/trunk
set MY_SVN_TAGS=%MY_SVN_PATH%/tags
set MY_SVN_BRANCHES=%MY_SVN_PATH%/branches
set MY_SVN_MSG="created/edited by: %MY_BAT_FILE%"

svn mkdir %MY_TMP_PATH% -m %MY_SVN_MSG%
svn move %MY_SVN_PATH%/*.* %MY_TMP_PATH% -m %MY_SVN_MSG%
svn mkdir %MY_SVN_PATH% -m %MY_SVN_MSG%
svn mkdir %MY_SVN_TRUNK% -m %MY_SVN_MSG%
svn mkdir %MY_SVN_TAGS% -m %MY_SVN_MSG%
svn mkdir %MY_SVN_BRANCHES% -m %MY_SVN_MSG%
svn move %MY_TMP_PATH%/*.* %MY_SVN_TRUNK% -m %MY_SVN_MSG%

goto END

:missing_param
echo.failed!
echo.
echo.usage:
echo.  %MY_BAT_FILE%  ^<SVN_PATH^>
echo.
echo.parameter
echo.  SVN_PATH:
echo.    path to svn repository/folder (without trailing "/").
goto END

:END
pause

但这由于和svn move %MY_SVN_PATH%/*.* %MY_TMP_PATH% -m %MY_SVN_MSG%不起作用svn move %MY_TMP_PATH%/*.* %MY_SVN_TRUNK% -m %MY_SVN_MSG%
因为不支持通配符。

如果我使用svn move %MY_SVN_PATH% %MY_TMP_PATH% -m %MY_SVN_MSG%svn move %MY_TMP_PATH% %MY_SVN_TRUNK% -m %MY_SVN_MSG%(=不带通配符),那么它不仅会复制文件夹的内容,而且会复制Hole文件夹。
结果svn-rep/userA/projAA/trunk/projAA_TMP/projAA/而不是svn-rep/userA/projAA/trunk/

如何将一个文件夹的内容仅移动到另一个文件夹?

提前致谢。

联系

我找到了解决方案。

这是新的脚本。如果有人感兴趣。

@echo on & setlocal

set MY_BAT_FILE=%~nx0
if [%1]==[] goto missing_param

set MY_SVN_PATH=%1
set MY_TMP_PATH=%MY_SVN_PATH%_TMP
set MY_SVN_TRUNK=%MY_SVN_PATH%/trunk
set MY_SVN_TAGS=%MY_SVN_PATH%/tags
set MY_SVN_BRANCHES=%MY_SVN_PATH%/branches
set MY_SVN_MSG="created/edited by: %MY_BAT_FILE%"

:: svn mkdir %MY_TMP_PATH% -m %MY_SVN_MSG%  :: dont create the tmp-directory !
:: just make a copy of the original folder
svn copy %MY_SVN_PATH% %MY_TMP_PATH% -m %MY_SVN_MSG%

:: delete the original folder
svn delete %MY_SVN_PATH% -m %MY_SVN_MSG%

:: re-create the initial folder (it is empty now)
svn mkdir %MY_SVN_PATH% -m %MY_SVN_MSG%

:: create empty branches and tags folders
svn mkdir %MY_SVN_TAGS% -m %MY_SVN_MSG%
svn mkdir %MY_SVN_BRANCHES% -m %MY_SVN_MSG%

:: move (same as rename) the temp folder to trunk
svn move %MY_TMP_PATH% %MY_SVN_TRUNK% -m %MY_SVN_MSG%

goto EOF

:missing_param
echo.failed!
echo.
echo.usage:
echo.  %MY_BAT_FILE%  ^<SVN_PATH^>
echo.
echo.parameter
echo.  SVN_PATH:
echo.    path to svn repository/folder (without trailing "/").
goto EOF

:EOF
pause  

文件夹将通过以下步骤进行操作:

1:  //svn-repo/user/proj

2:  //svn-repo/user/proj
    //svn-repo/user/proj_TMP

3:  //svn-repo/user/proj_TMP

4:  //svn-repo/user/proj_TMP
    //svn-repo/user/proj          << this is new created, empty!

5:  //svn-repo/user/proj_TMP
    //svn-repo/user/proj/branches
    //svn-repo/user/proj/tags

6:  //svn-repo/user/proj/branches
    //svn-repo/user/proj/tags
    //svn-repo/user/proj/trunk    << //svn-repo/user/proj_TMP moved (=renamed)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在TortoiseSVN中将文件(或文件夹)从一个文件夹移动到另一个文件夹?

如何在命令行中将文件夹移动到另一个文件夹

超级灵敏的触摸板将一个文件夹移动到另一个文件夹,我如何找出移动的内容?

批量移动/剪切文件夹及其内容到另一个文件夹

如何在Python中将具有随机名称的文件从一个文件夹移动到另一个文件夹?

如何将文件从模型文件夹移动到另一个文件夹?

使用sudo将文件夹移动到另一个文件夹

将整个文件夹从其父文件夹移动到另一个文件夹

如何将我的主文件夹的内容移动到另一个帐户的主文件夹?

如何确定另一个文件夹中存在的文件或文件夹?

如何使用Powershell将文件夹的内容复制到另一个特定的文件夹?

如何在一个文件夹中的文件夹内移动文件

如何将文件移动到vscode中的另一个文件夹?

如何将文件移动到PHP中的另一个文件夹

如何使用Java将文件移动到另一个文件夹?

如何在Windows上将两个文件夹映射到另一个文件夹?

读取文件,然后使用 Powershell 脚本将内容从一个文件夹移动到另一个文件夹

如何在另一个文件夹中执行命令,而不重复文件夹路径?

如何在另一个NTFS文件夹中挂载NTFS文件夹

如何在Symfony中的另一个文件夹中读取内容json文件

将特定邮件从一个文件夹移动到另一个文件夹

将文件夹的文件移动到另一个文件夹并修改或删除这些文件上的停用词时清空内容

如何将多个文件夹移动到另一个目录?

如何将数据移动到memsql中的另一个文件夹

将内容从一个文件夹复制到另一个文件夹

在另一个文件夹中显示一个文件夹的内容

如何在Ubuntu 14中将用户文件夹移动到另一个分区(NTFS)

如何在Visual Studio中通过git将项目移动到另一个文件夹

Applescript如何将文件从一个文件夹移动到另一个文件夹。无法将整数类型错误