hglib 0.8.0 → 0.11.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56dd5ffa23837596f0d3248677aceb3cf20e836fdb915cd58fb32d74afbee746
4
- data.tar.gz: 9a45cc618c6a9925f8aa54dbb89aae95bef02755fd9eee64285e134080015b17
3
+ metadata.gz: 49414cda8ac1d182dc28c5ea23052a30570a8639e25b86a24c668a704ac36a2f
4
+ data.tar.gz: b2bc6ceaa334cc1717991eb68abec0552907f3b9106397bd282170de4ca120c6
5
5
  SHA512:
6
- metadata.gz: 7162090406ec2fcb10bb6ff5450dc7a7b5a2a315cf405309519edb7c86d41ad9d4c8ed1aa8ec2f351e6d31c06d6bc7dc62f396acb537b3e198ad1319244a3aa1
7
- data.tar.gz: fe4e915b74ecd0ae0e430e4db7a103deb424db4fc472aa059efe364b3e8b56ccefa781804613c6f0920bfa263f37339949f3a572afa7ddd5c08a233af430fbcb
6
+ metadata.gz: c0a091ecc6a40aaf50f7215376b24c0b2b832af483c4e70d14715c5d3c0ef0fd6ce1f88514d1d727c1eb2eb1cfd20a4d1077a2b66783facaa233a63f59568370
7
+ data.tar.gz: 71caea3abc57dbc8e46bebbb95bd9b2618396151f09ec9b2c2f0fdeef06cbaa75ae608554452fb9970ee158da4a4ba6ea4d30e8f46851b43df56a9c730799deb
Binary file
data.tar.gz.sig CHANGED
Binary file
data/History.md CHANGED
@@ -1,6 +1,40 @@
1
1
  # Release History for hglib
2
2
 
3
3
  ---
4
+ ## v0.11.0 [2020-12-28] Michael Granger <ged@FaerieMUD.org>
5
+
6
+ Improvements:
7
+
8
+ - Update dependency for Ruby 3.
9
+
10
+
11
+ ## v0.10.1 [2020-04-02] Michael Granger <ged@FaerieMUD.org>
12
+
13
+ Bugfixes:
14
+
15
+ - Fix the Repo#tracked? predicate.
16
+
17
+
18
+ ## v0.10.0 [2020-04-02] Michael Granger <ged@FaerieMUD.org>
19
+
20
+ Improvements:
21
+
22
+ - Added file status predicates.
23
+
24
+
25
+ ## v0.9.0 [2020-03-04] Michael Granger <ged@FaerieMUD.org>
26
+
27
+ Improvements:
28
+
29
+ - Add Repo#remove, #rename, and #forget.
30
+
31
+
32
+ ## v0.8.1 [2020-02-19] Michael Granger <ged@FaerieMUD.org>
33
+
34
+ Improvements:
35
+
36
+ - Turn down logging on error responses from the server
37
+
4
38
 
5
39
  ## v0.8.0 [2020-01-21] Michael Granger <ged@FaerieMUD.org>
6
40
 
data/README.md CHANGED
@@ -24,7 +24,7 @@ that uses the [Command Server][cmdserver] for efficiency.
24
24
 
25
25
  require 'hglib'
26
26
 
27
- repo = Hglib.clone( 'https://https://hg.sr.ht/~ged/hglib' )
27
+ repo = Hglib.clone( 'https://hg.sr.ht/~ged/hglib' )
28
28
  # => #<Hglib::Repo:0x00007fae3880ec90 @path=#<Pathname:/Users/ged/temp/hglib>, @server=nil>
29
29
 
30
30
 
@@ -11,7 +11,7 @@ module Hglib
11
11
 
12
12
 
13
13
  # Package version
14
- VERSION = '0.8.0'
14
+ VERSION = '0.11.0'
15
15
 
16
16
  # Version control revision
17
17
  REVISION = %q$Revision$
@@ -102,6 +102,47 @@ class Hglib::Repo
102
102
  end
103
103
 
104
104
 
105
+ ### Schedule the given +files+ to be removed from the current branch.
106
+ def remove( *files, **options )
107
+ self.server.run( :remove, *files, **options )
108
+ return true
109
+ end
110
+ alias_method :rm, :remove
111
+
112
+
113
+ ### Rename files; equivalent of copy + remove
114
+ ###
115
+ ### Mark +dest+ as copies of +sources+; mark +sources+ (which can be a single
116
+ ### path or an Array of paths) for deletion. If +dest+ is a directory, copies
117
+ ### are put in that directory. If +dest+ is a file, there can only be one
118
+ ### +source+.
119
+ ###
120
+ ### By default, this command copies the contents of files as they exist in the
121
+ ### working directory. If invoked with the :after option, the operation is recorded,
122
+ ### but no copying is performed.
123
+ ###
124
+ ### This command takes effect at the next commit. To undo a rename before
125
+ ### that, see 'hg revert'.
126
+ def rename( sources, dest, **options )
127
+ files = Array( sources ) + [ dest ]
128
+ self.server.run( :rename, *files, **options )
129
+ return true
130
+ end
131
+ alias_method :move, :rename
132
+ alias_method :mv, :rename
133
+
134
+
135
+ ### Mark the specified +files+ so they will no longer be tracked after the next
136
+ ### commit.
137
+ ###
138
+ ### This only removes +files+ from the current branch, not from the entire
139
+ ### project history, and it does not delete them from the working directory.
140
+ def forget( *files, **options )
141
+ self.server.run( :forget, *files, **options )
142
+ return true
143
+ end
144
+
145
+
105
146
  ### Add all new files and remove all missing files from the repository.
106
147
  ###
107
148
  ### Unless +files+ are given, new files are ignored if they match any of the
@@ -259,6 +300,13 @@ class Hglib::Repo
259
300
  end
260
301
 
261
302
 
303
+ ### Returns +true+ if the given +filename+ is a file tracked by Mercurial.
304
+ def tracked?( filename )
305
+ status = self.status( filename ).first
306
+ return status&.tracked?
307
+ end
308
+
309
+
262
310
  ### Returns +true+ if all of the changesets in the specified +revset+ (or the
263
311
  ### current changeset if no +revset+ is given) are in the public phase.
264
312
  def public?( revset=nil )
@@ -62,6 +62,55 @@ class Hglib::Repo::StatusEntry
62
62
  end
63
63
 
64
64
 
65
+ ### Returns +true+ if the status is 'modified'.
66
+ def modified?
67
+ return self.status == 'M'
68
+ end
69
+
70
+
71
+ ### Returns +true+ if the status is 'added'.
72
+ def added?
73
+ return self.status == 'A'
74
+ end
75
+
76
+
77
+ ### Returns +true+ if the status is 'removed'.
78
+ def removed?
79
+ return self.status == 'R'
80
+ end
81
+
82
+
83
+ ### Returns +true+ if the status is 'clean'.
84
+ def clean?
85
+ return self.status == 'C'
86
+ end
87
+
88
+
89
+ ### Returns +true+ if the status is 'missing'.
90
+ def missing?
91
+ return self.status == '!'
92
+ end
93
+
94
+
95
+ ### Returns +true+ if the status is 'not tracked'.
96
+ def not_tracked?
97
+ return self.status == '?'
98
+ end
99
+ alias_method :untracked?, :not_tracked?
100
+
101
+
102
+ ### Returns +true+ if the status is anything other than 'not tracked'.
103
+ def tracked?
104
+ return !self.not_tracked?
105
+ end
106
+
107
+
108
+ ### Returns +true+ if the status is 'ignored'.
109
+ def ignored?
110
+ return self.status == 'I'
111
+ end
112
+
113
+
65
114
  ### Return a human-readable representation of the StatusEntry as a String.
66
115
  def inspect
67
116
  return "#<%p:#%x %s: %s%s>" % [
@@ -175,7 +175,7 @@ class Hglib::Server
175
175
  when 'r'
176
176
  done = true
177
177
  when 'e'
178
- self.log.error "Got command error: %p" % [ data ]
178
+ self.log.debug "Got command error: %p" % [ data ]
179
179
  errors << data
180
180
  when 'L'
181
181
  self.log.debug "Server requested line input (%d bytes)" % [ data ]
@@ -38,5 +38,53 @@ RSpec.describe Hglib::Repo::StatusEntry do
38
38
  expect( entry.status_description ).to eq( 'added' )
39
39
  end
40
40
 
41
+
42
+ it "knows if its file has been modified" do
43
+ entry = described_class.new( RAW_STATUS_ENTRY )
44
+ expect( entry ).to be_modified
45
+ end
46
+
47
+ # when 'A' then 'added'
48
+ # when 'R' then 'removed'
49
+ # when 'C' then 'clean'
50
+ # when '!' then 'missing'
51
+ # when '?' then 'not tracked'
52
+ # when 'I' then 'ignored'
53
+
54
+ it "knows if its file has been scheduled for removal" do
55
+ entry = described_class.new( RAW_STATUS_ENTRY.merge(status: 'R') )
56
+ expect( entry ).to be_removed
57
+ end
58
+
59
+
60
+ it "knows if its file is clean" do
61
+ entry = described_class.new( RAW_STATUS_ENTRY.merge(status: 'C') )
62
+ expect( entry ).to be_clean
63
+ end
64
+
65
+
66
+ it "knows if its file is missing" do
67
+ entry = described_class.new( RAW_STATUS_ENTRY.merge(status: '!') )
68
+ expect( entry ).to be_missing
69
+ end
70
+
71
+
72
+ it "knows if its file is untracked" do
73
+ entry = described_class.new( RAW_STATUS_ENTRY.merge(status: '?') )
74
+ expect( entry ).to be_untracked
75
+ end
76
+
77
+
78
+ it "knows if its file is tracked" do
79
+ entry = described_class.new( RAW_STATUS_ENTRY )
80
+ expect( entry ).to be_tracked
81
+ end
82
+
83
+
84
+ it "knows if its file is ignored" do
85
+ entry = described_class.new( RAW_STATUS_ENTRY.merge(status: 'I') )
86
+ expect( entry ).to be_ignored
87
+ end
88
+
41
89
  end
42
90
 
@@ -69,6 +69,18 @@ RSpec.describe Hglib::Repo do
69
69
  end
70
70
 
71
71
 
72
+ it "can ensure a file is tracked" do
73
+ repo = described_class.new( repo_dir )
74
+
75
+ expect( server ).to receive( :run_with_json_template ).
76
+ with( :status, 'lib/version.rb' ).
77
+ and_return([ {path: 'lib/version.rb', status: 'M'} ]).
78
+ at_least( :once )
79
+
80
+ expect( repo.tracked?('lib/version.rb') ).to be_truthy
81
+ end
82
+
83
+
72
84
  it "can fetch the identification of the repository's current revision" do
73
85
  repo = described_class.new( repo_dir )
74
86
 
@@ -204,6 +216,46 @@ RSpec.describe Hglib::Repo do
204
216
  end
205
217
 
206
218
 
219
+ it "can remove tracked files from the repository" do
220
+ repo = described_class.new( repo_dir )
221
+
222
+ expect( server ).to receive( :run ).with( :remove, "stripe.apikey" )
223
+
224
+ result = repo.rm( 'stripe.apikey' )
225
+ expect( result ).to be_truthy
226
+ end
227
+
228
+
229
+ it "can mark files so they will no longer be tracked after the next commit" do
230
+ repo = described_class.new( repo_dir )
231
+
232
+ expect( server ).to receive( :run ).with( :forget, "ChangeLog" )
233
+
234
+ result = repo.forget( 'ChangeLog' )
235
+ expect( result ).to be_truthy
236
+ end
237
+
238
+
239
+ it "can rename files in the repository" do
240
+ repo = described_class.new( repo_dir )
241
+
242
+ expect( server ).to receive( :run ).with( :rename, "README.rdoc", "README.md" )
243
+
244
+ result = repo.mv( 'README.rdoc', 'README.md' )
245
+ expect( result ).to be_truthy
246
+ end
247
+
248
+
249
+ it "can record all adds/moves/removes in a directory" do
250
+ repo = described_class.new( repo_dir )
251
+
252
+ expect( server ).to receive( :run ).with( :addremove, any_args )
253
+
254
+ result = repo.addremove
255
+ expect( result ).to be_truthy
256
+ end
257
+
258
+
207
259
  it "can return the current Mercurial configuration" do
208
260
  repo = described_class.new( repo_dir )
209
261
 
metadata CHANGED
@@ -1,18 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hglib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Granger
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdnZWQv
14
- REM9RmFlcmllTVVEL0RDPW9yZzAeFw0xOTEwMDkwMDM2NTdaFw0yMDEwMDgwMDM2
15
- NTdaMCIxIDAeBgNVBAMMF2dlZC9EQz1GYWVyaWVNVUQvREM9b3JnMIIBojANBgkq
13
+ MIID+DCCAmCgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdnZWQv
14
+ REM9RmFlcmllTVVEL0RDPW9yZzAeFw0yMDEyMjQyMDU1MjlaFw0yMTEyMjQyMDU1
15
+ MjlaMCIxIDAeBgNVBAMMF2dlZC9EQz1GYWVyaWVNVUQvREM9b3JnMIIBojANBgkq
16
16
  hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvyVhkRzvlEs0fe7145BYLfN6njX9ih5H
17
17
  L60U0p0euIurpv84op9CNKF9tx+1WKwyQvQP7qFGuZxkSUuWcP/sFhDXL1lWUuIl
18
18
  M4uHbGCRmOshDrF4dgnBeOvkHr1fIhPlJm5FO+Vew8tSQmlDsosxLUx+VB7DrVFO
@@ -21,20 +21,19 @@ cert_chain:
21
21
  vQ66lts4alKC69TE5cuKasWBm+16A4aEe3XdZBRNmtOu/g81gvwA7fkJHKllJuaI
22
22
  dXzdHqq+zbGZVSQ7pRYHYomD0IiDe1DbIouFnPWmagaBnGHwXkDT2bKKP+s2v21m
23
23
  ozilJg4aar2okb/RA6VS87o+d7g6LpDDMMQjH4G9OPnJENLdhu8KnPw/ivSVvQw7
24
- N2I4L/ZOIe2DIVuYH7aLHfjZDQv/mNgpAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
25
- VR0PBAQDAgSwMB0GA1UdDgQWBBRyjf55EbrHagiRLqt5YAd3yb8k4DAcBgNVHREE
26
- FTATgRFnZWRARmFlcmllTVVELm9yZzAcBgNVHRIEFTATgRFnZWRARmFlcmllTVVE
27
- Lm9yZzANBgkqhkiG9w0BAQsFAAOCAYEAFqsr6o0SvQRgjQVmhbQvExRnCMCoW1yb
28
- FJiN7A5RA2Iy2E61OG1Ul5nGmaDmx/PNB/6JIbIV3B9Uq8aTZx4uOjK7r8vMl1/t
29
- ZfY7r6HejJfXlcO2m6JDMbpdyEVv916LncBkzZRz6vnnNCx+31f15FKddxujpAFd
30
- qpn3JRQY+oj7ZkoccL/IUiDpxQWeS3oOoz9qr2kVTp8R50InZimt79FqCl/1m66W
31
- kdOuf+wM3DDx7Rt4IVNHrhGlyfMr7xjKW1Q3gll+pMN1DT6Ajx/t3JDSEg7BnnEW
32
- r7AciSO6J4ApUdqyG+coLFlGdtgFTgRHv7ihbQtDI7Z/LV7A4Spn1j2PK3j0Omri
33
- kSl1hPVigRytfgdVGiLXzvkkrkgj9EknCaj5UHbac7XvVBrljXj9hsnnqTANaKsg
34
- jBZSA+N+xUTgUWpXjjwsLZjzJkhWATJWq+krNXcqpwXo6HsjmdUxoFMt63RBb+sI
35
- XrxOxp8o0uOkU7FdLSGsyqJ2LzsR4obN
24
+ N2I4L/ZOIe2DIVuYH7aLHfjZDQv/mNgpAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYD
25
+ VR0PBAQDAgSwMB0GA1UdDgQWBBRyjf55EbrHagiRLqt5YAd3yb8k4DANBgkqhkiG
26
+ 9w0BAQsFAAOCAYEAMYegZanJi8zq7QKPT7wqXefX4C88I5JWeBHR3PvvWK0CwyMV
27
+ peyiu5I13w/lYX+HUZjE4qsSpJMJFXWl4WZCOo+AMprOcf0PxfuJpxCej5D4tavf
28
+ vRfhahSw7XJrcZih/3J+/UgoH7R05MJ+8LTcy3HGrB3a0vTafjm8OY7Xpa0LJDoN
29
+ JDqxK321VIHyTibbKeA1hWSE6ljlQDvFbTqiCj3Ulp1jTv3TOlvRl8fqcfhxUJI0
30
+ +5Q82jJODjEN+GaWs0V+NlrbU94cXwS2PH5dXogftB5YYA5Ex8A0ikZ73xns4Hdo
31
+ XxdLdd92F5ovxA23j/rKe/IDwqr6FpDkU3nPXH/Qp0TVGv9zZnVJc/Z6ChkuWj8z
32
+ pW7JAyyiiHZgKKDReDrA2LA7Zs3o/7KA6UtUH0FHf8LYhcK+pfHk6RtjRe65ffw+
33
+ MCh97sQ/Z/MOusb5+QddBmB+k8EicXyGNl4b5L4XpL7fIQu+Y96TB3JEJlShxFD9
34
+ k9FjI4d9EP54gS/4
36
35
  -----END CERTIFICATE-----
37
- date: 2020-01-21 00:00:00.000000000 Z
36
+ date: 2020-12-28 00:00:00.000000000 Z
38
37
  dependencies:
39
38
  - !ruby/object:Gem::Dependency
40
39
  name: loggability
@@ -106,9 +105,8 @@ dependencies:
106
105
  - - "~>"
107
106
  - !ruby/object:Gem::Version
108
107
  version: '0.4'
109
- description: |-
110
- This is a client library for the Mercurial distributed revision control tool
111
- that uses the {Command Server}[https://www.mercurial-scm.org/wiki/CommandServer] for efficiency.
108
+ description: This is a client library for the Mercurial distributed revision control
109
+ tool that uses the Command Server for efficiency.
112
110
  email:
113
111
  - ged@FaerieMUD.org
114
112
  executables: []
@@ -147,8 +145,13 @@ files:
147
145
  homepage: https://hg.sr.ht/~ged/hglib
148
146
  licenses:
149
147
  - BSD-3-Clause
150
- metadata: {}
151
- post_install_message:
148
+ metadata:
149
+ homepage_uri: https://hg.sr.ht/~ged/hglib
150
+ documentation_uri: http://deveiate.org/code/hglib
151
+ changelog_uri: http://deveiate.org/code/hglib/History_md.html
152
+ source_uri: https://hg.sr.ht/~ged/hglib
153
+ bug_tracker_uri: https://todo.sr.ht/~ged/hglib
154
+ post_install_message:
152
155
  rdoc_options: []
153
156
  require_paths:
154
157
  - lib
@@ -157,16 +160,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
157
160
  - - "~>"
158
161
  - !ruby/object:Gem::Version
159
162
  version: '2.5'
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '3.0'
160
166
  required_rubygems_version: !ruby/object:Gem::Requirement
161
167
  requirements:
162
168
  - - ">="
163
169
  - !ruby/object:Gem::Version
164
170
  version: '0'
165
171
  requirements: []
166
- rubygems_version: 3.1.2
167
- signing_key:
172
+ rubygems_version: 3.2.3
173
+ signing_key:
168
174
  specification_version: 4
169
175
  summary: This is a client library for the Mercurial distributed revision control tool
170
- that uses the {Command Server}[https://www.mercurial-scm.org/wiki/CommandServer]
171
- for efficiency.
176
+ that uses the Command Server for efficiency.
172
177
  test_files: []
metadata.gz.sig CHANGED
Binary file