lib/change_agent/document.rb in change_agent-0.1.0 vs lib/change_agent/document.rb in change_agent-0.2.0
- old
+ new
@@ -17,55 +17,51 @@
def repo
@client.repo
end
def contents
- @contents ||= begin
- tree = repo.head.target.tree
- blob = repo.lookup tree.path(path)[:oid]
- blob.content
- end
- rescue Rugged::ReferenceError, Rugged::TreeError
- nil
+ @contents ||= blob_contents
end
- def write
- clean_path
+ def changed?
+ contents != blob_contents
+ end
+
+ def save
oid = repo.write contents, :blob
repo.index.add(path: path, oid: oid, mode: 0100644)
Rugged::Commit.create repo,
message: "Updating #{path}",
parents: repo.empty? ? [] : [ repo.head.target ],
tree: repo.index.write_tree(repo),
update_ref: 'HEAD'
end
+ alias_method :write, :save
def delete(file=path)
repo.index.remove(file)
Rugged::Commit.create repo,
message: "Removing #{path}",
parents: [repo.head.target],
tree: repo.index.write_tree(repo),
update_ref: 'HEAD'
+ rescue Rugged::IndexError
+ false
end
def inspect
"#<ChangeAgent::Document path=\"#{path}\">"
end
private
- def clean_path
- return if repo.empty?
- dirs = []
+ def blob_contents
tree = repo.head.target.tree
- path.split("/").each do |part|
- file = dirs.push(part).join("/")
- delete(file) if tree.path(file)
- end
- rescue Rugged::TreeError
+ blob = repo.lookup tree.path(path)[:oid]
+ blob.content
+ rescue Rugged::ReferenceError, Rugged::TreeError
nil
end
end
end