All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Added support for Terminal with a light theme. To enable specify
lightas a value ofthemeconfig setting in~/.svn-buddy/config.jsonfile. - Added the
?possible value for the--bugsoptions of thelogcommand to show revisions without a bug. - Added the
infocommand.
- Show executed SVN commands in real time (when started; how long was executed) in verbose mode (the
-vflag). - The executed SVN command idle timeout changed from 3 minutes to 1 minute.
- Handle cases, when
svn log ... --use-merge-history ...command timeout-out. - The
mergecommand wasn't doing auto-commit, when alternative working directly was specified. - The
current revisionhighlighting style is now correctly applied to theBug-IDcolumn in thelogcommand results. - Created a semi-automatic migration script for unlinking commits from projects they don't belong.
- The PHAR generation on PHP 8.x wasn't working, because "padraic/humbug_get_contents" package was missing.
0.8.0 - 2024-12-18
- The
commitcommand now highlights the line with a commited revision number. - Added
reparsecommand for reparsing data of a given revision (e.g. when it's log message was changed in repository). - The SVN command cache effectiveness (how often particular cache key is being used) is now displayed in the verbose output mode.
- Display non-executed SVN command (results pulled from the cache) in the verbose mode.
- Display non-executed SVN command (results pulled from the cache) results in the debug mode.
- Added the
deploycommand, that will execute, specified in the config, local/remote commands. - Added
commit.auto-deployconfig setting (enabled by default), that allows to tell if a remote deployment should happen after successful commit (#131). - Added
--auto-deployoption tocommitcommand to allow overriding behavior imposed bycommit.auto-deployconfig setting. - Added
update.auto-deployconfig setting (enabled by default), that allows to tell if a local deployment should happen after successful update. - Added
--auto-deployoption toupdatecommand to allow overriding behavior imposed byupdate.auto-deployconfig setting. - Display change totals (affected directory/file count) in commit dialog.
- The
configcommand groups configuration settings by a command. - The
changelogcommand will show actually used app version instead ofUnreleasedword, when used version isn't mentioned in a changelog. - The executed SVN command idle timeout changed from 20 minutes to 3 minutes.
- The
commitcommand remove empty lines of merged commits, when building grouped merge commit message. - Increased repository scanning speed from 200 to 500 revisions per run.
- The non-merged revision table was shown after a successful auto-commit, when merge conflict was resolved.
- Show update notifications only, when SVN-Buddy is being used from a PHAR file.
- The cache delete/set commands were displayed as "cache hit"/"cache miss" operations during verbose output.
- When there was a cache miss, then explain why (absent, invalidated, expired) during verbose output.
- Queue SVN-Buddy new repository commit discovery, after a new commit in SVN-Buddy was made.
- The
logandmergecommands no longer fails with large (>999) revision lists on SQLite <= 3.32.0. - The deletion of project wasn't deleting its refs (branches/tags) resulting them to reported as existing.
- The attempt to detect a "bugtraq:logregex" of a deleted project failed.
0.7.0 - 2024-04-12
- Added
-ashortcut for the--aggregateoption of themergeandcommitcommands. - Show merged revision commit message during merge process, that is done by the
mergecommand. - Added
--exclude-bugsand--exclude-revisionsoptions to themergecommand for better versatility. - Added
--mergesoption to themergecommand to display only merge revisions. - Added
--previewoption to themergecommand to display revisions, that will be merged instead of merging them. - Added the
changelogcommand, that will show changes included in the current SVN-Buddy release. - Added
--authoroption to thelogcommand to display revisions, made by a specific author. - Show revision URL (Phabricator only for now) for each shown revision of the
logcommand, when--with-detailsoption is used. - Sends a beep to the Terminal, when an error occurs during any command execution.
- Dropped support for PHP 5.4 and PHP 5.5 versions.
- The
--bugsand--revisionsoptions of themergeandlogcommands now can be combined for better versatility. - Improved
mergecommand phrasing for the "upcoming merge status" term. - Lazy load other commands to improve each individual command performance.
- Perform auto-commit (when enabled) after merge, that failed because everything is already merged.
- The
--aggregateoption of themergeandcommitcommands wasn't working (triggered an exception) when revision without a bug wasn't present in the list of revisions. - The revision color in merge header (that is underlined) of the
mergecommand was matching color of the header itself (white+bold). - The
logcommand verifies, that bugs provided in the--bugsoption actually exist in the repository. - Revisions with empty 2nd line of their commit message weren't shown as "(no details)" in merge commit message.
0.6.1 - 2022-12-06
- Moved application upgrade system from Heroku into GitHub Actions.
0.6.0 - 2022-11-14
- Added
--aggregateoption tomergeandcommitcommands to aggregate displayed commits by tasks. - Added
projectcommand, that allows to show project meta information and reset refresh tracking regular expression. - Added
--no-mergesoption (fromlogcommand) tomergecommand to allow hiding merge revisions.
- The recursive working copy lookup behavior of the
aggregatecommand is disabled by default, but can be enabled via new--recursiveoption. - Improve Phabricator integration during
mergecommand by using.arcconfigfile from the merge source repository.
- Attempt to print commit history of paths copied to themselves (e.g. trunk > branches/something > trunk) resulted in a recursion.
- The
--no-mergesoption ofmergecommand wasn't used during actual merge, but only to display to be merged revisions. - The
Reverse-merge of ...heading was shown even on strait merges (not reverse ones), whencommitcommand was usingsummarymerge template.
0.5.2 - 2019-06-20
- Fixed PHP warning, when using
commit(ci) command when no merge was performed.
0.5.1 - 2019-05-21
- Improve commit message of
commit(ci) command by showing if path/file was copied or not.
- Files, that weren't changed and had no properties and were added to a changelist were displayed in
commit(ci) command result. - Empty reverse merge sub-section was always added to merge commit messages.
0.5.0 - 2019-03-30
- Added
group_by_bugmerge template forcicommand, that allows grouping merged revisions by their bug ids. - Added automatic update checker.
- Added support for display merged revision number as a link to Phabricator instance (when project has
.arcconfigfile). - Added
--reverseoption tomergecommand allowing to perform a reverse merge.
- Include source branch project name in commit message, when merge source project differs from merge target project.
- Default merge template for
commitcommand changed fromgroup_by_revisionintogroup_by_bug. - Use short inline grouping header for merge commit message, when merging single bug/revision.
- When using
--with-full-messageoption withlogandmergecommands, then extra table separator is added between revisions to ease reading of large/wrapped commit messages.
- Attempt to use
--helpoption on any command resulted in the exception. - Greatly improved speed of working copy location by
aggregatecommand via ignoring of known dependency folders (node_modulesandvendor). - The
svn infocommand no longer fails on folders, that have@in their name, e.g.node_modules/@gulp-sourcemaps. - Attempt to merge non-existing bugs would now result in an error (before list of unmerged revisions were shown).
0.4.0 - 2018-02-11
- Added
conflictscommand for manually managing list of recorded conflicts in a working copy. - Added
--ignore-externalsoption toupdatecommand to allow updating working copy without checking out externals. - Added
--revisionoption toupdatecommand to allow updating working copy to a specific revision. - Added
--update-revisionoption tomergecommand allowing to update working copy to given revision prior to merging. - Added
--with-full-messageoption tolog,mergeandaggregatecommands to display non-truncated commit messages. - Show progress bar during merging to indicate merged/total revision count.
- When using
revertcommand display list of recorded conflicts before deleting it. - Added different formats (merge templates), used during automatic merge commit log message generation.
- Added
emptymerge template allowing to prevent merge information to be used during commit log message generation. - Added
cfgalias toconfigcommand. - Added
summarymerge template to display only summary from performed merge in a commit log message. - Added
--merge-templateoption tocommitcommand to allow overriding merge template for this commit. - Added
--record-onlyoption tomergecommand for marking revisions as merged without actually merging them. - Added
searchcommand for finding where code was first added or last seen in a given working copy file.
- The
updatecommand now also tracks conflicts resulted from problematic update. - The list of options for
aggregatecommand is now built dynamically based on options of aggregated commands. - The
mergecommand now specially ignores externals, when doing working copy update before merging. - The
mergecommand now will do update, when locally deleted files are found. - The trailing empty lines are removed from displayed commit message for increased clarity.
- The merge heading is more readable now, because "r123" was changed into "123 revision" (e.g.
--- Merging 15512 revision into './core':). - The recorded conflicts are now sorted alphabetically.
- Disallow searching for whitespace-only keywords using
searchcommand. - Obfuscate credentials displayed in error messages.
- While looking for "bugtraq:logregexp" property of a project look at each ref instead of using last modified only.
- Include source branch project name in commit message, when doing cross-project merge and source/target branches are named the same.
- Invalid merge source url was guessed for
X.0.Zbranches (e.g.5.0.x). - The
aggregatecommand was ignoring command aliases (e.g.upforupdatecommand). - Externals in a working copy caused
Mixed revisionserror before merge resulting in immediate update. - Locally deleted files in a working copy caused
Mixed revisionserror before merge resulting in immediate update. - When
--refsargument oflogwas used the revisions not belonging to specified refs were also shown. - The merged revision heading (e.g.
--- Merging r15512 into './core':) wasn't highlighted during merging. - Added files in a working copy caused
Mixed revisionserror before merge resulting in immediate update. - The merging heading wasn't shown, when fast network connection to Subversion server was used (command output buffer contained 2+ lines of text).
- Current revision row highlighting also affected table markup instead of just affecting text inside cells.
- Initial repository import using Subversion 1.9+ failed with
Property 'bugtraq:logregexp' not founderror. - Attempt to use "svn-buddy" inside sub-folder of a working copy ended up in exception for Subversion 1.7+ client.
- It was possible to search for an empty keyword using "search" command.
- The externals were shown in auto-generated commit message for
commitcommand. - Deleted branches/tags of a project were introspected for a "bugtraq:logregexp" property resulting in
Path ... not found in ... revision.error.
0.3.0 - 2016-09-08
- Added
--actionoption tologcommand, that allows to search revisions by action (A,M,R,D) on a path within a revision. - Added
--kindoption tologcommand, that allows to search revisions by kind (dirorfile) of a path within a revision. - Added ability to update application via new "self-update" command.
- Added
allvalue to--refsoption oflogcommand to display revision from all refs in a project. - Current working copy revision in
logcommand results is now highlighted in bold. - Added
merge.auto-commitconfig setting (enabled by default), that allows to tell if commit should happen after merge. - Added
--auto-commitoption tomergecommand to allow overriding behavior imposed bymerge.auto-commitconfig setting. - Added
--cloption tocommitcommand to allow committing changes from specified changelist only. - Automatically put changelist name as 1st line in commit message (when
commitcommand used with--cloption).
- Don't remove ref from path, when showing revision paths in
logcommands's detail view. - Attempt to view revisions of path, that never existed in a project now will exactly say that in thrown exception.
- The 4x speed improvement of
logcommand, when used on a working copy. - List of conflicts is included in commit message if they are present (before only worked for merge commits).
- The path
copy-from-information wasn't stored incorrectly resulting in path shown as copied, while they weren't. - When, in
logcommand, attempting to see revisions of a particular file, that currently exists, nothing was shown. - When, in
logcommand, attempting to see revisions of a particular file, that is currently deleted, nothing was shown. - The copied paths (during initial revision data import) where not properly associated to their projects.
- Fixed notice about "file_exists" function and "svn://" protocol, when using
mergecommand orlogcommand with URL instead of path. - Outdated working copy wasn't detected during
mergecommand, whenlogcommand was used right before it. - Paths added to changelists weren't taken into account by
commitcommand.
0.2.0 - 2016-05-14
- When conflicts were detected during merge, then conflicted paths would be listed in auto-generated commit message.
- The
--source-urloption ofmergecommand can be specified in short form (e.g.trunk,branches/branch-name,tags/tag-name,name(for branch-to-branch or tag-to-tag merges). - Added
--refsoption (with auto-complete) forlogcommand to show revisions from ref instead of current working copy path. - Added
log.message-limitconfig setting (defaults to 68), that allows to specify optimal commit message column width. - Added
--with-refsoption forlogcommand to show refs, that revision belongs to in revision list. - The
revertcommand now not also reverts changes to paths, that are committed, but also deletes added paths. - The
--verboseoption now also shows names of accessed cache files. - Support for doing merges from one project into another one within same repository.
- The
logcommand now displays project and ref name above displayed revision list. - Added support for repositories where only 1 project exists and no "trunk", "branches", "tags" folders are present.
- The
configcommand now shows working copy url instead of path to stress fact, that settings are stored based on working copy url and not path. - Wrap list of bug, associated with revision to "3 per row" to avoid too wide table creation.
- When
logcommand showing revisions in detailed view, then how one bug per row to avoid table wrapping. - The
--merge-statusoption oflogcommand renamed into--with-merge-status. - The
--merge-oracleoption oflogcommand renamed into--with-merge-oracle. - The
--summaryoption oflog, 'aggregate' andmergecommands renamed into--with-summary. - The
--detailsoption oflog, 'aggregate' andmergecommands renamed into--with-details. - When all revisions are displayed by
logcommand display "Showing X revision(-s)" instead of "Showing X of X revision(-s)". - The
Merged Viacolumn (available when--with-merge-statusoption used) oflogcommand also shows refs, that merge revision belongs to. - Improved revision path absolute-to-relative transformer and now: the project path is always cut off; the ref is cut off only for single-ref revisions.
- Wrap list of associated revision next to conflicted paths to "4 per row" to avoid too wide table creation.
- Name format of per-working copy config setting is changed, which will result in all data being lost unless migrated by hand in "~/.svn-buddy/config.json" file (old "path-settings.wc_url_hash.setting_name", new: "path-settings[wc_url].setting_name").
- Major under the hood revision information storage changes.
- The
aggregatecommand no longer requires specifyingsub-commandargument, when--ignore-*options are used.
- The Subversion repositories hosted on https://unfuddle.com/ were not usable from
logandmergecommands. - The output (e.g. revision query progress bar) was interfering with auto-complete (e.g.
--refsoption oflogcommand). - When showing only first line from a multi-line commit message, then
...wasn't shown at the end to indicate, that not all commit message is displayed. - The "," in bug list associated with a revision was colored in same color as bug itself, but it shouldn't be colored at all.
- Only first line of commit message was displayed even in detailed revision view.
- In
logdetails view colored multi-line changed paths (e.g. copy operation) resulted in color affecting nearby cells. - The "," was lost when bug list was wrapped to the next line.
- When
--refsoption oflogcommand was used together with--with-detailsoption the revision path were not transformed from absolute to relative. - The Subversion repositories hosted on https://unfuddle.com/ were not usable from
commitcommand.
0.1.0 - 2016-03-19
- Added
repository-connector.last-revision-cache-durationconfig setting ("10 minutes" by default), for specifying time for how long repository should not be queried for new revisions. Set according to commit/merge frequency for your repository.
- The last revision from repository is now cached for 10 instead of 25 minutes (helps, when doing many merged in short period of time).
- User config settings were lost during config upgrade process, when new default settings were added.
0.0.4 - 2015-12-04
- Show number of unmerged bugs (not only unmerged revisions) in
mergecommand. - The output of executed repository commands is shown, when verbosity is set to debug (-vvv).
- Added support for merging sub-folders in a working copy.
- Added
--merge-statusoption forlogcommand, that showsMerged Viacolumn containing merge revisions affecting displayed revision. - Show time estimated completion time, when downloading revision log info.
- Added
--mergesoption forlogcommand to display only merge revisions. - Added
--no-mergesoption forlogcommand to display only non-merge revisions. - Show number of displayed and total revisions in
logcommand output. - Added
--summaryoption forlogcommand to display change summary (how much paths were added/changed/removed) of each revision. - The
mergeandaggregatecommands would also forward--summaryoption to the underlyinglogcommand call. - Added
--mergedand--not-mergedoptions forlogcommand to show merged and not yet merged revisions respectively (works based on merge commits only). - Added
-merged-byoption forlogcommand to display revisions merged by given revision(-s).
- The
logcommand will throw an exception, when given revision doesn't exist at given path. - The inherited (from global or default value) config setting value now isn't stored.
- The format of revision log cache now will be updated automatically, when needed by
RevisionLogclass. - Show current folder path in error about incorrect working copy folder.
- Attempt to edit global version of working copy setting resulted in Fatal Error.
- The
logcommand with--bugsoption was throwing exception, when bug was already merged. - The
--ignore-addoption ofaggregatecommand wasn't checking if added directory exists on disk. - The newline symbols were stripped of string-type config setting value.
- Duplicate lines were removed from array-type config setting value.
- The
InPortalMergeSourceDetectorclass wasn't working when repository url with sub-folder was given. - Notice was emitted on missing revision log cache read attempt.
- The missing revision query progress bar was erasing all text on same line (seen on
mergecommand). - Fixed fatal error, when attempting to perform first merge on a tag.
- Attempt to set working copy config setting outside working copy was showing wrong path in the error message.
- Tree conflict during merge wasn't blocking all further merge attempts.
0.0.3 - 2015-09-26
- Added
updatecommand withupalias. - Added
Configclass to allow storing per-working copy and global configuration settings. - Added
configcommand for adding/editing/deleting config settings. - The
aggregatecommand now has config setting with list of ignored directories. - Added
--merge-oracleoption tologcommand that will show commits that might trigger a merge conflicts duringmergecommand run. - Added
--detailsoption toaggregatecommand, that will be passed tomergeandlogsub-commands.
- The
mergecommand doesn't ask user confirmation to runsvn updatewhen outdated/mixed revision working copy detected. - The
logcommand now reads default limit (was 10) from config setting instead of hardcoding it. - The
mergecommand now reads default merge source url from config setting, when available.
- The error from
whichexecutable was shown to end user, when no suitable editor forcommitcommand were found. - The revisions used by
mergecommand were not chronologically sorted, which might have resulted in merge conflicts. - Duplicate bug IDs were not filtered out during commit log message parsing.
- A notice was emitted, when incorrect regular expression was entered as part of config settings, that supports regular expressions.
0.0.2 - 2015-09-20
- Show Subversion client version as part of
svn-buddy.phar --versioncommand. - Use short git commit sha in in version number.
- Add progress bar to display commit log reading progress.
- Attempt to run
commitcommand on working copy without changes now results in exception. - Only commands implementing new
IAggregatorAwareCommandinterface can be used withaggregatecommand.
- The mixed revision working copies (usual thing for Subversion 1.7+) were preventing
mergecommand from working. - The unversioned files were shown in commit dialog of
commitcommand. - Added
cialias tocommitcommand. - Attempt to use
listandhelpcommands withaggregatecommand was useless.
- Initial release.
- Adding
aggregate,cleanup,commit,log,mergeandrevertcommands.