svn - Powershell 源代码控制/颠覆场景。这可能吗?

标签 svn powershell scripting tortoisesvn visualsvn-server

我对 Subversion/源代码管理相当陌生,所以我想知道这是否可能。

我安装了一台 2012 年的服务器,它将作为我们所有脚本(主要是 Powershell)的中心位置。它将托管执行监控任务的生产脚本以及我们的系统管理员使用的各种其他有用/临时脚本。

现在,我想实现某种形式的源代码控制/颠覆,以便我们可以跟踪对脚本所做的更改。但是,我不确定我想要的那种场景是否可行。

我想要一个名为 E:\Scripts 的文件夹,其中存储和执行所有脚本。

但是,每当有人想要更改该文件夹中的脚本时,他们不应该直接编辑它,而应该通过一些源代码控制/Subversion 工具(例如 TortoiseSVN)。

现在,我已经使用了一点 TortoiseSVN,但也许我不明白它到底是如何工作的。我创建了一个存储库 (E:\SVN) 并向其中添加了 E:\Scripts 文件夹。我可以 checkout 脚本并修改它,但是当我提交更改时,它不会更新 E:\Scripts 中的脚本(我以为会更新,也许我错了)。

这种情况可能发生吗?

最佳答案

是的,这很有可能。事实上,这就是源代码控制的全部内容......

如果您有 Subversion 存储库(并且您使用的是 Apache 或 svnserve——不要使用 file:///!),您可以轻松地做您想做的事情。

我认为E:驱动器已共享。没有必要这样做。相反,每个用户都会拥有 Subversion 存储库的工作副本。此工作副本将位于用户自己的本地系统上。只需进行 Subversion 检查,他们就可以在本地系统上获得所有 PowerShell 脚本的最新、最好的版本。如果他们做出改变,他们可以提交该改变。如果他们想获得最新的更改,他们会进行 Subversion 更新。同样,所有这些都在本地系统上。

现在,让我们来看一个稍微不同的场景。您希望这些脚本位于生产服务器上,并且也是最新的版本。您可以使用持续集成系统,例如 Jenkins为您提供帮助。

Jenkins 可以监视 Subversion 存储库,当它检测到更改时,将更新它自己的工作副本。您可以将此工作副本放置在任何地方。例如,您可以让 Jenkins checkout 在所有服务器都可以访问的某个共享目录上定义的工作目录。当有人更改脚本并 checkin 该更改时,Jenkins 将更新其工作副本,并且所有服务器将自动获取更改。

一些站点使用特殊的生产分支。这样,开发就可以像平常一样在主干上进行测试等。但是,当他们准备好在服务器上安装更改时,他们会将更改合并到生产分支上。他们的 Jenkins 服务器将看到更改,并更新其工作目录,该目录恰好是所有服务器都可以访问的共享目录。

顺便说一下,PowerShell 与 Subversion 命令行客户端配合得很好。当您安装 TortoiseSVN 时,您可以安装 Subversion 命令行客户端。这可能是将 PowerShell 与 Subversion 结合使用的好方法。

关于svn - Powershell 源代码控制/颠覆场景。这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22528016/

相关文章:

linux - 如何在 Bash 脚本中使用 Awk [有问题]?

python - pysvn:如何查明本地目录是否受版本控制?

svn - 您将代码签名证书的私钥存储在哪里?

svn - 如何在指定命令的目录名称中使用空格从 PowerShell 调用 CMD.EXE

powershell - Powershell脚本使用不带路径的.csv文件搜索文件夹

c# - 如何将嵌套类组织为 Unity 中的引用?

svn - 如何查看本地副本的存储库路径?

variables - 带有 GUI 的 Powershell 不会设置变量

bash - Git 哈希对象在 Powershell、CMD 和 Bash 中产生不同的 SHA1?

javascript - 在 ie 浏览器上禁用 JavaScript