2015-04-22 44 views
1

所以我们的目标是把我的项目推到一个核心的回购站,在那里我所有的开发文件都存在,用于备份目的。Git push to master repo然后发送dist文件夹到特定路径(/www/site/v0.0.1)?

然后,我想将dist文件夹发送到这样的目录,但出于演示目的,不需要任何开发文件,因为我有多个目录,所以会导致膨胀。


所以我现在所拥有的是一个.gitignore忽略几乎一切,但dist

我跑git rm -r --cache,现在我只推dist,但现在的陷阱是我不能备份我的核心回购,万一我的本地环境被破坏,那么我已经是这一切的编译代码,和我不是逆向工程。

#!/bin/sh 
currentVersion=git describe --abbrev=0 
mkdir /var/www/example.com/public_html/projects/$currentVersion 
git --work-tree=/var/www/example.com/public_html/projects/$currentVersion --git-dir=/var/repo/cool.git checkout -f 

我能想到的两种情况

  1. 两个远程回购(core.git,demos.git),git add remote <ssh-repo/core.git & demos.git>,该缺陷是.gitignore我怎么来指定哪些回购使用忽略?还有两个回购类型很烂。

  2. 在bash脚本里面写了一些让我忽略文件,然后添加另一个工作树的东西,或者只是使用一个linux命令来把dist放到我想要的post-receive事件版本中?

第三个可能使用分支,我仍然是一个git新手,我不知道我能做什么。

编辑:所以很明显2回购是愚蠢的,如果我只是推dist文件夹,所以我觉得在bash脚本我需要以某种方式拿刚dist文件夹并使用命令将其复制到我期望的路径。

回答

0

如果DIST目录仅包含生成的工件,并从核心文件的其余部分可以重新创建我建议2个回购:

  • DIST用于生成的工件
  • 核心为休息加上一个符号链接到DIST回购(添加的git与否,每个人都有优点和缺点,给你)

沿着这条线的东西(他们没有被并排,无论是方便你):

$~/git> ls -la * 
core: 
total 36 
drwxrwxr-x 3 user at 4096 Apr 22 22:22 . 
drwxrwxr-x 4 user at 4096 Apr 22 22:22 .. 
-rw-rw-r-- 1 user at 22811 Apr 22 22:22 blah 
lrwxrwxrwx 1 user at  7 Apr 22 22:22 dist -> ../dist 
drwxrwxr-x 8 user at 4096 Apr 22 22:23 .git 

dist: 
total 16 
drwxrwxr-x 3 user at 4096 Apr 22 22:23 . 
drwxrwxr-x 4 user at 4096 Apr 22 22:22 .. 
-rw-rw-r-- 1 user at 84 Apr 22 22:24 blah_dist 
drwxrwxr-x 8 user at 4096 Apr 22 22:24 .git 

无需的.gitignore文件。从核心 DIR 推去的源代码备份回购,从DIST目录(甚至从符号链接下的内部核心)去部署回购(S)推动。 Git是足够聪明,不要混淆了2个回购:

$~/git/core> git status 
On branch master 
nothing to commit, working directory clean 
$~/git/core> cd dist/ 
$~/git/core/dist> git status 
On branch master 
Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

     modified: blah_dist 

no changes added to commit (use "git add" and/or "git commit -a") 
$~/git/core/dist> 

即使你有“生成”,应该由你可以考虑他们两个回购共享一些文件:让他们在核心回购和'生成'它们通过简单拷贝到需要的符号链接/回购dist

你甚至可以自动地在核心回购使用git push hook生成/的DIST文物刷新。