2011-07-12 42 views
0

我正在为客户端的应用程序工作。客户也将在完成项目后开发应用程序,因此我需要让他们轻松完成此项任务。我一直使用CoffeeScript编写我的JavaScript,然后使用Ant脚本将它们推送到我的个人构建服务器时编译它们。在SVN上编译CoffeeScript预提交

Ant脚本调用coffee -c js/*.coffee,它将所有咖啡文件编译成具有相同名称的JS文件。我想在SVN预提交钩子中执行相同的命令。我知道使用SVN钩子来更改文件是一件坏事,但我认为,因为我实际上并没有更改任何文件,而是创建了新文件,所以这不会被归类为人们声称的大坏消息。我对SVN根本不熟悉(我通常使用Git)以及我可以找到的所有关于python脚本和svnlook工具的讨论,但没有任何实际解释它。

+0

为什么你首先使用SVN?你应该使用正确的工具来完成这项工作,而SVN似乎不是**正确的工具。 –

+0

小心细化奥斯汀......我不想使用SVN,但我需要跟踪那些为我的客户端提供的文件。这是他们的SVN服务器。我宁愿使用Git,并且如实地Git会更容易,但是我给了SVN,而且我不会说没有正当理由的“SVN是错误的工具”。 –

+0

在这种情况下,我会修改我的声明并说“SVN *预提交钩子*可能*不适合工作”。预先提交钩子的目的是为了验证你没有将错误代码放入版本控制中,以及各种其他**被动**函数。作为一般规则,您应该对* source *进行版本控制,而不是编译后的输出。很明显,在这种情况下,对于你的客户端来说,编译后的输出*就是源代码。也许一个更好的解决方案是保留两个回购:给你一个coffeescript,并为他们编写一个(编译的)javascript。 –

回答

1

老实说,我不喜欢你的想法。 svn commit不打算将编译的java脚本推送到某个服务器。 如果您的客户端需要将相同的Java脚本推送到其他服务器,该怎么办?

你最好承诺完成它的目的。

为了解决你的问题,你可以提供一个发布脚本将做到:

  • 出口SVN仓库到新位置
  • 编译coffescripts到js文件
  • 发布到主机提供的JS发布脚本的参数

发布脚本 of c也应该在svn :)

+0

CoffeeScripp编译为JavaScript,而不是java。我需要编译它们的原因是我只使用SVN将代码获取到我的客户端。他们的系统中没有咖啡编译器,也不想在他们的系统上安装Node.js和CoffeeScript,所以咖啡标记只对我和其他人都有好处。 –

+0

PS我有一个处理发布(编译coffeescripts,组合和缩小javascript)的Ant任务,如果我可以只调用那个任务 –

+0

@Dave我有点困惑 - 当你说:“客户端会我在完成项目后也正在开发应用程序“?在完成您的部分后,“产品”客户将收到什么? – dimba