GitBONOBO轉移GitLab

GitBONOBO轉移GitLab

解決GitBONOBO轉移到GitLab問題

成果展示

GitBonobo
GitBONOBO轉移GitLab-1.png

GitLab
GitBONOBO轉移GitLab-2.png

情境

公司的版本控管一直使用GitBonobo,發現是一個開源又快速架設的管理工具,但功能稍嫌陽春,對於未來我希望可以做到幾件事情,文件管理、自動化、CodeReviw、建立Issue,基於上面的幾點GitNonobo已經完全不符合我的需求,所以需要將現有的Git分支都轉移過去

設定

建立Powershell

$PSDefaultParameterValues['*:Encoding'] = 'utf8'

# 设置 Git 使用 UTF-8 编码
git config --global core.quotepath false   # 允许 Unicode 字符
git config --global gui.encoding utf-8     # 设置 GUI 使用 UTF-8
git config --global i18n.commit.encoding utf-8  # 提交信息使用 UTF-8 编码
git config --global i18n.logoutputencoding utf-8  # 输出日志使用 UTF-8 编码


# 設定目錄到D:
Set-Location -Path "D:"
$AppName = "ERP"

# 指定資料夾路徑
$folderPath = "D:\gitlab\$AppName"

# 來源Project Url
$SourceUrl = "[BONOBO來源IP]"

# 目的Project Url
$DesUrl = "[自己架設好的GitLab]"
$DesProjectUrl = "$DesUrl/ob/$AppName.git"
$GitLabToken = "[請於GitLab新增一個Token]"

# 檢查資料夾是否存在
if (Test-Path $folderPath) {
    Write-Output "資料夾 $folderPath 存在。"

    # 刪除現有的資料夾
    Remove-Item -Path $folderPath -Recurse -Force
    Write-Output "資料夾 $folderPath 已被刪除。"
} else {
    Write-Output "資料夾 $folderPath 不存在。"
}

# 建立資料夾
New-Item -Path $folderPath -ItemType Directory
Write-Output "資料夾 $folderPath 已被重新建立。"

#=========================================
# 設定目錄到D:
Set-Location -Path $folderPath

# 設定專案 URL
$SourceProjectUrl = "$SourceUrl/$AppName.git"

# Clone
git clone $SourceProjectUrl "$folderPath"

# 取得專案名稱
$repoName = $SourceProjectUrl -replace '.*/(.*)\.git

### 執行過程

![GitBONOBO轉移GitLab-3.png](/img/user/300-Resource/GitLab/resource/GitBONOBO%E8%BD%89%E7%A7%BBGitLab-3.png)

![GitBONOBO轉移GitLab-4.png](/img/user/300-Resource/GitLab/resource/GitBONOBO%E8%BD%89%E7%A7%BBGitLab-4.png), '$1'

# 取得所有遠端分支
git fetch --all

# 抓出所有遠端分支到本地端
$branches = git branch -r | Where-Object { $_ -notmatch '\->' }

foreach ($branch in $branches) {
    $branchName = $branch -replace 'origin/', ''
    $branchName = $branchName -replace ' ',''

    $branch = $branch -replace ' ',''
    
    Write-Output "git branch --track $branchName $branch"
    git branch --track $branchName $branch
}

# 更新所有分支
git pull --all

curl --request POST --header "PRIVATE-TOKEN: $GitLabToken" --header "Content-Type: application/json" --data '{ "name": "$AppName", "namespace_id": "10" ,"visibility": "internal" }' "$DesUrl/api/v4/projects"

git remote set-url origin "$DesProjectUrl"

#=============== README===============
# 設定檔案名稱
$filename = "README.md"

# 設定檔案內容
$content = @"
# $AppName

## 描述
由 Willis從 BONOBO GIT SERVER轉入 GitLab 2024/07/18

"@

# 寫入內容到檔案
Set-Content -Path $filename -Value $content
# ================README End================

git add .
git commit -m "Initial commit from willis"
git push --all

執行過程

GitBONOBO轉移GitLab-3.png

GitBONOBO轉移GitLab-4.png