65.9K
CodeProject 正在变化。 阅读更多。
Home

SVN Shelve

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.53/5 (9投票s)

2008年9月23日

CPOL

5分钟阅读

viewsIcon

58000

downloadIcon

438

一个简单的实用工具,用于在 SVN 中暂存您的项目。

引言

SVNShelve 是一个小巧的实用工具,它建立在 SVN (Subversion) 之上,并允许您轻松遵循最佳实践:在每天结束时将代码更改提交到服务器。备份您的更改可以确保您不会因为硬件故障或其他类型的故障而丢失工作。

有了这个小巧的实用工具,您就可以在每天结束时将当前更改的副本保存到本地硬盘上的一个单独文件夹中,该文件夹可以被提交到另一个 SVN 存储库进行备份。然而,作为此过程的一部分,您表明源代码尚未准备好供他人检索。换句话说,代码被“搁置”起来。只有您才能访问被搁置的版本。这样,您每天对源代码的更改都会被备份,但其他团队成员将无法访问未完成的代码。

您可能需要多个源文件的原因之一是,如果您有应用程序的不同版本。例如,当您开始处理版本 2.0 时,该版本位于应用程序的 SVN 主干或分支 2.0 中,您可能需要切换您的工作文件夹并处理位于分支 1.0 中的版本 1.0。可以怎么做?开发人员可以创建一个单独的文件夹并将分支 1.0 放入该文件夹中,但那样的话,开发人员必须更改对该文件夹的引用,例如在 IIS、快捷方式和其他类型的引用中。有了这个小巧的实用工具,开发人员就可以搁置当前的工作(将其放在一边),然后切换工作文件夹到分支 1.0 并继续处理应用程序的版本 1.0。完成后,开发人员可以切换回版本 2.0,并将搁置的修改文件恢复到它们之前的状态。

另一个原因是存档您的想法。假设您正在处理项目并尝试实现复杂的逻辑。当您接近尾声时,您会发现您所做的事情并没有如预期般起作用,而且您必须走另一条路来解决这个问题。您不能提交您的工作,因为它会破坏项目或使其不稳定。因此,您所做的所有工作都必须被撤销,您必须从头开始。但是等等,有了这个小巧的实用工具,您可以保存您的工作以供将来参考,然后从头开始。任何时候您想回到您这个差点失败的想法,都可以从暂存中恢复它,并继续努力使其正确。而且,使用 SvnShelve 实用工具,您可以根据需要多次执行此操作。

甚至更多!使用此实用工具,您将能够与团队中的其他人共享您的未完成代码。只需确保您的暂存文件夹位于 SVN 存储库中。您可以暂存您的更改,这些更改将提交到您的文件夹下的暂存存储库中,而另一个开发人员可以将您的暂存文件夹加载到他/她自己的本地驱动器中,然后指向 SvnShelve 从新文件夹加载暂存,并恢复您刚刚创建的暂存。这样,您就可以共享无法提交到主项目分支或主干的未完成代码。

使用 SvnShelve 实用工具

此实用工具的源代码已附上。请不要在意代码风格。它不像我希望的那么漂亮,但是这个实用工具是在短时间内(几个小时)创建的,仅仅是因为我厌倦了等待 TortoiseSVN 实现这个简单功能。

当您第一次启动应用程序时,它会显示文件夹选择屏幕,您需要在其中选择要存储暂存文件的文件夹。您可以在此屏幕上创建一个新文件夹。

ShelveFolder.jpg

选择文件夹后,主屏幕将会出现。

MainScreen.jpg

正如您在上面的截图和其他截图中所看到的,我删除了某些敏感信息,但最初,您在“暂存”列表中看不到任何项目,因为您还没有创建任何暂存。当您单击 [暂存] 按钮时,系统会提示您选择要暂存的文件夹。

PickFolderToShelve.jpg

单击 [确定] 按钮后,将分析此文件夹是否有任何修改,如果存在修改,则会出现一个新屏幕。

ShelveScreen.jpg

该屏幕将显示修改过的文件列表。您必须输入一些描述(至少 10 个字符)。现在,您可以通过单击 [暂存] 按钮来暂存此文件夹。会发生什么?所有修改过的文件将被复制到您为暂存指定的文件夹中,该文件夹下有一个类似 GUID 的文件夹名称。在所有文件和文件夹都复制完成后,系统会提示您是否要撤销对源文件夹所做的所有更改。您可以选择“否”,所有修改将保持原样;如果您选择“是”,则所有修改都将被撤销。别担心,所有修改都已备份到您刚刚创建的暂存中。

我们如何恢复暂存?

在暂存项目后,您将在主屏幕的“暂存”列表中看到它。当您选择该暂存时,单击 [恢复] 按钮。会发生什么?原始文件夹将被更新到创建暂存时的版本,并且来自所选暂存的所有文件将被复制回原始文件夹,恢复到您暂存之前的状态。操作完成后,系统会提示您删除该暂存。

就这些了。

在某些时候,可能会提示您输入您的 SVN 登录名和密码。

SVNLogin.jpg

如果您将暂存文件夹放置在 SVN 下,系统会提示您提交新的暂存。

历史

  • 2008/9/24 - 上传了新的 ZIP 文件:添加了状态窗口。在创建和删除暂存时进行暂存提交。修复了受 SVN 控制下的删除暂存问题。
  • 2008/9/25 - 与 TortoiseSVN 集成,用于查看日志、差异和存储库。增加了打开包含文件夹的功能。在文件列表中添加了图标。
© . All rights reserved.