Subversion wrapper in Ruby

I've begun developing a small library that wraps the command-line
Subversion commands, so that you can call SVN.copy(src, dest, :message
=> 'chunky bacon') etc. These will only cover the methods Subversion
directly supports.

The reason I'm making this library is actually that I want to have Rake
tasks that automate tagging, branching, etc. of my repository.
Currently, the most advanced thing I have is this:

  SVN::TagReleaseTask.new do |t|
    t.repository = 'svn://svn.example.org/bacon'
    t.version = '1.2.3'
  end

Calling `rake svn:tag:release' will then issue the following to the
command line:

  svn copy svn://svn.example.org/bacon/trunk
svn://svn.example.org/bacon/tags/release-1.2.3 --message "tagging
release 1.2.3"

Do you have any special wishes? As soon as the Rubyforge submission goes
through I'll make an alpha gem for those wanting to get their hands
dirty :slight_smile:

Cheers,
Daniel

As an aside: there are direct Ruby bindings into the underlying libsvn, so
it's possible to talk to a SVN repository directly (local or remote) without
spawning an external command.

Unfortunately libsvn doesn't seem to be well documented, especially for
remote access. A couple of interesting posts are here:
http://agylen.com/2006/07/14/using-the-ruby-bindings-for-subversion/
http://www.oneofthewolves.com/2007/03/06/ruby-subversion-bindings-finally-some-documentation/

So you're probably right to use the command-line interface.

Regards,

Brian.

···

On Wed, Apr 04, 2007 at 05:26:12AM +0900, Daniel Schierbeck wrote:

I've begun developing a small library that wraps the command-line
Subversion commands, so that you can call SVN.copy(src, dest, :message
=> 'chunky bacon') etc. These will only cover the methods Subversion
directly supports.

The reason I'm making this library is actually that I want to have Rake
tasks that automate tagging, branching, etc. of my repository.
Currently, the most advanced thing I have is this:

  SVN::TagReleaseTask.new do |t|
    t.repository = 'svn://svn.example.org/bacon'
    t.version = '1.2.3'
  end

Calling `rake svn:tag:release' will then issue the following to the
command line:

  svn copy svn://svn.example.org/bacon/trunk
svn://svn.example.org/bacon/tags/release-1.2.3 --message "tagging
release 1.2.3"

See also RSCM, http://rscm.rubyforge.org/ which looks interesting.

Alex

···

On 4/3/07, Daniel Schierbeck <daniel.schierbeck@gmail.com> wrote:

I've begun developing a small library that wraps the command-line
Subversion commands, so that you can call SVN.copy(src, dest, :message
=> 'chunky bacon') etc. These will only cover the methods Subversion
directly supports.

well i can only wish you good luck - svn support is much needed - from me i
can paste code that i found on wiki somewhere and modified a little - it
adds/deletes all changed files in directory to SVN.

update.rb (1.34 KB)

···

On Tuesday 03 April 2007 20:26, Daniel Schierbeck wrote:

I've begun developing a small library that wraps the command-line
Subversion commands, so that you can call SVN.copy(src, dest, :message
=> 'chunky bacon') etc. These will only cover the methods Subversion
directly supports.

The reason I'm making this library is actually that I want to have Rake
tasks that automate tagging, branching, etc. of my repository.
Currently, the most advanced thing I have is this:

  SVN::TagReleaseTask.new do |t|
    t.repository = 'svn://svn.example.org/bacon'
    t.version = '1.2.3'
  end

Calling `rake svn:tag:release' will then issue the following to the
command line:

  svn copy svn://svn.example.org/bacon/trunk
svn://svn.example.org/bacon/tags/release-1.2.3 --message "tagging
release 1.2.3"

Do you have any special wishes? As soon as the Rubyforge submission goes
through I'll make an alpha gem for those wanting to get their hands
dirty :slight_smile:

Cheers,
Daniel

Wow, I hope you will follow through and stay active. Many people don't even
get past the coding part.

I think this will be neat. I already developed a script that automatically
add .rb files, but it take me several tries and lot of example code. I hope
this library you're developing will ease the process of writing SVN ruby
scripts.

I don't really have anything special to wish for, except an easy to use API.

Wish you all the best luck in the world.

···

On 4/4/07, Brian Candler <B.Candler@pobox.com> wrote:

On Wed, Apr 04, 2007 at 05:26:12AM +0900, Daniel Schierbeck wrote:
> I've begun developing a small library that wraps the command-line
> Subversion commands, so that you can call SVN.copy(src, dest, :message
> => 'chunky bacon') etc. These will only cover the methods Subversion
> directly supports.
>
> The reason I'm making this library is actually that I want to have Rake
> tasks that automate tagging, branching, etc. of my repository.
> Currently, the most advanced thing I have is this:
>
> SVN::TagReleaseTask.new do |t|
> t.repository = 'svn://svn.example.org/bacon'
> t.version = '1.2.3'
> end
>
> Calling `rake svn:tag:release' will then issue the following to the
> command line:
>
> svn copy svn://svn.example.org/bacon/trunk
> svn://svn.example.org/bacon/tags/release-1.2.3 --message "tagging
> release 1.2.3"

Thank you very much! I'm really just adding some convenience methods --
most of the work goes into the Rake tasks.

Cheers,
Daniel

···

On Wed, 2007-04-04 at 19:55 +0900, Han Dao wrote:

Wow, I hope you will follow through and stay active. Many people don't even
get past the coding part.

I think this will be neat. I already developed a script that automatically
add .rb files, but it take me several tries and lot of example code. I hope
this library you're developing will ease the process of writing SVN ruby
scripts.

I don't really have anything special to wish for, except an easy to use API.

Wish you all the best luck in the world.