git-ds 0.9.5.1 → 0.9.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +4 -0
- data/lib/git-ds/index.rb +1 -1
- data/lib/git-ds/model/item.rb +11 -0
- data/lib/git-ds/model/property.rb +43 -2
- data/lib/git-ds/repo.rb +7 -6
- data/tests/ut_repo.rb +1 -0
- metadata +3 -3
data/ChangeLog
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
2011-04-18 : mkfs <mkfs@thoughtgang.org>
|
2
|
+
* Bumped gem version to 0.9.5
|
2
3
|
* Added ModelItem.exist? class member
|
3
4
|
* Added convenience property method aliases to ModelItem
|
5
|
+
* Changed default branch from 'master' to Repo#current_branch
|
6
|
+
* Added a BinaryPropertyDefinition class
|
7
|
+
* Added a binary_property class method to ModelItem
|
4
8
|
|
5
9
|
2011-04-15 : mkfs <mkfs@thoughtgang.org>
|
6
10
|
* Removed newline from Repo.top_level
|
data/lib/git-ds/index.rb
CHANGED
@@ -129,7 +129,7 @@ Index object for the Git staging index.
|
|
129
129
|
|
130
130
|
=begin rdoc
|
131
131
|
=end
|
132
|
-
def initialize(repo,treeish=nil)
|
132
|
+
def initialize(repo, treeish=nil)
|
133
133
|
super(repo)
|
134
134
|
@parent_commit = repo.commits(repo.current_branch, 1).first
|
135
135
|
treeish = (@parent_commit ? @parent_commit.tree.id : 'master') if \
|
data/lib/git-ds/model/item.rb
CHANGED
@@ -249,6 +249,17 @@ This can be overridden to change how properties are stored.
|
|
249
249
|
define_db_property(name, default, &block)
|
250
250
|
end
|
251
251
|
|
252
|
+
=begin rdoc
|
253
|
+
Define a BinaryProperty for this ModelItem class. The property will be on-FS
|
254
|
+
unless on_fs is set to false.
|
255
|
+
|
256
|
+
Note: Properties that store raw binary data have no default value and no
|
257
|
+
validation function. They are assumed to be on-disk by default.
|
258
|
+
=end
|
259
|
+
def binary_property(name, on_fs=true)
|
260
|
+
add_property BinaryPropertyDefinition.new(name, nil, on_fs)
|
261
|
+
end
|
262
|
+
|
252
263
|
=begin rdoc
|
253
264
|
Define a property that is a link to a ModelItem object.
|
254
265
|
|
@@ -97,8 +97,8 @@ Property BLOB.
|
|
97
97
|
val = value.inspect
|
98
98
|
end
|
99
99
|
|
100
|
-
|
101
|
-
|
100
|
+
write(model, path(parent_path), val + "\n")
|
101
|
+
|
102
102
|
val
|
103
103
|
end
|
104
104
|
|
@@ -113,6 +113,47 @@ valid. Otherwise, return true.
|
|
113
113
|
|
114
114
|
alias :default :default_value
|
115
115
|
|
116
|
+
protected
|
117
|
+
|
118
|
+
=begin rdoc
|
119
|
+
Write
|
120
|
+
=end
|
121
|
+
def write(model, path, value)
|
122
|
+
on_fs ? model.add_fs_item(path, value) : model.add_item(path, value)
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
=begin rdoc
|
128
|
+
A definition of a ModelItem property that stores binary data.
|
129
|
+
=end
|
130
|
+
class BinaryPropertyDefinition < PropertyDefinition
|
131
|
+
|
132
|
+
=begin rdoc
|
133
|
+
Read value from ModelItem at path in Model.
|
134
|
+
|
135
|
+
This just returns the raw binary value of the property file contents.
|
136
|
+
=end
|
137
|
+
def get(model, parent_path)
|
138
|
+
model.get_item(path(parent_path))
|
139
|
+
end
|
140
|
+
|
141
|
+
=begin rdoc
|
142
|
+
Write a raw binary value to ModelItem at path in Model.
|
143
|
+
|
144
|
+
Note: this returns the raw binary data as written to the Property BLOB.
|
145
|
+
=end
|
146
|
+
def set(model, parent_path, value)
|
147
|
+
write(model, path(parent_path), value)
|
148
|
+
value
|
149
|
+
end
|
150
|
+
|
151
|
+
=begin rdoc
|
152
|
+
Raw binary property values are always valid if they are not nil
|
153
|
+
=end
|
154
|
+
def valid?(val)
|
155
|
+
val != nil
|
156
|
+
end
|
116
157
|
end
|
117
158
|
|
118
159
|
=begin rdoc
|
data/lib/git-ds/repo.rb
CHANGED
@@ -261,8 +261,9 @@ Returns SHA of commit.
|
|
261
261
|
=end
|
262
262
|
def stage_and_commit(msg, actor=nil, &block)
|
263
263
|
stage(&block)
|
264
|
-
self.staging.commit(msg, actor)
|
264
|
+
sha = self.staging.commit(msg, actor)
|
265
265
|
unstage
|
266
|
+
sha
|
266
267
|
end
|
267
268
|
|
268
269
|
# ----------------------------------------------------------------------
|
@@ -347,7 +348,7 @@ the staging index.
|
|
347
348
|
# ----------------------------------------------------------------------
|
348
349
|
=begin rdoc
|
349
350
|
The Tree object for the given treeish reference
|
350
|
-
+treeish+ is the reference (default
|
351
|
+
+treeish+ is the reference (default Repo#current_branch)
|
351
352
|
+paths+ is an optional Array of directory paths to restrict the tree (default [])
|
352
353
|
|
353
354
|
Uses staging index if present and provides wrapper for nil treeish.
|
@@ -363,7 +364,7 @@ Uses staging index if present and provides wrapper for nil treeish.
|
|
363
364
|
@staging_index.sync
|
364
365
|
super(@staging_index.current_tree.id, paths)
|
365
366
|
else
|
366
|
-
treeish =
|
367
|
+
treeish = @current_branch if not treeish
|
367
368
|
super
|
368
369
|
end
|
369
370
|
rescue Grit::GitRuby::Repository::NoSuchPath
|
@@ -419,7 +420,7 @@ tree_contents.
|
|
419
420
|
def list(path=nil)
|
420
421
|
sha = path_to_sha(path)
|
421
422
|
# ensure correct operation even if path doesn't exist in repo
|
422
|
-
t = sha ? tree(sha) : tree(
|
423
|
+
t = sha ? tree(sha) : tree(@current_branch, (path ? [path] : []))
|
423
424
|
t ? tree_contents( t ) : {}
|
424
425
|
end
|
425
426
|
|
@@ -452,12 +453,12 @@ Returns the raw (git cat-file) representation of a tree.
|
|
452
453
|
Fetch an object from the repo based on its path.
|
453
454
|
|
454
455
|
If a staging index exists, its tree will be used; otherwise, the tree
|
455
|
-
|
456
|
+
Repo#current_branch will be used.
|
456
457
|
|
457
458
|
The object returned will be a Grit::Blob, a Grit::Tree, or nil.
|
458
459
|
=end
|
459
460
|
def path_to_object(path)
|
460
|
-
treeish = (@staging_index ? staging.sha :
|
461
|
+
treeish = (@staging_index ? staging.sha : @current_branch)
|
461
462
|
tree = self.tree(treeish, [path])
|
462
463
|
return tree.blobs.first if tree && (not tree.blobs.empty?)
|
463
464
|
return tree.trees.first if tree && (not tree.trees.empty?)
|
data/tests/ut_repo.rb
CHANGED
@@ -173,6 +173,7 @@ class TC_GitRepoTest < Test::Unit::TestCase
|
|
173
173
|
|
174
174
|
# switch to new branch and change data
|
175
175
|
@repo.set_branch(new_branch)
|
176
|
+
assert_equal('v01', @repo.current_branch, 'V01 is not current branch')
|
176
177
|
path, data = 'class c/instance a/prop b', '~~~~~~~~~~'
|
177
178
|
@repo.stage_and_commit('test commit for merge') { |idx|
|
178
179
|
idx.add( path, data )
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-ds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.5.
|
4
|
+
version: 0.9.5.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ default_executable:
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: grit
|
17
|
-
requirement: &
|
17
|
+
requirement: &20831860 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
version: 2.2.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *20831860
|
26
26
|
description: A hierarchical datastore based on Git.
|
27
27
|
email: community@thoughtgang.org
|
28
28
|
executables: []
|