Au
Distributed version control system for CS253/453 at the University of Rochester.
'Au' is the chemical element commonly known as 'gold'. It has an atomic number of 79, one less than mercurial. We chose this name with deference to Mercurial. It also has the same pronunciation with the Chinese colloquial expression '哎呦' or '矮油', the literal translation of which can be loosely interpreted as 'wow' (as in Jay Chou's '哎呦不错喔').
Team
Installation
For your convenience (and sanity), this library is released on https://rubygems.org/ at https://rubygems.org/gems/au.
To install
$ gem install au
This project ONLY supports Ruby 2.5.0 and above. Due to the Integer class changes in Ruby 2.5.0,
any older version will error. If your system comes with an older version, please either
update your Ruby installation or use rbenv. You may need to use sudo. Additionally, if you are on an outdated Ruby installation, please make sure your load path is updated for Ruby executable.
Design Document
A simple get-started tutorial video.
Commands:
au cat COMMIT_ID PATH
# Display file from a provided commit.
au checkout COMMIT_ID
# Check out a commit. Similar behavior with git checkout.
au clone REMOTE_PATH [optional: LOCAL_PATH]
# Copy an existing repo from the provided remote path.
au commit [-m MESSAGE]
# Commit already staged files. Use -m to provide commit message.
au diff PATH
# Display diff between the file state from HEAD and from presence.
au heads
# Display ids of commits that don't have children.
au help [COMMAND]
# Describe available commands or one specific command
au init
# Start tracking current directory
au log
# Display parent commits. Only true lineage is displayed, meaning that
# the second parents from merged commits are ignored.
au merge COMMIT_ID
# Merge with provided commit.
au pull REMOTE_PATH
# Pull changes from remote repo.
au push REMOTE_PATH
# Push changes to remote repo.
au reset
# Remove all history from the project.
au stage PATH
# Stage one or more files for commit. If a dir path is provided, all files within the
# dir are staged.
au status
# Check current status of repo. Displays staged and unstaged files, as well as
# current HEAD ID.
au unstage PATHS
# Remove one or more files from the staging area.
Development Build
This project uses bundler to manage production and development dependencies (see more in 'depenedencies' section).
Again, this project requires Ruby 2.5.0 or higher.
gem install bundler to install bundler
bundle install to install all dependencies
Unit specs are written in RSpec. Use bundle exec rspec to run all unit specs.
Use ruby -Ilib:test test/integration_test.rb to run integration test.
To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.
Dependencies
This project has the following produciton dependencies:
- Thor - We use thor to save time with the chores in handling cmd flags and documentation.
- Colorize - We use colorize to give our cmd output colors.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/hubertlee915/au.
License
The gem is available as open source under the terms of the MIT License.