這是歷史版本頁面 — 看 TortoiseSVN (32-bit) 最新版本

TortoiseSVN:Windows 上右鍵就能做的 SVN 版本控制

TortoiseSVN (32-bit) 軟體圖示 TortoiseSVN (32-bit) 1.6.0 資料更新 2009-03-22 閱讀約 6 分鐘

你正在改一個寫了好幾個月的專案,改了三天,突然發現某個功能壞了,而且你完全想不起來是哪一行改壞的。你翻遍資料夾,只看到一堆「final」、「final2」、「真的最後版」的副本,每個都長得差不多,根本不知道哪個才是對的。你只是想找回昨天還能跑的版本,卻得花半小時比對檔案,最後放棄,從頭再寫一次。

其實你需要的不是更小心,而是把每次改動都記錄下來。很多人會用「複製一份資料夾改名」來當備份,但這招在檔案一多、改動一頻繁時馬上失效,你永遠不知道哪一份是最新的,也不知道哪一份改了什麼。版本控制軟體就是為了解決這件事而存在:它幫你記錄每一次變更、讓你隨時回到任何一個舊版本,也讓團隊知道誰改了什麼。

01TortoiseSVN 到底能做什麼?

它是一套 Windows 用的 SVN 版本控制客戶端,安裝後會整合進檔案總管的右鍵選單。你對檔案或資料夾按右鍵,就能直接提交變更、更新到最新版、建立分支或合併版本。它會記錄每次修改的歷史,讓你可以隨時查看某一行是誰在什麼時候改的,也可以把整個專案還原到某個舊版本。

02我怎麼把改好的檔案送出儲存?

在專案資料夾按右鍵,選「SVN Commit」,它會列出所有變更過的檔案,你勾選要提交的項目、寫一段說明文字,就能把變更送到伺服器。提交前它會自動檢查哪些檔案是新加的、哪些是刪除的,你可以在對話框裡確認後再送出,避免不小心漏掉檔案。

03它怎麼幫我找回舊版本?

在檔案或資料夾上按右鍵,選「TortoiseSVN → Show Log」,會看到完整的提交歷史,每一筆都標了時間和說明。選中任何一筆,按右鍵選「Revert to this revision」,工作副本就會還原成那個時間點的狀態。如果你只想看某一行是誰改的,可以用「Blame」功能,它會逐行標出作者和修訂版本。

04團隊協作時,兩個人改到同一個檔案怎麼辦?

當你更新檔案時,如果別人也改了同一處,會發生衝突。TortoiseSVN 會跳出衝突解決視窗,把兩邊的版本並排顯示,你可以選擇保留哪一邊、或手動合併兩邊的內容。它也會用顏色標出差異,讓你看清楚哪些行是對方改的、哪些是你改的,再決定怎麼處理。

05分支和合併是什麼?我什麼時候會用到?

分支是從主線複製出一條獨立的開發線,適合拿來做新功能或實驗性修改,不會影響主線的穩定版本。做完後再把分支合併回主線。在 TortoiseSVN 裡,按右鍵選「Branch/Tag」就能建立分支,合併時選「Merge」,它會幫你比對兩邊的差異並套用變更。如果你一個人開發、沒有同時維護多個版本的需求,分支功能可能用不太到。

06這套軟體適合一個人寫程式用嗎?

適合。就算沒有團隊,版本控制對個人開發也很有用。你可以隨時回溯到舊版本、比較不同時期的程式碼差異、確認某個功能是哪次提交加進來的。它不需要伺服器也能用,你可以把 repository 建在本機資料夾,用 file:// 協定存取,一個人照樣能享受版本控制的好處。

07它適合完全沒用過版本控制的新手嗎?

它的操作都藏在右鍵選單裡,對沒接觸過版本控制的人來說,選單項目很多,一開始會不知道哪些功能該用。但基本流程只有三個動作:Update(更新)、Commit(提交)、Show Log(看歷史),先把這三個用熟就能應付大部分需求。它的介面是英文的,對不習慣英文介面的人會多一層門檻。

08我聽說 Git 比較流行,這套跟 Git 有什麼不同?

SVN 是集中式版本控制,所有歷史紀錄都存在伺服器上,你必須連上伺服器才能提交和查看歷史。Git 是分散式,每個人電腦上都有完整的歷史,離線也能提交。如果你的專案已經用 SVN 伺服器、或團隊習慣集中管理,TortoiseSVN 可以直接對接;如果你要自己開新專案,Git 生態系(如 GitHub Desktop)可能更符合現在的主流做法。

09我只有 Windows 電腦,它能用嗎?

可以,它只支援 Windows,官方說明列出的系統需求是 Windows 7 到 Windows 11。不過要注意,新版的功能說明中提到系統需求已改為 Windows 10 或更新版本,如果你還在用 Windows 7 或 8,安裝新版可能會遇到問題,需要自行確認哪個版本支援你的系統。

10它是不是免費的?有沒有什麼隱藏限制?

它是開放原始碼軟體,可以免費使用,沒有試用期或付費解鎖的機制。但它的授權型式是 Open Source,表示你可以自由使用、修改、散布,但如果你要把它整合進自己的商業產品,需要遵守開放原始碼授權的規定。這部分建議你查一下它使用的具體授權條款。

11我介面看不懂英文,有中文介面嗎?

官方資料顯示介面語系是 English,沒有提到內建中文。不過 TortoiseSVN 這類工具通常有社群翻譯的語言包,你可以到官方網站或社群論壇找找看有沒有正體中文語言包可以下載安裝。如果找不到,就只能靠英文介面操作,或考慮其他有中文介面的版本控制工具。

12我該不該改用這套?還是直接學 Git 比較好?

如果你的團隊或公司已經用 SVN 伺服器,那 TortoiseSVN 是現成的選擇,直接裝來用就能銜接。如果你是自己一個人開發、沒有既有的 SVN 基礎,Git 生態系(如 GitHub Desktop)的使用者多、教學資源豐富,遇到問題比較容易找到解答。另外,TortoiseSVN 的評分人數只有 53 人,相較之下 GitHub Desktop 有 82 人評分,使用者的回饋樣本較少,這點也可以納入考量。

下載與官方連結

前往官方網站 下載 TortoiseSVN (32-bit)

TortoiseSVN-1.6.0.15855-win32-svn-1.6.0.msi · 18.88 MB · 連結指向軟體原廠

版本紀錄

再看 5 筆

看完整版本清單

這一版改了什麼

What's new in this version:

Notes:
Culminating over 9 months of development effort, this is the best release of TortoiseSVN yet, and delivers powerful features, including:
* Early support for tree conflict detection
* improved revision graph
* ...and many more.

Changes:
Version 1.6.0
- NEW: Ignoring of multiple selected items by their extension. See
issue #423 for details. (Stefan)
- NEW: The log dialog allows filtering by bug-ID.
See issue #422 for details. (Stefan)
- NEW: Column to show the remote revision in the CfM dialog. (Stefan)
- NEW: The current revision of the working copy item is shown in
bold in the log dialog. See issue #425 for details. (Stefan)
- NEW: The custom tsvn: urls allow a revision to be specified after the
real url, separated with '?'. (Stefan)
- NEW: The state of the 'merge non-interactive' checkbox is remembered
across sessions. (Stefan)
- NEW: editing the author in the log dialog is now possible for
multiple selected revisions. (Stefan)
- NEW: Paste command to paste copied/cut files from explorer into
a working copy. See issue #427 for details. (Stefan)
- NEW: TortoiseProc returns now 0 after the command finished successfully
and -1 if the command failed with an error. See issue #426
for details. (Stefan)
- NEW: Added blame command to context menu of the status list control. (Stefan)
- NEW: "up" button in the repo browser. (Stefan)
- NEW: Checkbox to exclude the externals in the Check-For-Modifications
dialog. (Stefan)
- NEW: Ability to cancel the "patch all" function. (Stefan)
- NEW: Option to disable the context menu for specific paths. (Stefan)
- NEW: Extended the IBugTraqProvider. See issue #428 for details. (Stefan)
- NEW: The status cache handles "runas" now better. (Stefan)
- NEW: Automated removal of unused log caches. (Stefan Fuhrmann)
- NEW: When diffing against BASE, the diff tool now shows the BASE revision
in the view title. (Stefan)
- NEW: if "unversioned files mark parent folder as modified" is active,
the revert dialog shows a hint if unversioned files are found. (Stefan)
- NEW: Auto-maintenance for log caches plus several settings to control
its behavior. (Stefan Fuhrmann)
- NEW: Log cache supports multiple repositories with the same UUID.
(Stefan Fuhrmann)
- NEW: Revision graph settings page. Several previously hidden
features are now available to the user. (Stefan Fuhrmann)
- NEW: The status list control shows the entries grouped by externals if
no changelists are present. (Stefan)
- NEW: two project properties (bugtraq:provideruuid and bugtraq:providerparams)
to specifiy the IBugTraqProvider for the project. (Stefan)
- NEW: Helper dialog to resolve property conflicts. (Stefan)
- NEW: Revision graph can be collapsed / expanded as well as
split and joined. (Stefan Fuhrmann)
- NEW: Helper dialog to resolve tree conflicts. (Stefan)
- NEW: TortoiseBlame shows the revision range in the title. See
issue #429 for details. (Stefan)
- NEW: Revision graph: Option to hide unmodified branches (Stefan Fuhrmann)
- NEW: Revision graph: Option to show workspace modifications as extra node
(Stefan Fuhrmann)
- NEW: Revision graph: Update / Switch WC in node context menu
(Stefan Fuhrmann)
- NEW: A warning is shown if the user tries to add a file that was versioned
but renamed in case. (Stefan)
- NEW: TortoiseMerge scrolls the views automatically when selecting with
the left mouse button down. (Stefan)
- NEW: In the log dialog filter, a ! char at the beginning will negate
the filter string. (Stefan)
- NEW: Column in the check-for-modifications dialog to show
the lock date. (Stefan)
- NEW: Context menu to delete and ignore files at the same time. (Stefan)
- NEW: Tooltips in the action column of the log dialog, explaining the
action icons. (Stefan)
- NEW: When moving/copying a file over an existing file, ask the user whether
to replace that existing file. (Stefan)
- NEW: Shift-click feature for merge tools. See issue #430 for details. (Stefan)
- NEW: "Create patch" and "Check for Modifications" available from
commit/CfM dialog. (Stefan)
- NEW: new column for checkout depth in the CSVNStatusListCtrl. (Stefan)
- NEW: overlays in the CSVNStatusListCtrl for the different depths and
external/nested files and folders. (Stefan)
- CHG: The bug-ID column width in the log dialog is now limited
to 200 pixels. (Stefan)
- CHG: The right-drag context menu now only shows "Export" if a versioned
folder is dragged (for files, the windows 'copy' does the same). (Stefan)
- CHG: The right-drag context menu checks whether source and target are
from the same repository and shows the "SVN move" and "SVN copy"
commands only if they are. (Stefan)
- CHG: When only files are selected for "Add", the Add-dialog is not
shown anymore but the files are added immediately. (Stefan)
- CHG: file:// access to BDB based repositories is no longer supported. (Stefan)
- CHG: the log dialog now shows a possible error message when fetching the
log as a text in the top list control instead of showing a popup
message box. (Stefan)
- CHG: New revision graph look. (Stefan Fuhrmann)
- CHG: Faster and more reliable revision graph filtering. (Stefan Fuhrmann)
- CHG: If tsvn:logtemplate was set and not changed in the commit dialog, it
isn't added to the log history anymore. (Stefan)
- CHG: "Ambiguous URL" option no longer limits log cache functionality.
(Stefan Fuhrmann)
- CHG: Various improvements to log statistics graphs (Aras Pranckevicius)
- CHG: The merge wizard is now resizable. (Stefan)
- CHG: The checkout/export dialogs do not ask whether to create the folder
to checkout/export aynmore but silently create it. (Stefan)