程式開發流程

現代程式開發流程優化

現代程式開發流程優化

本文檔旨在優化 VS Code、GitHub、Hugging Face Spaces 及本地 Docker/GitLab 之間的互動流程,以提升開發、部署與備份的效率。

核心優化理念

  • 單一事實來源 (Single Source of Truth): 所有正式程式碼以 GitHub 為中心,Hugging Face Spaces 等平台僅作為部署或測試目標。
  • 分支策略 (Branching Strategy): 開發新功能或修復錯誤時建立獨立分支 (如 feature/add-new-model),確保 main 主分支隨時穩定。
  • 遠端命名 (Remote Naming): 為不同遠端倉庫使用清晰名稱,例如 origin 代表 GitHub,hf 代表 Hugging Face。

優化流程 (GitHub + Hugging Face)

第零步:初始設定 (只需做一次)

  1. 從 GitHub Clone: 將專案的「主要」Repo 從 GitHub Clone 到本地。
    git clone https://github.com/YOUR_USERNAME/YOUR_REPO.git
    
    cd YOUR_REPO
  2. 新增 Hugging Face Remote: 將 Hugging Face Spaces Repo 添加為新的遠端目標,命名為 hf
    # 在你的 Hugging Face Space Repo 頁面可以找到這個 URL
    
    git remote add hf https://huggingface.co/spaces/YOUR_HF_USERNAME/YOUR_SPACE_NAME

第一步:日常開發循環

  1. 建立開發分支: 從最新的 main 分支建立一個新的 feature 分支。
    git checkout main
    
    git pull origin main
    
    git checkout -b new-feature-branch
  2. 本地修改與提交: 在 VS Code 中修改程式碼,並進行 commit。
    git add .
    
    git commit -m "feat: 實作新功能"
  3. 推送到 Hugging Face 進行測試: 將您的開發分支推送到 Hugging Face Spaces 的 main 分支來觸發更新。
    # 語法: git push <遠端名稱> <本地分支>:<遠端分支>
    
    git push hf new-feature-branch:main
    注意:此操作僅更新 Hugging Face 遠端的 main 分支,不會影響您 GitHub 上的 main 分支。
  4. 線上確認: 在 Hugging Face Spaces 上觀察程式是否如預期般運作。
  5. 合併到主分支並推送到 GitHub: 確認測試無誤後,將開發成果正式合併回 GitHub 的 main 分支。
    git checkout main
    
    git merge new-feature-branch
    
    git push origin main

優化流程 (本地 Docker + GitLab)

  1. 遠端連線: 推薦使用 VS Code 的 Remote - SSHRemote - Containers 擴充套件,以獲得無縫的開發體驗。
  2. 本地 Docker 測試: 在開發分支上修改程式碼 (包括 Dockerfile),並在遠端主機的終端機執行 docker builddocker run 進行測試。
  3. 確認後推送到 GitLab:

    當本地 Docker 環境確認無誤後,將變更 commit,然後推送到 GitLab。最佳實踐是發起一個 Merge Request (MR) 進行審查。

    # 將開發分支推送到 GitLab
    
    git push gitlab new-feature-branch
    
    # (或者,簡化流程) 合併後直接推送 main 分支
    
    git checkout main
    
    git merge new-feature-branch
    
    git push gitlab main
    
    

流程總結比較

項目 原始流程 建議的優化流程
程式碼來源 從 Hugging Face Clone 從 GitHub Clone
開發方式 直接在主分支修改 使用 feature 開發分支
測試部署 push 到 Hugging Face 測試 feature 分支 push 到 HF 的 main 測試
最終備份 確認後再 push 到 GitHub 測試通過後,將 feature 分支合併回 mainpush 到 GitHub
Git 歷史 main 分支可能包含測試中的提交 main 分支歷史乾淨,只包含已完成的功能

留言