Compare commits

...

74 Commits
v1.3 ... master

Author SHA1 Message Date
22c293eb58 run under python2 for now 2016-12-04 15:28:36 -05:00
8e10d8aefb fix log subcommand error for missing lines_text attribute of LogEntry 2016-08-11 16:29:16 -04:00
3c100af8d2 commit: end "Aborting commit" message with a newline 2016-01-04 15:08:41 -05:00
0ccc15089b clean: properly handle removing symbolic links 2015-12-01 13:11:26 -05:00
ab839658ba add a "commit" handler to rstrip commit messages 2015-09-30 17:11:25 -04:00
a970a6ef8a ignore "Updated external to revision XXX" lines if they are the only ones present 2015-09-14 16:46:49 -04:00
Mike_Zwagerman
146bdc347b Stripped the trailing forward slash(s) '/' from the end of the checkout url before checking for 'trunk$' 2015-08-25 20:58:02 -04:00
3456e95135 add a checkout handler that defaults the working copy path to the last directory component before "/trunk" 2015-08-17 12:24:21 -04:00
40b987911c update "add" to be aware of "ignore_symlinks" 2015-03-11 15:18:51 -04:00
3107b78aa0 add "ignore_symlinks" configuration flag 2015-03-11 15:15:40 -04:00
030c1c519f revert directories added by copying recursively 2014-10-08 11:52:40 -04:00
127815dd1f revert: revert files with "C"onflicts 2014-08-13 16:23:47 -04:00
3fbec5ea29 update: handle "Removed external '...'" messages better 2014-08-08 08:35:48 -04:00
9fd1b4bfed log: add error message for unknown --pretty option 2014-03-18 09:36:58 -04:00
4fa19ce27a revert bugfix: revert deleted items in order by status but added/modified items in reverse order 2013-10-24 10:30:52 -04:00
efdad72708 add v1.7 release notes 2013-08-16 15:23:06 -04:00
5955385e9c also apply "revert" to deleted items 2013-08-16 15:21:16 -04:00
f94756e615 add "clean" subcommand handler 2013-07-29 14:34:11 -04:00
00bbb51384 v1.6 2013-07-24 15:48:49 -04:00
20e2498f39 handle OSErrors possibly raised when kill()ing subprocess 2013-05-23 10:22:01 -04:00
a23c74a70a revert: do smart revert on items with modified properties as well 2013-03-20 10:11:06 -04:00
941f487292 revert: revert items in reverse-order to handle added directories 2013-03-20 10:08:28 -04:00
8bc64da119 stash: remove added directories when stashing if they are empty 2013-03-15 16:32:41 -04:00
4ad99b6707 stash: revert on save in reverse order to handle nested added directories 2013-03-15 16:24:40 -04:00
c5df97ebe8 stash: recreate added directories on pop; handle in show as well 2013-03-15 16:22:44 -04:00
b81aed66b6 stash: annotate stashes with created directories 2013-03-15 16:15:48 -04:00
77f1965113 stash: bugfix: respect options that follow operation (ex: --pop -k) 2013-03-15 15:42:42 -04:00
122e16b697 Merge branch 'stash-rework' 2013-03-11 22:36:31 -04:00
a34b0f5edf stash: add info for file name changed or # of files changed 2013-03-11 22:34:44 -04:00
32574bdd23 stash: re-add # of insertions/deletions to stash info 2013-03-11 22:25:30 -04:00
d6f74de034 stash: add --noexternals option, stash_externals configuration flag 2013-03-11 22:21:05 -04:00
821d27863d stash: update README for stash rework 2013-03-11 22:12:36 -04:00
f2678b5f88 stash: add -e/--externals option to also stash externals 2013-03-11 22:06:18 -04:00
a215aac2f6 stash: color the patch prompt line 2013-03-11 21:31:05 -04:00
6d547299cd stash: colorize Index line while patch-prompting 2013-03-11 21:26:03 -04:00
40aeec7bea stash: properly display new Index line when file skipped 2013-03-11 21:24:42 -04:00
e8fe0efcdb stash: rework bugfixes 2013-03-11 21:22:03 -04:00
6f4a88737d stash: respect -k flag again 2013-03-11 20:51:56 -04:00
0587d73472 stash: rework to do per-hunk processing 2013-03-11 20:49:11 -04:00
3c0375891a stash: add --keep, -p, --patch options 2013-03-11 13:50:42 -04:00
ee592451b5 change stash subcommands to require "--" prefix 2013-03-11 13:24:52 -04:00
cec02602a0 status: use relative paths for items in externals 2013-02-28 10:14:04 -05:00
f9c474a53f break up stash subcommand handlers into their own functions 2013-02-12 16:30:24 -05:00
9ffbd09477 revert: support smart recursive reversion for externals 2013-02-12 15:40:02 -05:00
cc95b79447 add "revert" subcommand handler 2012-12-04 15:33:22 -05:00
adeabcec6b update documentation for url subcommand 2012-11-08 16:25:22 -05:00
f4a568c3ca add v1.5 notes to README 2012-11-08 16:19:09 -05:00
b1df2f7a12 add -v (verbose) flag to tag subcommand 2012-11-08 16:16:13 -05:00
3b7bf12da8 allow optional source argument to "branch" 2012-08-30 11:35:26 -04:00
8dc3cc969e remove repository prefix URL from diff --summarize output 2012-08-24 10:56:20 -04:00
Mike D. Lowis
d8e31f8b46 Added .exe extension to svn binary name if the platform is Windows 2012-08-24 09:47:41 -04:00
9c79bacbe6 add v1.4 release notes 2012-08-23 16:43:53 -04:00
03fe7d9c7e terminate child svn log -v process when the common ancestor revision has been determined 2012-08-23 16:15:14 -04:00
33f5a85079 bugfix: properly limit diff output when "..." range specifier used 2012-08-23 16:07:25 -04:00
406a01cdf5 tag: allow optional source reference/revision - close #17
also check if a tag exists already before creating it
2012-08-17 11:32:13 -04:00
45f2a199f9 allow ctrl+c to terminate watch-lock 2012-07-23 15:20:32 -04:00
e20f843d25 remove automatically-added svn:executable property from files with certain configurable extensions 2012-07-11 12:40:41 -04:00
33b79e2930 append "_h" to subcommand handler function names 2012-07-11 12:14:00 -04:00
638137518d pass user configuration to subcommand handler functions 2012-07-11 12:09:02 -04:00
59544d30a6 log bugfix: avoid stack dump if "log" produces no entries, the correct way 2012-07-03 09:43:57 -04:00
d004741a96 log bugfix: avoid stack dump if "log" produces no entries 2012-07-03 09:40:11 -04:00
280f81d2c3 ignore SIGINT in jsvn
this way ctrl+c gets propagated to svn but does not kill python
so the shell still shows the pager instead of going back to the prompt
with a non-functioning terminal in need of "reset"
2012-06-29 13:24:39 -04:00
1eb5292502 add github URL to README 2012-06-29 13:06:28 -04:00
84dc998e11 Revert "launch the pager process in its own process group so that it isn't killed with ctrl+c"
This reverts commit 49656998be7686ab6d157028c4615c95c9f0327d.
2012-06-29 13:04:14 -04:00
49656998be launch the pager process in its own process group so that it isn't killed with ctrl+c 2012-06-29 12:28:26 -04:00
c08d497127 log: show as much of the commit message as fits on a single line for 'oneline' pretty display mode 2012-06-29 12:08:49 -04:00
671cf7e00c log: support --pretty formatting option
move logic of displaying a log entry into LogEntry class
2012-06-29 11:52:31 -04:00
d191a944d8 enable log filtering on "user" and "msg" log attributes - close #14 2012-06-29 11:15:18 -04:00
780e8b6692 add LogEntry class to build up objects from a svn log 2012-06-29 10:54:08 -04:00
07080d34a7 bugfix: allow diffing/log from common ancestor to work in either direction 2012-06-27 13:53:34 -04:00
d425d7ae14 avoid modifying array as iterating through it 2012-06-27 13:36:36 -04:00
34ed003e51 log -v: only colorized changed path if path starts with "/" 2012-06-27 13:28:02 -04:00
4755cbfd50 log: resolve single reference to branch/tag URL 2012-06-27 13:17:29 -04:00
b97d1a4d1c stash show bugfix: hide "#info:" lines 2012-06-27 12:58:16 -04:00
2 changed files with 1073 additions and 396 deletions

110
README
View File

@ -1,4 +1,5 @@
Josh's SVN wrapper script Josh's SVN wrapper script
https://github.com/holtrop/jsvn
This wrapper script to Subversion supplements normal svn behavior by This wrapper script to Subversion supplements normal svn behavior by
adding additional functionality or modifying the output of the default adding additional functionality or modifying the output of the default
@ -26,11 +27,31 @@ Implemented subcommands:
- bad mark the current revision as bad - containing the change sought - bad mark the current revision as bad - containing the change sought
- good mark the current revision as good - older than the change sought - good mark the current revision as good - older than the change sought
- reset terminate the bisect operation and return to the original revision - reset terminate the bisect operation and return to the original revision
branch[es] [-d] [-s] [<branch_name>] branch[es]
- with no arguments, list branches with '*' by the current one - branch: list branches with '*' by the current one
- with -d, delete <branch> - branch -d name: delete branch <name>
- otherwise, create a new branch from the current one - branch [-s] name [source[@rev]]: create branch <name>
- if <source> is given it is resolved as a reference name (can be 'trunk',
or a tag or branch name)
- if <source> is not given the HEAD of the current working-copy URL is used.
- also switch to the new branch if -s is given - also switch to the new branch if -s is given
checkout [options] [url] [wc_path]
- if a URL is given that ends with /trunk and no working copy path is given,
then the last directory component before "/trunk" is used as the working
copy path
clean [-x] {-n|-f} [path...]
- remove (or list) unversioned items
options:
-x, --ignore-ignores
- remove/list unversioned items that are ignored by Subversion
-n, --dry-run
- perform a dry-run, i.e. list files that would be removed but do not
actually remove them
-f, --force
- perform the actual removal of unversioned files
commit
- removes trailing whitespace (including end-of-line characters) from commit
messages before committing if neither -m nor -F arguments are given
diff diff
- allow specifying ref1..ref2 syntax to show the diff between two references - allow specifying ref1..ref2 syntax to show the diff between two references
- references can be tag names, branch names, or 'trunk' - references can be tag names, branch names, or 'trunk'
@ -48,40 +69,57 @@ Implemented subcommands:
merge <branch> merge <branch>
- merge branch <branch> into the current WC path - merge branch <branch> into the current WC path
- falls back to Subversion "merge" if <branch> doesn't exist - falls back to Subversion "merge" if <branch> doesn't exist
revert <path[s]>
- revert all affected files under given target path(s)
root root
- output root URL (for use on shell such as "svn log $(svn root)/tags") - output root URL (for use on shell such as "svn log $(svn root)/tags")
stash [command] stash [options] [file...]
- allow temporarily saving changes to the working copy without committing - allow temporarily saving changes to the working copy without committing
- the stashes behaves as a "stack" where "save" pushes a new stash object - the stashes behaves as a "stack" where stashing pushes a new stash object
and "pop" pops the newest one from the top of the stack and popping removes the newest one from the top of the stack
commands: - binary files are ignored (a warning is printed) and not stashed
save [-k] (default if not specified): options:
- save changes as a "stash" object -e, --externals
- revert changes from working copy unless -k (keep working copy) given - also stash changes in externals (if no explicit targets given)
- this only works with text files, not binary files - this option is implicitly on if the configuration value
list: 'stash_externals' is set to True
--noexternals
- reverse --externals (or the configuration value 'stash_externals')
-k, --keep
- create the stash object, but keep the changes locally as well
- with --pop, do not remove the stash object after reapplying it
-p, --patch
- interactively prompt for whether to stash each hunk
--list
- show a list of all stash objects - show a list of all stash objects
pop [-k] [id]: --pop [id]
- apply the stash object <id> back to the working copy - apply the stash object <id> back to the working copy
- the stash object is removed unless -k (keep) given - the stash object is removed unless -k (keep) given
- <id> defaults to the newest stash object created - <id> defaults to the newest stash object created
show [id]: --show [id]
- display the diff stored in stash with ID <id> - display the diff stored in stash with ID <id>
- <id> defaults to the newest stash object created - <id> defaults to the newest stash object created
drop [id]: --drop [id]
- delete stash object <id> - delete stash object <id>
- <id> defaults to the newest stash object created - <id> defaults to the newest stash object created
- if none of --list, --pop, --show, or --drop is given, a new stash object
is created containing the chosen differences
- if file is given, only the changes from the listed files will be stashed
switch <short_name> switch <short_name>
- switch to 'trunk', branch name, or tag name without having to specify - switch to 'trunk', branch name, or tag name without having to specify
the full URL the full URL
- falls back to Subversion "switch" if <short_name> doesn't exist - falls back to Subversion "switch" if <short_name> doesn't exist
tag[s] [[-d] <tag_name>] | [-m <old_tag_name> <new_tag_name>] tag[s]
- with no arguments, list tags - tag [-v]: list tags
- with -d, delete <tag> - with -v (verbose), lists tag origin and creation date
- with -m, rename <old_tag_name> to <new_tag_name> - tag -d name: delete tag <name>
- otherwise, create a new tag from the current branch - tag -m old new: rename tag <old> to <new>
url - tag name [source[@rev]]: create tag <name>
- output repository URL of current working directory - if <source> is given it is resolved as a reference name (can be 'trunk',
or another tag or a branch name)
- if <source> is not given the HEAD of the current working-copy URL is used.
url [file]
- output repository URL of file [default: '.' (current working directory)]
users users
- show a list of contributing users to a SVN path - show a list of contributing users to a SVN path
watch-lock watch-lock
@ -130,6 +168,14 @@ Available configuration variables:
function will be called recursively! function will be called recursively!
svn: Specify the path to the native Subversion executable. If not svn: Specify the path to the native Subversion executable. If not
specified, the first 'svn' in $PATH will be used. specified, the first 'svn' in $PATH will be used.
ignore_executable_extensions: A list of extensions (including the '.')
for newly added files which should not automatically have the
svn:executable property added for them even if the files are
executable. The default value is ['.c', '.cc', '.h', '.txt'].
ignore_symlinks: True or False to hide unversioned symlinks from appearing
in status output (default: False)
stash_externals: True or False to enable/disable whether '-e' is implicitly
on for 'stash' subcommand. Defaults to False.
Configuration Examples: Configuration Examples:
pager = 'less -FRXi' # enable case-insensitive searching in less pager = 'less -FRXi' # enable case-insensitive searching in less
@ -145,6 +191,24 @@ Configuration Examples:
Author: Josh Holtrop Author: Josh Holtrop
History: History:
v1.7 - 2013-08-16
- add "clean" subcommand handler
- bugfix: revert subcommand handler: revert deleted items
v1.6 - 2013-07-24
- rework 'stash' subcommand to operate on individual hunks
- add 'revert' subcommand handler
v1.5 - 2012-11-08
- add -v (verbose) flag to 'tag' subcommand
- allow optional source argument to 'branch' subcommand
- remove repository prefix URL from diff --summarize output
- Add .exe extension to svn binary name if platform is Windows (not cygwin)
v1.4 - 2012-08-23
- allow optional source/revision argument when creating a tag
- handle ctrl+c better when interacting with a pager
- add configurable functionality to work around svn automatically adding svn:executable property
- bugfix for diff "..." range syntax to show correct diff
- improved performance for diff/log "..." syntax
- minor stash show bugfix
v1.3 - 2012-06-27 v1.3 - 2012-06-27
- colorize diff --summarize output - colorize diff --summarize output
- log: support ref1..ref2 syntax for showing ref2 history not in ref1 - log: support ref1..ref2 syntax for showing ref2 history not in ref1

1097
jsvn

File diff suppressed because it is too large Load Diff