簡體   English   中英

git push到主倉庫,然后將dist文件夾發送到特定路徑(/www/site/v0.0.1)?

[英]Git push to master repo then send the dist folder to a specific path(/www/site/v0.0.1)?

因此,目標是將我的項目推送到一個核心存儲庫中,我的所有開發文件都存放在該存儲庫中以用於備份。

然后,我想將dist文件夾發送到類似www/site.com/v0.0.1的目錄,出於演示目的,不需要開發文件,因為我有多個目錄,這只會導致膨脹。


所以我現在擁有的是一個.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新手,不確定自己能做什么。

編輯:因此,如果我只是推dist文件夾,顯然兩個倉庫是愚蠢的,所以我認為在bash腳本中我需要以某種方式僅取dist文件夾並使用命令將其復制到所需路徑中。

如果dist目錄僅包含生成的工件,並且可以從其余核心文件中重新創建,則建議使用2個回購協議:

  • 生成的工件的dist
  • 其余的核心加上到dist repo的符號鏈接(是否添加到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文件。 核心目錄推送到源代碼備份存儲庫,從dist目錄推送(甚至從core內部的symlink下面)進入部署存儲庫。 Git很聰明,不會混淆這兩個倉庫:

$~/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 symlink / repo中。

您甚至可以使用核心存儲庫中的git push hook自動生成dist構件的生成/刷新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM