2015-10-20 135 views
-1

我正在使用requirejs優化器uglify和縮小我的CSS和JS文件在項目上。本項目採用的git具有以下結構:Requirejs優化+遠程分支git開發文件

  • (本地)分公司開發
  • (本地)分公司主
  • (遠程)分支來源

這是我的工作方式:

  1. 我在'dev'分支上開發,調試和添加函數。
  2. 當它工作,我承諾在「開發」,切換到「主」和我一起開發
  3. 合併在「主」分支我再壓縮和醜化我的文件夾「/ CSS」和「/ JS」感謝 到requirejs優化器和生成的文件位於「build/js」和「build/css」文件夾中。然後,我承諾在「主」
  4. 我推到服務器的命令我新建的文件git push origin master

這裏的問題是,obvisouly所有文件都推到遠程分支,「創建」的文件夾,但還有包含我的所有開發文件的'/ css'和'/ js'文件夾(帶有註釋而不是uglified),而我不希望它們被推送。

我想發展的文件留在「開發」和「大師」的git的範圍(因爲當我對他們的工作),但我想他們被忽視,當我推到遠程分支起源

我試圖緩存他們與git rm -r --cached css並將它們添加到.gitignore但這意味着當我在dev上工作,我與'主'合併他們不被git考慮,這是一個問題。 由於本地配置與發佈的配置 - 特別是js文件(網站地址,Facebook ID等),'dev'和'master'中的某些文件並不完全相同。

您是否知道如何解決此問題?

謝謝!

Paganel

回答

0

有幾種方法。在其中一些中,您沒有在版本控制下構建腳本。在其他情況下,部署沒有完整的repo克隆。

儘管哈克,一種方法是使用Grunt或gulp來運行一批包含縮小的任務,但也會簽出一個生產分支。面料甚至bash都足夠。 E.g

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 

工具,比如gitflow交易一樣,當你調用混帳HF發佈命令。

請記住,原點不是分支。這是一個遙遠的。推送出發主人通常意味着「推送當地主人給原產主人」。此外,如果您的目標是避免第三方查看源代碼,那麼任何克隆的回購代碼在其參考文獻中仍然有源代碼。您可以阻止對.git文件夾的Web訪問,但任何具有shell(或ftp/sftp)訪問權限的人都可以在任何歷史記錄點隨便找出屬於任何分支的任何文件。