在 Git 尚未統治版本控制的年代(2000s 早期),Borland JBuilder 作為 Java 開發旗艦 IDE,配合 Microsoft Visual SourceSafe (VSS) 為無數國內項目提供了「集中式」版本管理方案。雖然技術棧已老舊,但其整合架構設計思想——IDE 無感知 VCS 操作、統一工作流抽象——對理解現代 IDE 插件機制仍有參考價值。本文復盤完整配置流程,兼作技術考古與遺留系統維護參考。
VSS 6.0 安裝前必須清理注冊表殘留,否則易發生「資料庫鎖定」、「用戶列表異常」等疑難雜癥:
# 1. 運行 regedit.exe
# 2. 刪除 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SourceSafe 全鍵
# 3. 以管理員身份運行安裝程序,選擇「服務器安裝」
srcsafe.ini 等核心配置文件,此目錄即為「數據庫根目錄」。JBuilder 菜單:Team → Select Project VCS → 選擇 "Visual SourceSafe"
srcsafe.ini 所在目錄,如 \\server\vss\project1)此過程將本地專案文件遞歸添加至 VSS,並在本地生成 vssver2.scc 等綁定標記文件。
VSS Admin → Users → Add User,按真實姓名/拼音命名,設置初始密碼。
Tools → Options → Project Security → 勾選 Enable Project Security。此舉將權限粒度從「整個數據庫」細化到「專案/目錄」。
Tools → Rights by Project,典型角色配置:
| 角色 | Read | Check Out | Check In | Add/Rename/Delete | Destroy Permanently | Admin |
|---|---|---|---|---|---|---|
| 開發人員 | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ |
| 組長/Release Manager | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| VSS 管理員 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
VSS 數據庫文件存放於網絡共享,必須在 **Windows 資源管理器 → 共享目錄 → 安全** 設置對應用戶組的 **讀/寫/修改** 權限。缺少此步將導致「Access Denied」假性 VSS 錯誤。
兩種途徑:
Team → Pull Project from VSSFile → New → Project → Pull Project from VSS步驟:映射網絡共享 → 選擇數據庫 → 輸入個人賬號 → 選擇專案 → 指定**空**本地目錄 → Finish。
Team → Commit Browser → 查看變更列表 → 勾選需更新文件 → Commit (此處 Commit 實為 Update/同步)。JBuilder 6 支持對單個變更選擇 Action(合併/覆蓋/忽略)。
# 操作:右鍵文件 → Visual SourceSafe → Check Out "FileName.java"
# 修改代碼...
# 操作:右鍵文件 → Visual SourceSafe → Check In "FileName.java" → 輸入註釋
鐵律: 未 Check Out 不可編輯;編輯完成必須 Check In,否則文件長期鎖定阻塞他人。
| 現象 | 成因 | 緩解方案 |
|---|---|---|
| 刪除操作 50% 機率導致 VSS 停頓 (ss.exe 僵死) | VSS 6.0 內核缺陷,網絡延遲加劇 | 1. 任務管理器殺掉 ss.exe 進程 2. 用 VSS Explorer 手動清理殘留 3. 避免大批量刪除,拆分小批次 |
| "File is exclusively locked by another user" | 用戶忘記 Check In、異常斷網、鎖文件損壞 | VSS Admin → 右鍵文件 → "Undo Checkout" (需 Admin 權限) |
| 數據庫損壞 | 單點故障、磁盤錯誤、非正常關機 | 每日備份 srcsafe.ini + data 目錄;運行 analyze -f -v4 修復 |
| 大文件/二進制文件膨脹 | VSS 存儲全量歷史,不增量壓縮 | 嚴禁提交 .class/.jar/.war/.exe;大資產走文件服務器/藝術品庫 |
若維護遺留系統,建議漸進式遷移:
vss2git、git-tfs 或商業工具將歷史導入 Git,保留提交時間/作者/註釋。VSS + JBuilder 曾是國內 Java 開發的「標準配置」,其集中式鎖定模式、IDE 深度整合、權限矩陣設計,在當時解決了「多人協作不覆蓋代碼」的核心痛點。雖然今日視角下其單點故障、無分支合併、性能脆弱等短板顯而易見,但理解這套體系的運作邏輯,有助於我們珍視 Git 分布式模型帶來的自由,也能在接手二十年前的遺留項目時,不至於束手無策。技術更迭不息,工程師的適應與重構能力,才是真正的核心資產。