Introduction¶
When developing on the web, if a project still uses SVN for version control, you usually need to run svn commands in the terminal. DeepSeek Harness provides a browser-based integrated development environment, but lacks a native SVN management panel. The dsh-svn-plugin injects an independent Tab on the right sidebar of dsh-better-sidebar, bringing the same interactive experience as the Git panel to SVN working copies, and covering the core workflow from status inspection to branch management.
Plugin Positioning¶
This is an SVN management plugin for the DeepSeek Harness Web GUI, maintained by JinRyu-online. It is embedded as an independent Tab in the right sidebar of dsh-better-sidebar, aiming to solve the inconvenience of SVN operations in Web environments and provide a visual style and interaction experience consistent with the Git panel.
Core Features¶
The plugin implements basic and advanced SVN operations, mainly through the following panels:
- Local Changes Panel: Generates a status tree based on
svn status --xml. The UI follows the style of the Git panel and divides files into three groups: “Changed,” “Unversioned,” and “Ignored.” It supports letter badges (M/A/D/C, etc.) and icon actions, as well as grouping and directory collapsing. - Commit and Update: A commit bar is provided at the bottom, supporting commit with
Ctrl+Enter. When files are selected, unversioned files are automatically added viasvn add. It supportssvn update,svn revert, andsvn cleanup. - Code Comparison: Supports diff comparison between the working copy and BASE (the base version) or a specified revision range, using colored unified rendering format.
- History: Based on
svn log --xml -v, displays history items in a Git-like style. After selecting a commit, the details area is anchored as a floating panel at the bottom, while the list scrolls independently. Clicking a changed file expands a single-file diff for that file (supports A/M/D change types, highlights deletions in red, and highlights additions in green). - Shelve: Supports
svn shelve,unshelve,shelve-delete, andshelve --list. This feature is used to temporarily store unfinished changes before committing. - Conflict Resolution: Supports commands such as
svn resolve --accept workingfor resolving version conflicts. - Code Annotation: Supports
svn blame, annotating line-by-line version numbers and author information. - Branches and Tags: Supports creating branches with
svn copy, switching branches withsvn switch, and merging withsvn merge -r a:b URL. - Repository Browsing: Supports browsing remote directory trees with
svn list, and provides checkout functionality. - Properties and Groups: Supports viewing and modifying properties such as
svn:ignore, supports grouped commits via ChangeList, and supportslock/unlockoperations on files. - Agent Tools: The plugin injects directly callable tools for Agents, including
svn_status,svn_log,svn_diff,svn_commit,svn_update,svn_revert,svn_add,svn_shelve,svn_unshelve,svn_shelve_list, andsvn_blame.
Dependencies¶
Running this plugin requires the following environment requirements:
| Dependency | Version Requirement/Description |
|---|---|
| DeepSeek Harness (DSH) | 0.1.0-rc.8+ |
| dsh-better-sidebar | ≥ 0.14.0 (must be installed; provides the host service) |
| System SVN client | Any version (including 1.14.x) |
| Node.js | Consistent with the DSH host (required only for development builds) |
UI Style Notes: Shares the same set of DSW design tokens (colors, fonts) and icons with the “Source Control” panel in dsh-better-sidebar.
Installation and Activation¶
Install it using the DeepSeek Harness plugin command line:
# Install plugin
dsh plugin --profile web add dsh-svn-plugin
After installation, restart the dsh web host process and perform a hard refresh in the browser (Ctrl+Shift+R). An “SVN” Tab will appear in the sidebar.
Typical Usage¶
- View Status: Click the SVN Tab to view the local working copy’s changed status tree.
- Manage Ignore Rules: In the “Local Changes” panel, unversioned files are automatically grouped into “Ignored” according to the
.gitignorerules in the working directory. - Stash Changes: In the “Shelve” panel, temporarily store current changes and restore them later after finishing them.
- Agent Operations: In an Agent conversation, you can directly call
svn_statusto get status, or callsvn_logto view history. - Switch Branches: In the “Branches” panel, execute
svn switchto switch to a different branch.
Notes¶
- Shelve Limitations: When the plugin starts, it checks whether
svn helpincludes theshelvesubcommand. Thesvn.exebundled with TortoiseSVN (version ≤ 1.14.x) does not include this command. In that case, the “Shelve” panel displays a notice and disables the related buttons. Use the official upstream Apache Subversion binaries (includingshelve) to restore normal functionality. - Host Dependency: The
dsh-better-sidebarhost plugin must be installed and enabled before this plugin can run. - Permissions and Security: The plugin runs with the permissions of the current
dshprocess. Please review the source code and license (MIT) before installation.