我基于 SQL 和 Subversion 为我自己的程序编写了一个部署工具。
我能够创建不同版本的应用程序并使用 Subversion 存储它们,而这些信息存储在 SQL 中。
直到我的“部署工具”工作得很好,但现在我发现了一个问题。
在创建应用程序的版本时,我会检查头部修订并在我的程序中将其可视化。然后可以通过删除、重命名、添加或覆盖文件和文件夹来编辑最新版本。
假设我的工作副本中有以下树结构:
- ProgramFiles
- Assemblies
- Data
- Type 1
- ...
- Type 2
- ...
- Type 3
- ...
我想替换一个目录(数据)。这会调用 svn delete,然后调用 Directory.Delete,因为“svn delete”只是在您进行提交时将文件夹标记为删除。现在我想再次添加一个名为“Data”的文件夹,其中包含新的子文件夹和文件,但随后出现异常“缺少工作副本管理区域”。据我所知,问题是 ProgramFiles 下的 .svn 目录存储了文件夹 Data 应被删除的信息,如果我读取此文件夹,它会崩溃。
我也知道我可以在添加文件夹之前提交,但这会增加我的“非稳定版本”的修订号。
我怎么解决这个问题?