0

目前在我工作的地方,我们有以下设置(用于 ASP.NET Web 开发),使用 Git 进行版本控制(我们相对较新):

“开发”服务器是运行 IIS 的远程服务器,可在我们的内部网络上访问。这是我们部署稳定的开发网站构建的地方,因此它们在我们公司内都是可见的。在这台服务器上,我们为每个项目(通常是一个网站)创建一个 Git 存储库。

然后,开发人员会将这个存储库拉到他们的本地机器上并在本地处理它,在本地提交任何更改,然后最终将这些更改推送到远程存储库(开发服务器),并在其中将它们合并到主分支中。

我们遇到的问题是,当源代码内置到程序集 (DLL) 中时,它们会被添加到本地 Git 存储库中,将其与不应该存在的二进制文件混在一起(因为它们可以从源代码派生)。但是,如果我们不包含 DLL(即,将它们放在 .gitignore 中),那么当我们将更改推送到远程存储库时,/bin 文件夹中的 DLL 将丢失,并且该站点将无法工作。解决此问题的唯一方法是在推送更改后在开发服务器上重建站点。

有没有办法解决?理想情况下,我们需要一种方法来忽略本地存储库中的 DLL,但仍将它们“推送”到远程服务器?或者在推送更改时以某种方式触发远程服务器上的构建?

4

2 回答 2

2

听起来您需要研究“持续集成”。您可以将构建服务器设置为每次有人提交时运行干净的构建,或者您可以配置一天中的某些时间。如果构建成功(例如部署到测试服务器),您还可以触发脚本运行。另外,您可以让它运行单元测试并向团队发送电子邮件,其中包含任何错误等。

我不知道构建如何在 .net 中工作,但我最喜欢的 CI 服务器是 jenkins。 http://jenkins-ci.org/

还有其他的,例如巡航控制 http://cruisecontrol.sourceforge.net/

两者都是免费的。

于 2013-01-22T16:15:56.270 回答
1

你可以选择有两个并行的分支:一个只有“干净”的提交,每次你做出一个要推送到生产机器的提交时,你切换到“二进制”分支,(重新)合并“干净”分支到其中,构建,添加生成的二进制文件,提交和推送。

另一种需要考虑的方法可能是停止使用 Git 进行部署并使用专门的工具,例如rsync将二进制文件推送到生产环境。

于 2013-01-22T23:05:16.680 回答