如果您使用 PHP(或者我猜是任何编程语言)并使用 subversion 作为源代码控制,有没有办法让您的项目(例如):

C:\Projects est\.svn
C:\Projects est\docs\
C:\Projects est\faq.php
C:\Projects est\guestbook.php
C:\Projects est\index.php
C:\Projects est est.php

并构建/复制/无论什么,这样它就会清除某些文件并变成:

C:\Projects est\faq.php
C:\Projects est\guestbook.php
C:\Projects est\index.php

自动地?我厌倦了创建一个分支,然后遍历该分支并删除所有“.svn”文件夹、docs 目录和我的原型文件。

我知道我可能可以使用 .bat 文件来只复制我想要的特定文件,但我希望 subversion 有某种方式可以伪忽略文件,到它仍然会对其进行版本控制的地方,但你可以在哪里项目的快照,忽略您告诉它伪忽略的文件。

我知道我在网上读到了一些功能,至少可以让您在没有 .svn 文件夹的情况下进行复制,但我现在找不到它。

有帮助吗?

解决方案

如果您使用 TortoiseSVN,则可以使用导出功能自动删除所有 .svn 文件。我认为其他 svn 东西也有同样的功能。

右键单击根项目文件夹,TortoiseSVN > Export 并告诉它您想要 .svn 自由目录的位置。

其他提示

这是一个古怪的口香糖和鞋带的想法:

手动复制所有文件或首次使用现有方法复制所有文件。然后,因为我认为你在 Windows 平台上,所以安装 同步玩具 并将其配置在 订阅方式, ,这将有效地单向复制自上次伪提交以来对已在生产中的文件所做的更改。如果您想添加文件,只需手动复制它并恢复 SyncToy 操作即可。

好的,所以我的最终解决方案是这样的:

使用导出命令导出到名为“export”的文件夹,该文件夹与名为“deploy.bat”的文件位于同一目录中,然后运行部署脚本(v1 代表版本 1,这就是我当前在此版本中使用的版本)项目)此脚本使用 7-Zip,我已将其放置在系统路径中,以便我可以将其用作命令行实用程序:

rem replace the v1 directory with the export directory
rd /s /q v1
move /y export\newIMS v1
rd /s /q export

rem remove the prepDocs directory from the project
rd /s /q v1\prepDocs

rem remove the scripts directory from the project
rd /s /q v1\scripts

rem remove individual files from project
del v1\.project
rem del v1\inc\testLoad.html
rem del v1\inc\testInc.js

SET /P version=Please enter version number:

rem zip the file up with 7-Zip and name it after whatever version number the user typed in.
7z a -r v%version%.zip v1

rem copy everything to the shared space ready for deployment
xcopy v%version%.zip /s /q /y /i "Z:\IT\IT Security\IT Projects\IMS\v%version%.zip"
xcopy v1 /s /q /y /i "Z:\IT\IT Security\IT Projects\IMS\currentVersion"

rem keep the window open until user presses any key
PAUSE

我没有时间查看 SyncToy 解决方案,所以不要认为这是我拒绝该方法。我只是知道如何做到这一点,但没有时间检查那个(现在时间紧迫)。

资料来源:

http://commandwindows.com/command2.htm
http://www.ss64.com/nt/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top