成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用GTWS管理復雜的Git工作空間

系統 Linux
GTWS 是一系列腳本,它使我們在開發環境中管理不同的項目和項目的各個版本變得很容易。

[[324082]]

GTWS 是一系列腳本,它使我們在開發環境中管理不同的項目和項目的各個版本變得很容易。

Great Teeming Workspaces(GTWS)是一個 Git 的復雜工作空間管理工具包,它使我們在開發環境中管理不同的項目和項目的各個版本變得很容易。

有點像 Python 的 venv,但不是為 Python 語言準備的。GTWS 用來管理多個項目的多個版本的工作空間。你可以很容易地創建、更新、進入和離開工作空間,每個項目或版本的組合(最多)有一個本地的 origin,用來與 upstream 同步 — 其余的所有工作空間都從本地的 origin 更新。

部署

  1. ${GTWS_ORIGIN}/<project>/<repo>[/<version>]
  2. ${GTWS_BASE_SRCDIR}/<project>/<version>/<workspacename>/{<repo>[,<repo>...]}

源代碼目錄的每一級(包括全局的家目錄)可以包含一個 .gtwsrc 文件,這個文件中維護與當前級相關的設置和 bash 代碼。每一級的配置會覆蓋上一級。

安裝

用下面的命令檢出 GTWS:

  1. git clone https://github.com/dang/gtws.git

配置你的 ${HOME}/.gtwsrc。它應該包含 GTWS_ORIGIN,也可以再包含 GTWS_SETPROMPT

把倉庫目錄加到環境變量中:

  1. export PATH="${PATH}:/path/to/gtws

配置

通過級聯 .gtwsrc 文件來進行配置。它從根目錄向下遍歷,會執行在每級目錄中找到的 .gtwsrc 文件。下級目錄的文件會覆蓋上一級。

在你最上層的文件 ~/.gtws/.gtwsrc 中進行如下設置:

  • GTWS_BASE_SRCDIR:所有項目源文件目錄樹的基目錄。默認為 $HOME/src
  • GTWS_ORIGIN: 指定 origin git 目錄樹的路徑。默認為 $HOME/origin
  • GTWS_SETPROMPT: 可選配置。如果配置了這個參數,shell 提示符會有工作空間的名字。
  • GTWS_DEFAULT_PROJECT: 不指定項目或項目未知時默認的項目名。如果不指定,使用命令行時必須指明項目。
  • GTWS_DEFAULT_PROJECT_VERSION: 檢出的默認版本。默認為 master

在每個項目的根目錄進行以下設置:

  • GTWS_PROJECT: 項目的名字(和基目錄)。
  • gtws_project_clone: 這個函數用于克隆一個項目的指定版本。如果未定義,它會假定項目的 origin 對每一個版本都有一個單獨的目錄,這樣會導致克隆一堆 Git 倉庫。
  • gtws_project_setup: 在克隆完所有的倉庫后,可以選擇是否調用這個函數,調用后可以對項目進行必要的配置,如在 IDE 中配置工作空間。

在項目版本級進行以下設置:

  • GTWS_PROJECT_VERSION: 項目的版本。用于正確地從 origin 拉取代碼。類似 Git 中的分支名字。

下面這些參數可以在目錄樹的任意地方進行配置,如果能生效,它們可以被重寫多次:

  • GTWS_PATH_EXTRA: 這些是工作空間中加到路徑后的額外的路徑元素。
  • GTWS_FILES_EXTRA: 這些是不在版本控制內,但應該在工作空間中被檢出的額外的文件。這些文件包括 .git/info/exclude,每個文件都與倉庫的基目錄相關聯。

origin 目錄

GTWS_ORIGIN (大部分腳本中)指向拉取和推送的原始 Git 檢出目錄。

${GTWS_ORIGIN} 部署:

  • /<project>
    • 這是一個項目的倉庫的基目錄。
    • 如果指定了 gtws_project_clone,你可以配置任意的部署路徑。
    • 如果沒有指定 gtws_project_clone,這個路徑下必須有個名為 git 的子目錄,且 git 目錄下有一系列用來克隆的裸 Git 倉庫。

工作流示例

假設你有一個項目名為 Foo,它的 upstream 為 github.com/foo/foo.git。這個倉庫有個名為 bar 的子模塊,它的 upstream 是 github.com/bar/bar.git。Foo 項目在 master 分支開發,使用穩定版本的分支。

為了能在 Foo 中使用 GTWS,你首先要配置目錄結構。本例中假設你使用默認的目錄結構。

  • 配置你最上層的 .gtwsrc
    • cp ${GTWS_LOC}/examples/gtwsrc.top ~/.gtwsrc
    • 根據需要修改 ~/.gtwsrc
  • 創建頂級目錄:
    • mkdir -p ~/origin ~/src
  • 創建并配置項目目錄:

    • mkdir -p ~/src/foo

      cp ${GTWS_LOC}/examples/gtwsrc.project ~/src/foo/.gtwsrc

    • 根據需要修改 ~/src/foo/.gtwsrc

  • 創建并配置 master 版本目錄:

    • mkdir -p ~/src/foo/master

      cp ${GTWS_LOC}/examples/gtwsrc.version ~/src/foo/master/.gtwsrc

    • 根據需要修改 ~/src/foo/master/.gtwsrc

  • 進入版本目錄并創建一個臨時工作空間來配置鏡像:

    • 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 參數會報錯)

    • 上面命令會創建 ~/origin/foo/git/foo.git~/origin/foo/submodule/bar.git

    • 以后的克隆操作會從這些 origin 而不是 upstream 克隆。

    • 現在可以刪除工作空間了。

到現在為止,Foo 的 master 分支的工作可以結束了。假設你現在想修復一個 bug,名為 bug1234。你可以脫離你當前的工作空間為修復這個 bug 單獨創建一個工作空間,之后在新創建的工作空間中開發。

  • 進入版本目錄,創建一個新的工作空間:

    • cd ~/src/foo/master

      mkws bug1234

    • 上面的命令創建了 bug1234/,在這個目錄下檢出了 Foo(和它的子模塊 bar),并創建了 build/foo 來構建它。

  • 有兩種方式進入工作空間:

    • cd ~/src/foo/master/bug1234

      startws

      或者

      cd ~/src/foo/master/

      startws bug1234

    • 上面的命令在 bug1234 工作空間中開啟了一個子 shell。這個 shell 有 GTWS 的環境和你在各級 .gtwsrc 文件中設置的環境。它也把你工作空間的基目錄加入到了 CD,因此你可以從 base 路徑 cd 到相關的目錄中。

    • 現在你可以修復 bug1234 了,構建、測試、提交你的修改。當你可以把代碼推送到 upstream 時,執行下面的命令:

      cd foo

      wspush 

    • wspush 會把代碼推送到與你工作空間相關的分支 — 先推送到本地的 origin,再推送到 upstream。

    • 當 upstream 有修改時,你可以用下面的命令同步到本地:

      git sync

    • 上面的命令調用了 GTWS 的 git-sync 腳本,會從本地 origin 更新代碼。使用下面的命令來更新本地的 origin:

      git sync -o 

    • 上面的命令會更新你本地的 origin 和子模塊的鏡像,然后用那些命令來更新你的檢出倉庫的代碼。git-sync 也有一些其他的很好的工鞥。

    • 當要結束工作空間中的工作時,直接退出 shell:

      exit

    • 你可以在任何時間重復進入工作空間,也可以在同一時間在相同的工作空間中開多個 shell。

  • 當你不需要某個工作空間時,你可以使用 rmws 來刪除它,或者直接刪除它的目錄樹。

  • 還有一個腳本 tmws 使用 tmux 進入工作空間,能創建一系列的窗口/窗格,這完美契合我的工作流。你可以根據你自己的需求來修改它。

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-09-23 10:21:02

物聯網智能建筑

2024-11-19 15:28:15

2009-06-22 13:44:38

Porlet運維管理摩卡軟件

2011-08-09 10:20:55

GitLinux遠程倉庫

2020-01-18 18:41:13

GitGit服務器開源

2020-11-23 07:27:22

Git Flow

2021-10-13 13:51:24

MDKGit管理

2021-04-16 15:04:07

GitGit工作樹Linux

2021-02-05 15:01:41

GitLinux命令

2024-04-25 08:33:25

算法時間復雜度空間復雜度

2022-06-08 10:21:52

物聯網靈活辦公室

2020-12-07 09:56:34

GitLinux版本控制系統

2022-07-10 21:17:01

GitTigLinux

2016-12-19 14:59:55

Git二進制管理

2015-08-07 10:22:45

Git規范流程管理策略

2010-08-06 10:41:59

Flex命名空間

2019-07-16 16:40:00

Ansible工作站配置

2010-01-05 16:33:35

使用JSON

2010-05-04 16:57:45

Oracle空間管理

2024-04-03 09:03:05

項目分支管理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费a大片 | 久久久2o19精品 | 中文字幕在线第一页 | 国产乱码一区 | 亚洲精品一区二区三区在线观看 | 亚洲国产欧美在线 | 一级毛片视频 | 午夜影院网站 | 怡红院怡春院一级毛片 | 国产盗摄视频 | 一区二区三区回区在观看免费视频 | 国产一级淫片a直接免费看 免费a网站 | 亚洲理论在线观看电影 | 羞羞午夜| 99久久久国产精品免费消防器 | 久久中文字幕一区 | 91精品国产91久久久久久 | 国产农村一级国产农村 | 日本一区二区高清视频 | 日韩欧美在线观看视频 | 国产精品国产三级国产aⅴ中文 | 五月免费视频 | 久久青视频 | 国产九九九| 美女福利视频网站 | 成人性生交大片 | 日本a∨精品中文字幕在线 亚洲91视频 | 久久国内| 日韩三级在线 | 亚洲欧美日韩精品久久亚洲区 | 久久久久亚洲精品 | 最新日韩在线 | 国产亚洲精品a | 天天爽夜夜操 | 一区二区国产精品 | av一二三区 | 亚洲第一福利视频 | 色婷婷婷婷色 | 久色 | 日韩成人精品在线观看 | 久久久婷|