Windows SVN cmd在不恢复文件的情况下更新
我有一个Windows批处理,它将定期运行以从SVN添加/删除文件 我希望脚本执行以下操作:Windows SVN cmd在不恢复文件的情况下更新,windows,batch-file,svn,Windows,Batch File,Svn,我有一个Windows批处理,它将定期运行以从SVN添加/删除文件 我希望脚本执行以下操作: 删除从SVN在Windows(非SVN)中删除的所有文件 添加尚未受版本控制的所有文件(*.) 提交所有更改 更新文件夹以确保文件夹是最新的 我有以下一批: :: Go to my folder (already checked out as SVN folder) cd C:\MyFolder\ :: Delete/Remove all missing files svn status || ? {
*.
):: Go to my folder (already checked out as SVN folder)
cd C:\MyFolder\
:: Delete/Remove all missing files
svn status || ? { $_ -match '^!\s+(.*)' } | % { svn rm $Matches[1] }
:: Add new files
svn add *.*
:: Commit all changes
svn commit *.* -m ^"Committed on %date% %time%"
:: Update the folder
svn up --accept mine-full
在Windows资源管理器中删除文件
new file.txt
我自己之后会发生什么
!新文件.txt
new file.txt
也许您可以使用“剪切”来执行删除部分,如下所示(从上一个输出的第9列开始接受所有内容):
最后我自己把它修好了。感谢中的@user3689460 我已经添加了
svn delete“missing.list”
否则它会将missing.list
文件添加到svn中
下面是我的最后一个批处理脚本:
:: Go to my folder (already checked out as SVN folder)
cd C:\MyFolder\
:: Delete/Remove all missing files
svn status | findstr /R "^!" > missing.list
for /F "tokens=* delims=! " %%A in (missing.list) do (svn delete "%%A")
del missing.list 2>NUL
svn delete "missing.list"
:: Commit Deletion of missing files
svn commit -m "Deleted files from MyFolder on %date% %time%"
:: Add new files
svn add *.*
:: Commit all changes and additions
svn commit *.* -m ^"Committed MyFolder on %date% %time%"
:: Update the folder
svn up --accept mine-full
切向上,任何看起来像
grep'x'| sed's/y/z/'
的东西都可以重构为sed'/x/s/y/z/'
,任何看起来像grep'x'| awk'{y}'
的东西都可以重构为awk'/x/{y}'
(尽管注意到他们的regex方言在某些细节上有所不同,因此可能需要调整复杂的x
)。尽管您显然使用的是一些玩具操作系统,但您可能需要阅读Unix-y
C:\MyFolder>svn status || ? { $_ -match '!\s+(.*)' } | { svn rm $Matches[1] }
! new file.txt
C:\MyFolder>svn add *.*
svn: Skipping argument: E200025: '.svn' ends in a reserved name
svn: warning: W150002: 'C:\MyFolder\old.txt' is already under
version control
svn: E200009: Could not add all targets because some targets are already
versioned
svn: E200009: Illegal target for the requested operation
C:\MyFolder>svn commit *.* -m "Committed on 2018-10-23 12:15:57.90"
svn: Skipping argument: E200025: '.svn' ends in a reserved name
C:\MyFolder>svn up --accept mine-full
Updating '.':
Restored 'new file.txt'
At revision 21.
Press any key to continue . . .
svn status | grep "^\!" | cut -c 9- | xargs svn rm
:: Go to my folder (already checked out as SVN folder)
cd C:\MyFolder\
:: Delete/Remove all missing files
svn status | findstr /R "^!" > missing.list
for /F "tokens=* delims=! " %%A in (missing.list) do (svn delete "%%A")
del missing.list 2>NUL
svn delete "missing.list"
:: Commit Deletion of missing files
svn commit -m "Deleted files from MyFolder on %date% %time%"
:: Add new files
svn add *.*
:: Commit all changes and additions
svn commit *.* -m ^"Committed MyFolder on %date% %time%"
:: Update the folder
svn up --accept mine-full