我们有一个由两名开发人员 (PC) 和两名设计师 (Mac) 组成的小团队。由于我们是一家广告公司而不是一家代码商店,因此我们不会在软件工具上花费太多。几年前我们曾经使用 Visual Studio,但现在我们使用 Visual Web Developer 来创建 ASP.NET 站点(.NET4 支持 - 买不起新的 VS 许可证)。我们将网站创建为网站项目(而不是 Web 应用程序或 MVC),并在专用开发箱(Win 2008 rc2 服务器)上运行。
TortoiseHg 是我最近玩过的,考虑到我们的需求,Hg 和 Git 之间的区别可以忽略不计。所以我们可以使用任何一个。
我想做的是找到一种相对简单的方法来使用可与我们使用的技术/软件配合使用的免费工具/服务来部署站点/提交。
如果解决方案可以在我们的一台服务器上设置一次但可以部署到多个位置,我不介意设置解决方案。我一直在寻找 CI 服务器 (Jenkins/Hudson),但它们似乎对我们的要求来说太过分了。我们是否需要一个用于 50 个网页和相关 Assets 的构建服务器?
我尝试了 Mercurial HgWebDir 设置——Hg/Python 版本的潜在问题太多,每个生产服务器的设置时间太长——我不得不下载源代码,进行更改并重建它……OTT。 Git 似乎最适合与 SSH 一起使用,同样,更多的是第 3 方的东西。
是否有任何基于 Windows 的软件我们可以安装在生产服务器或中央服务器上,以帮助进行简单的部署(即复制最新的更改到网站目录和回滚)而不花费地球(最好是免费的)并且不依赖于获得这个那个的正确版本来正常工作。
最佳答案
假设您选择了 AppHarbor用于您的 .NET 托管。
他们为您提供了一个 GIT 存储库,您可以在其中拥有您的源代码,并且在每次推送 到 appharbor 时,他们将自动构建您的解决方案并使其在线可用。
考虑到这一点,您可以有一个分支作为您的产品,其他所有东西都可以提供帮助,例如用于托管源代码和帮助文件.
如果您选择一家只为您提供 FTP 上传功能的托管公司,您可以使用自动脚本从您的提交中发布数据(使用网络 Hook ,您可以轻松地触发一个网络脚本来获取更改(或者整个存储库)并发布在网络上)。
无论哪种方式都很好,这始终取决于你们,你们愿意尝试什么,并不断尝试替代方案,直到你们都对结果感到满意为止。
有了这个,您可以简单地使用 Visual Studio 和 Tortoise GIT甚至在 Visual Studio 中安装 GIT Extension 并且不再使用任何软件...
关于ASP.NET 网站项目、Mercurial/Git、部署——一种简单的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9496952/
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou