This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
commit 0d219eb10efc3c4e350479e1504ce977ff9a3753
tree dc3e456d1849e1c6ac34de664d142e2c3ff5c960
parent fee3be2612c084086c79227924df7b679b513143
tree dc3e456d1849e1c6ac34de664d142e2c3ff5c960
parent fee3be2612c084086c79227924df7b679b513143
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Fri Jan 23 13:38:17 -0800 2009 | |
| |
README | Fri Jan 23 15:55:50 -0800 2009 | |
| |
Rakefile | Fri Dec 05 12:08:06 -0800 2008 | |
| |
generators/ | Fri Dec 12 10:48:19 -0800 2008 | |
| |
init.rb | Fri Jan 23 13:38:17 -0800 2009 | |
| |
lib/ | Fri Jan 23 13:42:17 -0800 2009 | |
| |
rails/ | Fri Jan 23 13:38:17 -0800 2009 | |
| |
spec/ | Fri Dec 12 10:48:19 -0800 2008 |
README
= ActsLikeGit
ALG automagically saves the history of a given text or string field. It sits over the top of an ActiveRecord model;
after a value is committed to the database, the plugin writes the new value to a text file and commits it to a git
repository. This way you get all the advantages of using Git as version-control.
Note: this plugin does not play nice with other plugins which override the getters and setters on your model. So if, for
example, you're creating a permalink on the same column as the versioning, you're going to run into problems due to the
inherent complexity in define_attribute_methods.
== Usage
Declare which attributes are to be versioned:
class Post < ActiveRecord::Base
versioning(:title) do |version|
version.repository = '/home/git/repositories/postal.git'
version.message = lambda { |post| "Committed by #{post.author.name}" }
end
end
To view the complete list of changes:
>> @post = Post.find 15
<Post:15>
>> @post.title
=> 'Freddy'
>> @post.history(:title)
=> ['Joe', 'Frank', 'Freddy]
>> @post.log
=> ['bfec2f69e270d2d02de4e8c7a4eb2bd0f132bdbb', '643deb45c12982dde75ba71657792a2dbdda83e6',
'1ce6c7368219db7698f4acc3417e656510b4138d']
>> @post.revert_to '1ce6c7368219db7698f4acc3417e656510b4138d'
>> @post.title
=> 'Joe'
Note that ActsLikeGit will store the current value of the field in your database, so you can use @post.title as before.
If you want
to force git to reload the field's data, send true to the attribute like
@post.title(true)
Copyright (c) 2008 [Jamie van Dyke, Courtenay Gasking, Scott Chacon, Roman Le Négrate], released under the MIT license.







