=======
eazysvn
=======
.. image:: https://github.com/mgedmin/eazysvn/workflows/build/badge.svg?branch=master
:target: https://github.com/mgedmin/eazysvn/actions
Eazysvn is a Python script that simplifies some common operations with
Subversion branches.
.. contents::
Installation
============
Get it from the `Python Package Index <https://pypi.org/project/eazysvn>`_::
pip install eazysvn
You'll need Python 2.7 or later, as well as the Subversion command-line client.
Usage
=====
Getting help
------------
At the shell prompt type ::
eazysvn help
It will print a list of commands. Some of the commands have aliases::
ezswitch = eazysvn switch
ezmerge = eazysvn merge
ezrevert = eazysvn revert
ezbranch = eazysvn branchurl
Switching between branches
--------------------------
In a subversion working directory run ::
ezswitch -l
to see all the branches available in your project. This assumes your
Subversion repository uses the standard layout with 'trunk', 'tags', and
'branches' in it.
Then run
.. parsed-literal::
ezswitch *branchname*
to switch to a branch, and ::
ezswitch trunk
to switch back to trunk.
Working with branches
---------------------
Say you're working on a project and in the middle of a difficult refactoring
suddenly realize the changes you've made are too risky for trunk you want to
put them in a branch. Run
.. parsed-literal::
ezswitch --create *my-branch*
This will create a new branch and switch your working directory to it. All
your changes in progress are kept intact and you can commit them directly
to the new branch with svn commit.
Seeing all the changes on a branch
----------------------------------
You may want to see the overall diff of changes made on a branch since it was
created, say, to review it before attempting a merge.
.. parsed-literal::
eazysvn branchdiff *branchname*
does exactly that. For extra readability, install `colordiff
<https://www.colordiff.org/>`_ and use
.. parsed-literal::
eazysvn branchdiff *branchname* | colordiff | less -R
Merging branches
----------------
After you've finished hacking on your branch, you will want to switch back to
trunk and start merging. Run ::
ezswitch trunk
then
.. parsed-literal::
ezmerge *my-branch*
You will see the svn command used for the merge as well as a log of all the
changes. Fix merge conflicts (if any), run the test suite, then commit.
The output of ezmerge helps you produce an informative commit message.
If instead of merging the changes to your working directory you'd like to see
the combined diff, pass the -d (or --diff) option to ezmerge
.. parsed-literal::
ezmerge -d *featurebranch*
Cherrypicking
-------------
If you want to merge only some of the changes made in a branch, you can pass the
revision number (or a range) to ezmerge. For example, to backport a bug fix
implemented in revision 1234 of trunk to a release branch,
.. parsed-literal::
ezswitch *release-branch*
ezmerge 1234 trunk
You can also merge a range of revisions ::
ezmerge 1234-1236 trunk
This range is inclusive, unlike Subversion. If you want to, you can also use
Subversion-style half-open ranges as well ::
ezmerge 1233:1236 trunk
The --diff option works here too.
.. parsed-literal::
ezmerge -d 1234-1236 trunk
Reverting committed changes
---------------------------
It's like cherry-picking, but in reverse: you want to unapply changes already
committed to this branch. ::
ezrevert 1234
Making tags
-----------
To tag the current version of the source tree in your working directory, run
.. parsed-literal::
eazysvn tag *tagname*
Manipulating branches
---------------------
To remove a branch completely, run
.. parsed-literal::
eazysvn rmbranch *branchname*
To rename a branch, run
.. parsed-literal::
eazysvn mvbranch *oldbranchname* *newbranchname*
To do other kinds of operations, eazysvn provides a shortcut that lets you
use branch names instead of full branch URLs (this bit assumes a Unix-like
shell):
.. parsed-literal::
svn ls $(ezbranch *branchname*)
svn diff \`ezbranch *branch1*\` \`ezbranch *branch2*\`
Another possibly useful eazysvn command is ``branchpoint``. It shows the
revision when a branch was created. For example, to see the changes
in trunk that are not present in a branch, run
.. parsed-literal::
svn diff -r \`eazysvn branchpoint *branch*\`:HEAD \`ezbranch *trunk*\`
Overall options
---------------
All commands that require a branch name as an argument accept a -l (or --list)
option that lists all branches, e.g. ::
ezbranch -l
All commands that make changes to the repository or working directory accept
a -n (or --dry-run) option that just prints the svn commands that would
otherwise be executed. ::
ezmerge -n 1234 otherbranch
All commands that make changes to the repository (create/remove/rename branches
or tags) accept a -m option with a commit message. If not specified, you'll
get a text editor spawned by subversion itself to type the commit message. ::
ezswitch -c newbranch -m "Create branch for the new feature"
Many of the commands accept other options as well. Use
.. parsed-literal::
eazysvn *cmd* --help
ezmerge --help
ezswitch --help
*etc.*
to discover those.
Appendixes
==========
Revision numbers
----------------
A revision to Subversion means the state of the whole project tree at a given
instant of time. Sometimes the changeset that converts one revision to another
is more interesting. When you specify a single number N to ezmerge, it assumes
that you want to merge the changeset that changes revision (N-1) to revision N.
If you specify a range N-M, ezmerge.py merges all the changesets
that change revision (N-1) to revision M. For compatibility with ``svn
merge`` you can specify the revision range as N:M, and ezmerge will
merge all the changesets that convert revision N to revision M. In the last
case N can be greater than M, which is useful if you want to revert some
changes, although ``ezrevert`` is more convenient for that.
When you specify ranges (N-M or N:M) M can be a special name ``HEAD``.
It means the latest revision in the repository.
You can also specify a special range ``ALL``, which means all the changesets
made in the branch. ezmerge will parse the output of ``svn log`` to get the
revision numbers for you. ``ezmerge branchname`` is a shortcut for ``ezmerge
ALL branchname``.
For easier copying & pasting from ``svn log`` output, you can prefix numbers
with the letter ``r``, e.g. ``r1234``.
Branch names
------------
Eazysvn expects you to use the traditional repository layout, and can
find its way from any of these to any other of these URLs if you specify the
desired branch name as 'trunk', 'foo', or 'bar'.
.. parsed-literal::
*scheme://server/path/to/svn/repo*/trunk/*subdirs*
*scheme://server/path/to/svn/repo*/branches/foo/*subdirs*
*scheme://server/path/to/svn/repo*/branches/bar/*subdirs*
You do not have to be at the top of the project to switch or merge, any
subdirectory will work. The part of your checkout above the current
directory will not be touched by the merge/switch.
An alternative scheme is partially supported:
.. parsed-literal::
*scheme://server/path/to/svn/repo*/trunk/*subdirs*
*scheme://server/path/to/svn/repo*/branch/foo/*subdirs*
*scheme://server/path/to/svn/repo*/branch/bar/*subdirs*
Eazysvn will be able to find the location of trunk or other branches if you
start out in a branch checkout, but it won't be able to find your branches
from a trunk checkout. This is a bug that should be fixed one day.
You can force eazysvn to use any nonstandard scheme if you explicitly enter the
prefix with a slash in front of the branch name, e.g. ``ezswitch feature/foo``
in a trunk checkout would switch from
.. parsed-literal::
*scheme://server/path/to/svn/repo*/trunk/*subdirs*
to
.. parsed-literal::
*scheme://server/path/to/svn/repo*/feature/foo/*subdirs*
If you start out in a checkout of such a nonstandard location, Eazysvn won't be
able to find the location of trunk or other branches. This is a bug that
should be fixed one day.
Branch merge logic
------------------
When you merge a branch (to trunk or to another branch), eazysvn uses ``svn
log`` to find the revision number when the branch was created. Then it merges
all the changes ever committed on that branch.
This means you usually can't merge from the same branch more than once. It's
a consequence of Subversion's lack of merge tracking.
Also, since there's no fancy searching for common ancestors or anything like
that, if you branch A from trunk make some changes, then branch B from branch
A, make some changes, then if you ezmerge B on trunk, you won't get any changes
made in branch A.
When you merge a trunk to a branch, eazysvn again uses ``svn log`` to find the
branch point and then merges all the changes made on trunk since that revision.
It's a bad idea to merge from trunk to a branch, because then you won't easily
be able to merge that branch back to trunk. You may try, subversion might
apply the already-applied changes twice cleanly, but it's a matter of luck.
Keep it simple: always merge a branch only once, back to the same place you
branched from, and you'll avoid trouble. Remove branches you've merged to
avoid accidentally making new changes that will be harder to merge.
Changelog
=========
1.16.0 (2024-10-09)
-------------------
- Add support for Python 3.8, 3.9, 3.10, 3.11, 3.12, and 3.13.
- Drop support for Python 2.7, 3.5 and 3.6.
1.15.1 (2019-04-23)
-------------------
- Add support for Python 3.7.
- Drop support for Python 3.4.
1.15.0 (2018-04-13)
-------------------
* Add support for Python 3.6.
* Drop support for Python 3.3.
* 100% test coverage.
1.14.0 (2016-09-17)
-------------------
* Drop Python 2.6 and 3.2 support.
* Actually support Python 3.
1.13.0 (2015-01-13)
-------------------
* Flush output buffers before executing external commands. Previously
if you did, e.g. eazysvn branchdiff > DIFF, you would see the output of svn
diff above the svn diff command itself.
* Fix command alias handling on windows
(https://github.com/mgedmin/eazysvn/pull/1)
Patch by Timon Wong <timon86.wang@gmail.com>.
* Support Python 3.
1.12.2 (2012-02-20)
-------------------
* New argument: ``ezmerge --accept=ARG``, passed directly to subversion.
* Moved the source code from self-hosted Subversion to GitHub.
1.12.1 (2010-09-14)
-------------------
* A somewhat better error message for ``ezswitch -c newbranch`` when eazysvn
is unable to understand the branch structure (LP#446369).
* ``ezswitch -t tagname; ezswitch branchname`` switches to a branch named
``branchname`` instead of trying to switch to a tag named ``branchname``
(LP#617888, fix by Wolfgang Schnerring).
1.12.0 (2010-07-22)
-------------------
* Minor fixes to various options --help messages.
* Don't pass revision range to svn when using ``ezmerge --reintegrate``.
Patch by Michael Howitz <mh@gocept.com>.
* New option: ``ezmerge --tag``.
Contributed by Michael Howitz <mh@gocept.com>.
1.11.0 (2009-05-26)
-------------------
* New option: ``ezmerge --reintegrate``, passed straight to svn merge.
Contributed by Wolfgang Schnerring <wosc@wosc.de>.
1.10.0 (2009-04-08)
-------------------
* Uses ``subprocess`` instead of ``os.popen2``; no more deprecation warnings
on Python 2.6.
1.9.0 (2008-08-08)
------------------
* ``eazysvn tag`` accepts the -l (--list) option.
* ``ezbranch`` and ``ezswitch`` accept the -t option.
* New command: ``eazysvn branchpoint``.
* You can refer to tags in all commands that accept branch names; use a branch
named "tags/*tagname*". This works for all kinds of prefixes, e.g.
"obsolete-branches/*branchname*" etc.
1.8.0 (2008-06-26)
------------------
* Nice PyPI documentation page with a changelog.
* New command: ``eazysvn tag``.
* ``eazysvn --version`` prints the version number.
1.7.0 (2008-06-11)
------------------
* New command: ``eazysvn branchdiff``.
1.6.1 (2007-12-12)
------------------
* ``ezmerge`` accepts the -l (--list) option.
* ``ezmerge branchname`` is short for ``ezmerge ALL branchname``.
1.6.0 (2007-12-11)
------------------
* ``ezmerge`` accepts the -d (--diff) option.
1.5.1 (2007-06-28)
------------------
* ``ezrevert`` is short for ``eazysvn revert``.
1.5 (2007-06-28)
----------------
* New command: ``ezbranch``, short for ``eazysvn branchurl``.
1.5 (2007-06-28)
----------------
* New command: ``ezbranch``, short for ``eazysvn branchurl``.
1.4.1 (2007-06-20)
------------------
* Bugfix for ``eazysvn rmbranch``.
1.4.0 (2007-06-11)
------------------
* New command: ``eazysvn rmbranch``.
* New command: ``eazysvn mvbranch``.
1.3.1 (2007-04-04)
------------------
* Make ``ezmerge ALL trunk`` useful: merge changes from the branch point of the
current branch, not from the start of trunk.
1.3 (2007-01-25)
----------------
* New command: ``eazysvn revert``.
1.2 (2007-01-16)
----------------
* First setuptools-based release, thanks to Philipp von Weitershausen.
* New command: ``eazysvn`` with four subcommands: ``merge`` (same as the old
``ezmerge`` command), ``switch`` (same as the old ``ezswitch`` command),
``help`` and ``selftest``.
1.1 (2007-01-12)
----------------
* New command: ``ezswitch``.
* Changed ``ezmerge`` output format to be clearer.
* ``ezmerge`` now accepts 'rXXX' as revision numbers.
* ``ezmerge XXX:YYY`` treats the range as SVN-compatible
* ``ezmerge XXX-YYY`` is the new syntax for user-friendly inclusive ranges
* ``ezmerge ALL branchname`` figures out the appropriate revision numbers to
merge all of the changes made in that branch.
* ``ezmerge`` now accepts -n (--dry-run) option.
* ``ezmerge`` now accepts -h (--help) and shows a help message.
1.0 (2006-08-23)
----------------
* The original ``ezmerge.py`` by Philipp von Weitershausen.
Some of the dates before version 1.7.0 may be approximate, and the changes
misattributed to the wrong revision.
Licensing and source code
=========================
Eazysvn is licensed under the GNU General Public Licence version 2 or 3.
You can get the latest source code with
.. parsed-literal::
git clone https://github.com/mgedmin/eazysvn
Eazysvn began life as Philipp von Weitershausen's `ezmerge.py
<http://codespeak.net/svn/user/philikon/ezmerge.py>`_. Then Marius Gedminas
took over, created a `home page <https://mg.pov.lt/eazysvn>`_, and started
adding random features.
Bugs
====
Report bugs at https://github.com/mgedmin/eazysvn/issues
Wishlist/To do
==============
``ezmerge`` should accept a comma-separated list of revisions (1,2,4-6,9).
There should be ``eazysvn rmtag`` and ``eazysvn mvtag``.
``eazysvn help cmd`` should be the same as ``eazysvn cmd --help`` and not an
error.
``eazysvn -n cmd`` should be the same as ``eazysvn cmd -n`` and not an error.
``eazysvn`` should do an ``svn ls`` to discover the branching scheme in use
('branch' or the more traditional 'branches').
Raw data
{
"_id": null,
"home_page": "https://mg.pov.lt/eazysvn/",
"name": "eazysvn",
"maintainer": "Marius Gedminas",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "marius@gedmin.as",
"keywords": "svn subversion wrapper",
"author": "Philipp von Weitershausen",
"author_email": "philipp@weitershausen.de",
"download_url": "https://files.pythonhosted.org/packages/91/7f/d7ccde23a229de1b69fd82d42b0520b405a669ba8333e06775b26b1e9f86/eazysvn-1.16.0.tar.gz",
"platform": null,
"description": "=======\neazysvn\n=======\n\n.. image:: https://github.com/mgedmin/eazysvn/workflows/build/badge.svg?branch=master\n :target: https://github.com/mgedmin/eazysvn/actions\n\nEazysvn is a Python script that simplifies some common operations with\nSubversion branches.\n\n.. contents::\n\n\nInstallation\n============\n\nGet it from the `Python Package Index <https://pypi.org/project/eazysvn>`_::\n\n pip install eazysvn\n\nYou'll need Python 2.7 or later, as well as the Subversion command-line client.\n\n\nUsage\n=====\n\n\nGetting help\n------------\n\nAt the shell prompt type ::\n\n eazysvn help\n\nIt will print a list of commands. Some of the commands have aliases::\n\n ezswitch = eazysvn switch\n ezmerge = eazysvn merge\n ezrevert = eazysvn revert\n ezbranch = eazysvn branchurl\n\n\nSwitching between branches\n--------------------------\n\nIn a subversion working directory run ::\n\n ezswitch -l\n\nto see all the branches available in your project. This assumes your\nSubversion repository uses the standard layout with 'trunk', 'tags', and\n'branches' in it.\n\nThen run\n\n.. parsed-literal::\n\n ezswitch *branchname*\n\nto switch to a branch, and ::\n\n ezswitch trunk\n\nto switch back to trunk.\n\n\nWorking with branches\n---------------------\n\nSay you're working on a project and in the middle of a difficult refactoring\nsuddenly realize the changes you've made are too risky for trunk you want to\nput them in a branch. Run\n\n.. parsed-literal::\n\n ezswitch --create *my-branch*\n\nThis will create a new branch and switch your working directory to it. All\nyour changes in progress are kept intact and you can commit them directly\nto the new branch with svn commit.\n\n\nSeeing all the changes on a branch\n----------------------------------\n\nYou may want to see the overall diff of changes made on a branch since it was\ncreated, say, to review it before attempting a merge.\n\n.. parsed-literal::\n\n eazysvn branchdiff *branchname*\n\ndoes exactly that. For extra readability, install `colordiff\n<https://www.colordiff.org/>`_ and use\n\n.. parsed-literal::\n\n eazysvn branchdiff *branchname* | colordiff | less -R\n\n\nMerging branches\n----------------\n\nAfter you've finished hacking on your branch, you will want to switch back to\ntrunk and start merging. Run ::\n\n ezswitch trunk\n\nthen\n\n.. parsed-literal::\n\n ezmerge *my-branch*\n\nYou will see the svn command used for the merge as well as a log of all the\nchanges. Fix merge conflicts (if any), run the test suite, then commit.\nThe output of ezmerge helps you produce an informative commit message.\n\nIf instead of merging the changes to your working directory you'd like to see\nthe combined diff, pass the -d (or --diff) option to ezmerge\n\n.. parsed-literal::\n\n ezmerge -d *featurebranch*\n\n\nCherrypicking\n-------------\n\nIf you want to merge only some of the changes made in a branch, you can pass the\nrevision number (or a range) to ezmerge. For example, to backport a bug fix\nimplemented in revision 1234 of trunk to a release branch,\n\n.. parsed-literal::\n\n ezswitch *release-branch*\n ezmerge 1234 trunk\n\nYou can also merge a range of revisions ::\n\n ezmerge 1234-1236 trunk\n\nThis range is inclusive, unlike Subversion. If you want to, you can also use\nSubversion-style half-open ranges as well ::\n\n ezmerge 1233:1236 trunk\n\nThe --diff option works here too.\n\n.. parsed-literal::\n\n ezmerge -d 1234-1236 trunk\n\n\nReverting committed changes\n---------------------------\n\nIt's like cherry-picking, but in reverse: you want to unapply changes already\ncommitted to this branch. ::\n\n ezrevert 1234\n\n\nMaking tags\n-----------\n\nTo tag the current version of the source tree in your working directory, run\n\n.. parsed-literal::\n\n eazysvn tag *tagname*\n\n\nManipulating branches\n---------------------\n\nTo remove a branch completely, run\n\n.. parsed-literal::\n\n eazysvn rmbranch *branchname*\n\nTo rename a branch, run\n\n.. parsed-literal::\n\n eazysvn mvbranch *oldbranchname* *newbranchname*\n\nTo do other kinds of operations, eazysvn provides a shortcut that lets you\nuse branch names instead of full branch URLs (this bit assumes a Unix-like\nshell):\n\n.. parsed-literal::\n\n svn ls $(ezbranch *branchname*)\n svn diff \\`ezbranch *branch1*\\` \\`ezbranch *branch2*\\`\n\nAnother possibly useful eazysvn command is ``branchpoint``. It shows the\nrevision when a branch was created. For example, to see the changes\nin trunk that are not present in a branch, run\n\n.. parsed-literal::\n\n svn diff -r \\`eazysvn branchpoint *branch*\\`:HEAD \\`ezbranch *trunk*\\`\n\n\nOverall options\n---------------\n\nAll commands that require a branch name as an argument accept a -l (or --list)\noption that lists all branches, e.g. ::\n\n ezbranch -l\n\nAll commands that make changes to the repository or working directory accept\na -n (or --dry-run) option that just prints the svn commands that would\notherwise be executed. ::\n\n ezmerge -n 1234 otherbranch\n\nAll commands that make changes to the repository (create/remove/rename branches\nor tags) accept a -m option with a commit message. If not specified, you'll\nget a text editor spawned by subversion itself to type the commit message. ::\n\n ezswitch -c newbranch -m \"Create branch for the new feature\"\n\nMany of the commands accept other options as well. Use\n\n.. parsed-literal::\n\n eazysvn *cmd* --help\n ezmerge --help\n ezswitch --help\n *etc.*\n\nto discover those.\n\n\nAppendixes\n==========\n\n\nRevision numbers\n----------------\n\nA revision to Subversion means the state of the whole project tree at a given\ninstant of time. Sometimes the changeset that converts one revision to another\nis more interesting. When you specify a single number N to ezmerge, it assumes\nthat you want to merge the changeset that changes revision (N-1) to revision N.\n\nIf you specify a range N-M, ezmerge.py merges all the changesets\nthat change revision (N-1) to revision M. For compatibility with ``svn\nmerge`` you can specify the revision range as N:M, and ezmerge will\nmerge all the changesets that convert revision N to revision M. In the last\ncase N can be greater than M, which is useful if you want to revert some\nchanges, although ``ezrevert`` is more convenient for that.\n\nWhen you specify ranges (N-M or N:M) M can be a special name ``HEAD``.\nIt means the latest revision in the repository.\n\nYou can also specify a special range ``ALL``, which means all the changesets\nmade in the branch. ezmerge will parse the output of ``svn log`` to get the\nrevision numbers for you. ``ezmerge branchname`` is a shortcut for ``ezmerge\nALL branchname``.\n\nFor easier copying & pasting from ``svn log`` output, you can prefix numbers\nwith the letter ``r``, e.g. ``r1234``.\n\n\nBranch names\n------------\n\nEazysvn expects you to use the traditional repository layout, and can\nfind its way from any of these to any other of these URLs if you specify the\ndesired branch name as 'trunk', 'foo', or 'bar'.\n\n.. parsed-literal::\n\n *scheme://server/path/to/svn/repo*/trunk/*subdirs*\n *scheme://server/path/to/svn/repo*/branches/foo/*subdirs*\n *scheme://server/path/to/svn/repo*/branches/bar/*subdirs*\n\nYou do not have to be at the top of the project to switch or merge, any\nsubdirectory will work. The part of your checkout above the current\ndirectory will not be touched by the merge/switch.\n\nAn alternative scheme is partially supported:\n\n.. parsed-literal::\n\n *scheme://server/path/to/svn/repo*/trunk/*subdirs*\n *scheme://server/path/to/svn/repo*/branch/foo/*subdirs*\n *scheme://server/path/to/svn/repo*/branch/bar/*subdirs*\n\nEazysvn will be able to find the location of trunk or other branches if you\nstart out in a branch checkout, but it won't be able to find your branches\nfrom a trunk checkout. This is a bug that should be fixed one day.\n\nYou can force eazysvn to use any nonstandard scheme if you explicitly enter the\nprefix with a slash in front of the branch name, e.g. ``ezswitch feature/foo``\nin a trunk checkout would switch from\n\n.. parsed-literal::\n\n *scheme://server/path/to/svn/repo*/trunk/*subdirs*\n\nto\n\n.. parsed-literal::\n\n *scheme://server/path/to/svn/repo*/feature/foo/*subdirs*\n\nIf you start out in a checkout of such a nonstandard location, Eazysvn won't be\nable to find the location of trunk or other branches. This is a bug that\nshould be fixed one day.\n\n\nBranch merge logic\n------------------\n\nWhen you merge a branch (to trunk or to another branch), eazysvn uses ``svn\nlog`` to find the revision number when the branch was created. Then it merges\nall the changes ever committed on that branch.\n\nThis means you usually can't merge from the same branch more than once. It's\na consequence of Subversion's lack of merge tracking.\n\nAlso, since there's no fancy searching for common ancestors or anything like\nthat, if you branch A from trunk make some changes, then branch B from branch\nA, make some changes, then if you ezmerge B on trunk, you won't get any changes\nmade in branch A.\n\nWhen you merge a trunk to a branch, eazysvn again uses ``svn log`` to find the\nbranch point and then merges all the changes made on trunk since that revision.\n\nIt's a bad idea to merge from trunk to a branch, because then you won't easily\nbe able to merge that branch back to trunk. You may try, subversion might\napply the already-applied changes twice cleanly, but it's a matter of luck.\n\nKeep it simple: always merge a branch only once, back to the same place you\nbranched from, and you'll avoid trouble. Remove branches you've merged to\navoid accidentally making new changes that will be harder to merge.\n\n\nChangelog\n=========\n\n1.16.0 (2024-10-09)\n-------------------\n\n- Add support for Python 3.8, 3.9, 3.10, 3.11, 3.12, and 3.13.\n\n- Drop support for Python 2.7, 3.5 and 3.6.\n\n\n1.15.1 (2019-04-23)\n-------------------\n\n- Add support for Python 3.7.\n\n- Drop support for Python 3.4.\n\n\n1.15.0 (2018-04-13)\n-------------------\n\n* Add support for Python 3.6.\n\n* Drop support for Python 3.3.\n\n* 100% test coverage.\n\n\n1.14.0 (2016-09-17)\n-------------------\n\n* Drop Python 2.6 and 3.2 support.\n\n* Actually support Python 3.\n\n\n1.13.0 (2015-01-13)\n-------------------\n\n* Flush output buffers before executing external commands. Previously\n if you did, e.g. eazysvn branchdiff > DIFF, you would see the output of svn\n diff above the svn diff command itself.\n\n* Fix command alias handling on windows\n (https://github.com/mgedmin/eazysvn/pull/1)\n Patch by Timon Wong <timon86.wang@gmail.com>.\n\n* Support Python 3.\n\n\n1.12.2 (2012-02-20)\n-------------------\n\n* New argument: ``ezmerge --accept=ARG``, passed directly to subversion.\n\n* Moved the source code from self-hosted Subversion to GitHub.\n\n\n1.12.1 (2010-09-14)\n-------------------\n\n* A somewhat better error message for ``ezswitch -c newbranch`` when eazysvn\n is unable to understand the branch structure (LP#446369).\n\n* ``ezswitch -t tagname; ezswitch branchname`` switches to a branch named\n ``branchname`` instead of trying to switch to a tag named ``branchname``\n (LP#617888, fix by Wolfgang Schnerring).\n\n\n1.12.0 (2010-07-22)\n-------------------\n\n* Minor fixes to various options --help messages.\n\n* Don't pass revision range to svn when using ``ezmerge --reintegrate``.\n Patch by Michael Howitz <mh@gocept.com>.\n\n* New option: ``ezmerge --tag``.\n Contributed by Michael Howitz <mh@gocept.com>.\n\n\n1.11.0 (2009-05-26)\n-------------------\n\n* New option: ``ezmerge --reintegrate``, passed straight to svn merge.\n Contributed by Wolfgang Schnerring <wosc@wosc.de>.\n\n\n1.10.0 (2009-04-08)\n-------------------\n\n* Uses ``subprocess`` instead of ``os.popen2``; no more deprecation warnings\n on Python 2.6.\n\n\n1.9.0 (2008-08-08)\n------------------\n\n* ``eazysvn tag`` accepts the -l (--list) option.\n* ``ezbranch`` and ``ezswitch`` accept the -t option.\n* New command: ``eazysvn branchpoint``.\n* You can refer to tags in all commands that accept branch names; use a branch\n named \"tags/*tagname*\". This works for all kinds of prefixes, e.g.\n \"obsolete-branches/*branchname*\" etc.\n\n\n1.8.0 (2008-06-26)\n------------------\n\n* Nice PyPI documentation page with a changelog.\n* New command: ``eazysvn tag``.\n* ``eazysvn --version`` prints the version number.\n\n\n1.7.0 (2008-06-11)\n------------------\n\n* New command: ``eazysvn branchdiff``.\n\n\n1.6.1 (2007-12-12)\n------------------\n\n* ``ezmerge`` accepts the -l (--list) option.\n* ``ezmerge branchname`` is short for ``ezmerge ALL branchname``.\n\n\n1.6.0 (2007-12-11)\n------------------\n\n* ``ezmerge`` accepts the -d (--diff) option.\n\n\n1.5.1 (2007-06-28)\n------------------\n\n* ``ezrevert`` is short for ``eazysvn revert``.\n\n\n1.5 (2007-06-28)\n----------------\n\n* New command: ``ezbranch``, short for ``eazysvn branchurl``.\n\n\n1.5 (2007-06-28)\n----------------\n\n* New command: ``ezbranch``, short for ``eazysvn branchurl``.\n\n\n1.4.1 (2007-06-20)\n------------------\n\n* Bugfix for ``eazysvn rmbranch``.\n\n\n1.4.0 (2007-06-11)\n------------------\n\n* New command: ``eazysvn rmbranch``.\n* New command: ``eazysvn mvbranch``.\n\n\n1.3.1 (2007-04-04)\n------------------\n\n* Make ``ezmerge ALL trunk`` useful: merge changes from the branch point of the\n current branch, not from the start of trunk.\n\n\n1.3 (2007-01-25)\n----------------\n\n* New command: ``eazysvn revert``.\n\n\n1.2 (2007-01-16)\n----------------\n\n* First setuptools-based release, thanks to Philipp von Weitershausen.\n* New command: ``eazysvn`` with four subcommands: ``merge`` (same as the old\n ``ezmerge`` command), ``switch`` (same as the old ``ezswitch`` command),\n ``help`` and ``selftest``.\n\n\n1.1 (2007-01-12)\n----------------\n\n* New command: ``ezswitch``.\n* Changed ``ezmerge`` output format to be clearer.\n* ``ezmerge`` now accepts 'rXXX' as revision numbers.\n* ``ezmerge XXX:YYY`` treats the range as SVN-compatible\n* ``ezmerge XXX-YYY`` is the new syntax for user-friendly inclusive ranges\n* ``ezmerge ALL branchname`` figures out the appropriate revision numbers to\n merge all of the changes made in that branch.\n* ``ezmerge`` now accepts -n (--dry-run) option.\n* ``ezmerge`` now accepts -h (--help) and shows a help message.\n\n\n1.0 (2006-08-23)\n----------------\n\n* The original ``ezmerge.py`` by Philipp von Weitershausen.\n\n\nSome of the dates before version 1.7.0 may be approximate, and the changes\nmisattributed to the wrong revision.\n\n\n\nLicensing and source code\n=========================\n\nEazysvn is licensed under the GNU General Public Licence version 2 or 3.\n\nYou can get the latest source code with\n\n.. parsed-literal::\n\n git clone https://github.com/mgedmin/eazysvn\n\nEazysvn began life as Philipp von Weitershausen's `ezmerge.py\n<http://codespeak.net/svn/user/philikon/ezmerge.py>`_. Then Marius Gedminas\ntook over, created a `home page <https://mg.pov.lt/eazysvn>`_, and started\nadding random features.\n\n\nBugs\n====\n\nReport bugs at https://github.com/mgedmin/eazysvn/issues\n\n\nWishlist/To do\n==============\n\n``ezmerge`` should accept a comma-separated list of revisions (1,2,4-6,9).\n\nThere should be ``eazysvn rmtag`` and ``eazysvn mvtag``.\n\n``eazysvn help cmd`` should be the same as ``eazysvn cmd --help`` and not an\nerror.\n\n``eazysvn -n cmd`` should be the same as ``eazysvn cmd -n`` and not an error.\n\n``eazysvn`` should do an ``svn ls`` to discover the branching scheme in use\n('branch' or the more traditional 'branches').\n\n",
"bugtrack_url": null,
"license": "GPL v2 or v3",
"summary": "Make simple revision merges and branch switching much easier",
"version": "1.16.0",
"project_urls": {
"Homepage": "https://mg.pov.lt/eazysvn/",
"Source": "https://github.com/mgedmin/eazysvn"
},
"split_keywords": [
"svn",
"subversion",
"wrapper"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "39591dba1eb7375907e1d932226ceaf011666188bbbb5788c66af2c08b2282f2",
"md5": "faf66b30ecabb2d5e7a8dfeb41d5f0de",
"sha256": "d90cffd9041a274a19595fa9d9edc3a455120a304ca5091477f7f090df0fc490"
},
"downloads": -1,
"filename": "eazysvn-1.16.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "faf66b30ecabb2d5e7a8dfeb41d5f0de",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.7",
"size": 19724,
"upload_time": "2024-10-09T09:10:44",
"upload_time_iso_8601": "2024-10-09T09:10:44.227430Z",
"url": "https://files.pythonhosted.org/packages/39/59/1dba1eb7375907e1d932226ceaf011666188bbbb5788c66af2c08b2282f2/eazysvn-1.16.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "917fd7ccde23a229de1b69fd82d42b0520b405a669ba8333e06775b26b1e9f86",
"md5": "eb135e5597177dcbdeba9d63e4b2382b",
"sha256": "8e14b83bfb645bb18b5b808d18d90cff5a28b01067ef9d4dfcae5bddd1902ce9"
},
"downloads": -1,
"filename": "eazysvn-1.16.0.tar.gz",
"has_sig": false,
"md5_digest": "eb135e5597177dcbdeba9d63e4b2382b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 30776,
"upload_time": "2024-10-09T09:10:45",
"upload_time_iso_8601": "2024-10-09T09:10:45.849152Z",
"url": "https://files.pythonhosted.org/packages/91/7f/d7ccde23a229de1b69fd82d42b0520b405a669ba8333e06775b26b1e9f86/eazysvn-1.16.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-09 09:10:45",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "mgedmin",
"github_project": "eazysvn",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"appveyor": true,
"tox": true,
"lcname": "eazysvn"
}