The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

rami - Automates merging/committing a single change to an arbitrary number of branches

SYNOPSIS

Try it from the command line, using this real demonstration repository. Merge revision 7 from the trunk to all the branches, as follows:

  $ rami --load-repo-config-from-svn-url=https://github.com/DanTheDancer/demo-rami/trunk/rami-config
  ...
  Checked out revision 8.
  
  $ rami -c 7
  ...
  Password for 'you': ***********
  Committed revision 9

Of course, it won't work as well if you don't have permission to commit to that repository, which you probably don't. But let's look at what the commands do.

  $ rami --load-repo-config-from-svn-url=https://github.com/DanTheDancer/demo-rami/trunk/rami-config

Configures Rami using the files at that URL. There is only one such file, named urls.csv, which tells it the branches to which it should merge changes to the trunk.

  $ rami -c 7

Tells Rami to merge revision 7. Rami figures out that revision 7 was made to the trunk, and that according to urls.csv, changes to the trunk should go to three branches. So it commits the change to all three branches.

Note: if it encounters a merge conflict, Rami will exit with an error message.

FILES

Both configuration and repository working directories can be found in the ~/.rami directory.

BUGS

When run from Cygwin, rami uses the Cygwin user's home directory, which is different from the Windows user's home directory. This means that rami on Cygwin and rami on Windows do not share the same configuration.

Rami keeps a local copy of all the branches, even when it is not running. (In other words, if you run Rami, you will have all the branches sitting on your hard drive at once.) This makes Rami run faster, but uses a lot of disk space.

Rami might interpret the branch name (which should be something like "trunk" or "3.1") as an SVN URL if the name starts with something like "http:" or "svn:".

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc SVN::Rami

You can also look for information at:

ETYMOLOGY

"Rami" is Latin for "to the branch." It would be more correct to call it "to the branches," but that would be "Ramis", which would be easily confused with a certain programming language.

SEE ALSO

SVK::Merge

LICENSE AND COPYRIGHT

This software is copyright (c) 2023 by Dan Richter.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.