extract-repo 0.0.12 → 0.0.13

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/extract_repo.rb +18 -6
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4f84b4fa63a5dddf61e6d52afe17a9c875a468fd2bd0b91019fffff133219c65
4
- data.tar.gz: f49854352455955e76c522221d3e9c9577f2186a75ee5143b989fe87e406150c
3
+ metadata.gz: bf525d3153a759cfa0582560060b37be8b551273a4fb125093a32d532f387d4b
4
+ data.tar.gz: b6e33042ed4152c1ca152dd2d74ebecd3e272c22cde971f2f2566f660b6783e7
5
5
  SHA512:
6
- metadata.gz: 210a960c88fe44a7a597771ac27fbfd7ba7ea68a0d9b6ad9972e35b4a3ffc0055d99c88ff96e817f4c6aaa2d17530b9e6b9f0a2543c8d4008b5d2362061f9808
7
- data.tar.gz: df7822a2442e563fb77cacf14514fd7d535daae879111b76df942960d40acd4e783ccef24fe787c8e972e93c4a1cac4d5fdaef19f918b0bac624e513cf80c072
6
+ metadata.gz: 263f94e63ae97a463544f3f88423f3721a76f70a49de3ccf48bdd6e21a53f0e7f7ede96a742eeb3ca6d1bf4dceee5b89ea8139ff121cf087d83fad884b47b31d
7
+ data.tar.gz: e460e830b312a465f4857a2c0437a0080d32e23445c5a3dc337b6b3a05de609d4a5919319b4790ebd27438627bbb35ddf12971a7d9c76ac5f4fcf7c3dfd3eceb
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [0.0.13] - 2025-05-08
2
+
3
+ - Prevent infinite loops when a file had been renamed and later named back to its original name
4
+
1
5
  ## [0.0.12] - 2025-05-07
2
6
 
3
7
  - Avoid loading pry/pry-byebug if not needed
data/lib/extract_repo.rb CHANGED
@@ -132,16 +132,14 @@ class ExtractRepo < Foobara::Command
132
132
  similarity = similarity.match(/^R0*(\d+)$/)[1].to_i
133
133
 
134
134
  if similarity >= 80
135
- renames[to_path] = from_path
135
+ renames[to_path] ||= []
136
+ renames[to_path] << from_path
136
137
  end
137
138
  end
138
139
  end
139
140
 
140
- loop do
141
- file_path = renames[file_path]
142
- break unless file_path
143
-
144
- file_paths << file_path
141
+ determine_historic_paths_for_file(file_path, renames).each do |path|
142
+ file_paths << path
145
143
  end
146
144
  end
147
145
  end
@@ -149,6 +147,20 @@ class ExtractRepo < Foobara::Command
149
147
  normalize_file_paths
150
148
  end
151
149
 
150
+ def determine_historic_paths_for_file(file_path, renames, seen = Set.new)
151
+ return [] if seen.include?(file_path)
152
+
153
+ seen << file_path
154
+
155
+ file_paths = renames[file_path]
156
+
157
+ return [] unless file_paths
158
+
159
+ file_paths + file_paths.map do |path|
160
+ determine_historic_paths_for_file(path, renames, seen)
161
+ end.flatten
162
+ end
163
+
152
164
  def normalize_file_paths
153
165
  file_paths.sort!
154
166
  file_paths.uniq!
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: extract-repo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-05-08 00:00:00.000000000 Z
10
+ date: 2025-05-09 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: foobara