GitBONOBO轉移GitLab
GitBONOBO轉移GitLab
解決GitBONOBO轉移到GitLab問題
成果展示
GitBonobo
GitLab
情境
公司的版本控管一直使用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