您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何使用GTWS管理Git工作空間”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何使用GTWS管理Git工作空間”吧!
Great Teeming Workspaces(GTWS)是一個 Git 的復(fù)雜工作空間管理工具包,它使我們在開發(fā)環(huán)境中管理不同的項目和項目的各個版本變得很容易。
有點像 Python 的 venv,但不是為 Python 語言準(zhǔn)備的。GTWS 用來管理多個項目的多個版本的工作空間。你可以很容易地創(chuàng)建、更新、進(jìn)入和離開工作空間,每個項目或版本的組合(最多)有一個本地的 origin,用來與 upstream 同步 — 其余的所有工作空間都從本地的 origin 更新。
${GTWS_ORIGIN}/<project>/<repo>[/<version>]${GTWS_BASE_SRCDIR}/<project>/<version>/<workspacename>/{<repo>[,<repo>...]}
源代碼目錄的每一級(包括全局的家目錄)可以包含一個 .gtwsrc
文件,這個文件中維護(hù)與當(dāng)前級相關(guān)的設(shè)置和 bash 代碼。每一級的配置會覆蓋上一級。
用下面的命令檢出 GTWS:
git clone https://github.com/dang/gtws.git
配置你的 ${HOME}/.gtwsrc
。它應(yīng)該包含 GTWS_ORIGIN
,也可以再包含 GTWS_SETPROMPT
。
把倉庫目錄加到環(huán)境變量中:
export PATH="${PATH}:/path/to/gtws
通過級聯(lián) .gtwsrc
文件來進(jìn)行配置。它從根目錄向下遍歷,會執(zhí)行在每級目錄中找到的 .gtwsrc
文件。下級目錄的文件會覆蓋上一級。
在你最上層的文件 ~/.gtws/.gtwsrc
中進(jìn)行如下設(shè)置:
GTWS_BASE_SRCDIR
:所有項目源文件目錄樹的基目錄。默認(rèn)為 $HOME/src
。
GTWS_ORIGIN
: 指定 origin git 目錄樹的路徑。默認(rèn)為 $HOME/origin
。
GTWS_SETPROMPT
: 可選配置。如果配置了這個參數(shù),shell 提示符會有工作空間的名字。
GTWS_DEFAULT_PROJECT
: 不指定項目或項目未知時默認(rèn)的項目名。如果不指定,使用命令行時必須指明項目。
GTWS_DEFAULT_PROJECT_VERSION
: 檢出的默認(rèn)版本。默認(rèn)為 master
。
在每個項目的根目錄進(jìn)行以下設(shè)置:
GTWS_PROJECT
: 項目的名字(和基目錄)。
gtws_project_clone
: 這個函數(shù)用于克隆一個項目的指定版本。如果未定義,它會假定項目的 origin 對每一個版本都有一個單獨的目錄,這樣會導(dǎo)致克隆一堆 Git 倉庫。
gtws_project_setup
: 在克隆完所有的倉庫后,可以選擇是否調(diào)用這個函數(shù),調(diào)用后可以對項目進(jìn)行必要的配置,如在 IDE 中配置工作空間。
在項目版本級進(jìn)行以下設(shè)置:
GTWS_PROJECT_VERSION:
項目的版本。用于正確地從 origin 拉取代碼。類似 Git 中的分支名字。
下面這些參數(shù)可以在目錄樹的任意地方進(jìn)行配置,如果能生效,它們可以被重寫多次:
GTWS_PATH_EXTRA
: 這些是工作空間中加到路徑后的額外的路徑元素。
GTWS_FILES_EXTRA
: 這些是不在版本控制內(nèi),但應(yīng)該在工作空間中被檢出的額外的文件。這些文件包括 .git/info/exclude
,每個文件都與倉庫的基目錄相關(guān)聯(lián)。
GTWS_ORIGIN
(大部分腳本中)指向拉取和推送的原始 Git 檢出目錄。
${GTWS_ORIGIN}
部署:
/<project>
這是一個項目的倉庫的基目錄。
如果指定了 gtws_project_clone
,你可以配置任意的部署路徑。
如果沒有指定 gtws_project_clone
,這個路徑下必須有個名為 git
的子目錄,且 git
目錄下有一系列用來克隆的裸 Git 倉庫。
假設(shè)你有一個項目名為 Foo
,它的 upstream 為 github.com/foo/foo.git
。這個倉庫有個名為 bar
的子模塊,它的 upstream 是 github.com/bar/bar.git
。Foo 項目在 master 分支開發(fā),使用穩(wěn)定版本的分支。
為了能在 Foo 中使用 GTWS,你首先要配置目錄結(jié)構(gòu)。本例中假設(shè)你使用默認(rèn)的目錄結(jié)構(gòu)。
配置你最上層的 .gtwsrc
:
cp ${GTWS_LOC}/examples/gtwsrc.top ~/.gtwsrc
根據(jù)需要修改 ~/.gtwsrc
。
創(chuàng)建頂級目錄:
mkdir -p ~/origin ~/src
創(chuàng)建并配置項目目錄:
mkdir -p ~/src/foo
cp ${GTWS_LOC}/examples/gtwsrc.project ~/src/foo/.gtwsrc
根據(jù)需要修改 ~/src/foo/.gtwsrc
。
創(chuàng)建并配置 master 版本目錄:
mkdir -p ~/src/foo/master
cp ${GTWS_LOC}/examples/gtwsrc.version ~/src/foo/master/.gtwsrc
根據(jù)需要修改 ~/src/foo/master/.gtwsrc
。
進(jìn)入版本目錄并創(chuàng)建一個臨時工作空間來配置鏡像:
mkdir -p ~/src/foo/master/tmp
cd ~/src/foo/master/tmp
git clone --recurse-submodules git://github.com/foo/foo.git
cd foo
gtws-mirror -o ~/origin -p foo
(譯注:這個地方原文有誤,不加 -s
參數(shù)會報錯)
上面命令會創(chuàng)建 ~/origin/foo/git/foo.git
和 ~/origin/foo/submodule/bar.git
。
以后的克隆操作會從這些 origin 而不是 upstream 克隆。
現(xiàn)在可以刪除工作空間了。
到現(xiàn)在為止,F(xiàn)oo 的 master 分支的工作可以結(jié)束了。假設(shè)你現(xiàn)在想修復(fù)一個 bug,名為 bug1234
。你可以脫離你當(dāng)前的工作空間為修復(fù)這個 bug 單獨創(chuàng)建一個工作空間,之后在新創(chuàng)建的工作空間中開發(fā)。
進(jìn)入版本目錄,創(chuàng)建一個新的工作空間:
cd ~/src/foo/master
mkws bug1234
上面的命令創(chuàng)建了 bug1234/
,在這個目錄下檢出了 Foo(和它的子模塊 bar
),并創(chuàng)建了 build/foo
來構(gòu)建它。
有兩種方式進(jìn)入工作空間:
cd ~/src/foo/master/bug1234
startws
或者
cd ~/src/foo/master/
startws bug1234
上面的命令在 bug1234
工作空間中開啟了一個子 shell。這個 shell 有 GTWS 的環(huán)境和你在各級 .gtwsrc
文件中設(shè)置的環(huán)境。它也把你工作空間的基目錄加入到了 CD,因此你可以從 base 路徑 cd
到相關(guān)的目錄中。
現(xiàn)在你可以修復(fù) bug1234
了,構(gòu)建、測試、提交你的修改。當(dāng)你可以把代碼推送到 upstream 時,執(zhí)行下面的命令:
cd foo
wspush
wspush
會把代碼推送到與你工作空間相關(guān)的分支 — 先推送到本地的 origin,再推送到 upstream。
當(dāng) upstream 有修改時,你可以用下面的命令同步到本地:
git sync
上面的命令調(diào)用了 GTWS 的 git-sync
腳本,會從本地 origin 更新代碼。使用下面的命令來更新本地的 origin:
git sync -o
上面的命令會更新你本地的 origin 和子模塊的鏡像,然后用那些命令來更新你的檢出倉庫的代碼。git-sync
也有一些其他的很好的工鞥。
當(dāng)要結(jié)束工作空間中的工作時,直接退出 shell:
exit
你可以在任何時間重復(fù)進(jìn)入工作空間,也可以在同一時間在相同的工作空間中開多個 shell。
當(dāng)你不需要某個工作空間時,你可以使用 rmws
來刪除它,或者直接刪除它的目錄樹。
還有一個腳本 tmws
使用 tmux 進(jìn)入工作空間,能創(chuàng)建一系列的窗口/窗格,這完美契合我的工作流。你可以根據(jù)你自己的需求來修改它。
感謝各位的閱讀,以上就是“如何使用GTWS管理Git工作空間”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何使用GTWS管理Git工作空間這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。