Requirejs 优化器 + git 远程分支中的开发文件

Requirejs optimizer + git developement files in remote branch

我正在使用 requirejs 优化器来缩小和缩小项目中的 CSS 和 JS 文件。该项目使用 git 架构如下:

这就是我的工作方式:

  1. 我在 'dev' 分支上开发、调试和添加功能。
  2. 当它工作时,我提交 'dev',切换到 'master' 并与 dev
  3. 合并
  4. 在 'master' 分支中,我缩小并丑化了我的文件夹 '/css' 和 '/js' 谢谢 requirejs 优化器和生成的文件位于文件夹 'build/js' 和 'build/css' 中。然后我在 'master'
  5. 中提交我的新构建文件
  6. 我用命令git push origin master
  7. 推送到服务器

这里的问题是显然所有文件都被推送到远程分支,"build" 文件夹还有包含我所有开发文件的 '/css' 和 '/js' 文件夹(有评论但没有丑化),而我不希望它们被推送。

我希望 开发文件保留在 'dev' 和 'master' 的 git 范围内(当我处理它们时) 但我希望在推送到远程分支 origin.

时忽略它们

我试图用 git rm -r --cached css 缓存它们并将它们添加到 .gitignore 但这意味着当我在 dev 上处理它们并与 'master' 合并时它们不是git 不再考虑,这是一个问题。 此外,'dev' 和 'master' 中的一些文件由于本地配置与发布配置不完全相同 - 特别是 js 文件(网站地址、facebook ID 等)

你知道如何解决这个问题吗?

谢谢!

帕加内尔

有几种方法。在其中一些中,您没有在版本控制下构建脚本。在其他情况下,部署没有存储库的完整克隆。

虽然很老套,但一种方法是使用 G运行t 或 gulp 来 运行 一批任务,包括您的缩小,但也检查生产分支。 Fabric 甚至 bash 就足够了。例如

r.js --params a b c d
git add -all
git commit -am "build task"
git push origin master
git checkout production
git checkout master js-build
git rm -r --cached js/
git add js-build/
git commit -am "cleaning sources"
git push -f origin production
git checkout master

当您调用 git hf 释放命令时,像 gitflow 这样的工具会处理这些问题。

请记住,origin 不是一个分支。它是一个遥控器。推送到 origin master 通常意味着 "push local master to origin master".

此外,如果您的目标是避免第三方看到源代码,任何克隆的存储库在其引用中仍然有源代码。您可以阻止对 .git 文件夹的 Web 访问,但是具有 shell(或 ftp/sftp)访问权限的任何人都可以自由地找出在任何历史点属于任何分支的任何文件。