6

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

C:\Projects\test\.svn
C:\Projects\test\docs\
C:\Projects\test\faq.php
C:\Projects\test\guestbook.php
C:\Projects\test\index.php
C: \项目\测试\测试.php

并构建/复制/不管它,所以它会清除某些文件并变成:

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

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

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

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

4

3 回答 3

6

如果您使用 TortoiseSVN,您可以使用导出功能自动删除所有 .svn 文件。我认为其他 svn 事物具有相同的功能。

右键单击根项目文件夹,然后选择TortoiseSVN > Export,并告诉它您想要.svn免费目录的位置。

于 2008-08-08T13:10:13.250 回答
2

手动复制所有文件或首次使用现有方法。然后,由于我认为您在 Windows 平台上,因此安装SyncToy并在subscribe 方法中对其进行配置,这将有效地单向复制自上次伪提交到生产环境以来对已经在生产中的文件所做的更改。如果您想添加一个文件,您可以手动复制它并恢复 SyncToy 操作。

于 2008-08-08T13:07:03.787 回答
1

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

使用导出命令导出到与名为“deploy.bat”的文件位于同一目录中的名为“export”的文件夹,然后我运行部署脚本(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/

于 2008-08-08T17:46:03.800 回答