Ci-Dave commited on
Commit
c59ceeb
·
1 Parent(s): 1da3e41

new addition

Browse files
.venv/Lib/site-packages/__pycache__/git_filter_repo.cpython-312.pyc ADDED
Binary file (244 kB). View file
 
.venv/Lib/site-packages/git_filter_repo-2.47.0.dist-info/COPYING ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ git-filter-repo itself and most the files in this repository (exceptions
2
+ noted below) are provided under the MIT license (see COPYING.mit).
3
+
4
+ The usage of the MIT license probably makes filter-repo compatible with
5
+ everything, but just in case, these files can also be used under whatever
6
+ open source license[1] that git.git or libgit2 use now or in the future
7
+ (currently GPL[2] and GPL-with-linking-exception[3]). Further, the
8
+ examples (in contrib/filter-repo-demos/ and t/t9391/) can also be used
9
+ under the same license that libgit2 provides their examples under (CC0,
10
+ currently[4]).
11
+
12
+ Exceptions:
13
+
14
+ - The test harness (t/test-lib.sh, t/test-lib-functions.sh) is a slightly
15
+ modified copy of git.git's test harness (the difference being that my
16
+ copy doesn't require a built version of 'git' to be present). These
17
+ are thus GPL2 (see COPYING.gpl), and are individually marked as such.
18
+
19
+
20
+ [1] ...as defined by the Open Source Initiative (https://opensource.org/)
21
+ [2] https://git.kernel.org/pub/scm/git/git.git/tree/COPYING
22
+ [3] https://github.com/libgit2/libgit2/blob/master/COPYING
23
+ [4] https://github.com/libgit2/libgit2/blob/master/examples/COPYING
.venv/Lib/site-packages/git_filter_repo-2.47.0.dist-info/COPYING.gpl ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+ Preamble
10
+
11
+ The licenses for most software are designed to take away your
12
+ freedom to share and change it. By contrast, the GNU General Public
13
+ License is intended to guarantee your freedom to share and change free
14
+ software--to make sure the software is free for all its users. This
15
+ General Public License applies to most of the Free Software
16
+ Foundation's software and to any other program whose authors commit to
17
+ using it. (Some other Free Software Foundation software is covered by
18
+ the GNU Lesser General Public License instead.) You can apply it to
19
+ your programs, too.
20
+
21
+ When we speak of free software, we are referring to freedom, not
22
+ price. Our General Public Licenses are designed to make sure that you
23
+ have the freedom to distribute copies of free software (and charge for
24
+ this service if you wish), that you receive source code or can get it
25
+ if you want it, that you can change the software or use pieces of it
26
+ in new free programs; and that you know you can do these things.
27
+
28
+ To protect your rights, we need to make restrictions that forbid
29
+ anyone to deny you these rights or to ask you to surrender the rights.
30
+ These restrictions translate to certain responsibilities for you if you
31
+ distribute copies of the software, or if you modify it.
32
+
33
+ For example, if you distribute copies of such a program, whether
34
+ gratis or for a fee, you must give the recipients all the rights that
35
+ you have. You must make sure that they, too, receive or can get the
36
+ source code. And you must show them these terms so they know their
37
+ rights.
38
+
39
+ We protect your rights with two steps: (1) copyright the software, and
40
+ (2) offer you this license which gives you legal permission to copy,
41
+ distribute and/or modify the software.
42
+
43
+ Also, for each author's protection and ours, we want to make certain
44
+ that everyone understands that there is no warranty for this free
45
+ software. If the software is modified by someone else and passed on, we
46
+ want its recipients to know that what they have is not the original, so
47
+ that any problems introduced by others will not reflect on the original
48
+ authors' reputations.
49
+
50
+ Finally, any free program is threatened constantly by software
51
+ patents. We wish to avoid the danger that redistributors of a free
52
+ program will individually obtain patent licenses, in effect making the
53
+ program proprietary. To prevent this, we have made it clear that any
54
+ patent must be licensed for everyone's free use or not licensed at all.
55
+
56
+ The precise terms and conditions for copying, distribution and
57
+ modification follow.
58
+
59
+ GNU GENERAL PUBLIC LICENSE
60
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
+
62
+ 0. This License applies to any program or other work which contains
63
+ a notice placed by the copyright holder saying it may be distributed
64
+ under the terms of this General Public License. The "Program", below,
65
+ refers to any such program or work, and a "work based on the Program"
66
+ means either the Program or any derivative work under copyright law:
67
+ that is to say, a work containing the Program or a portion of it,
68
+ either verbatim or with modifications and/or translated into another
69
+ language. (Hereinafter, translation is included without limitation in
70
+ the term "modification".) Each licensee is addressed as "you".
71
+
72
+ Activities other than copying, distribution and modification are not
73
+ covered by this License; they are outside its scope. The act of
74
+ running the Program is not restricted, and the output from the Program
75
+ is covered only if its contents constitute a work based on the
76
+ Program (independent of having been made by running the Program).
77
+ Whether that is true depends on what the Program does.
78
+
79
+ 1. You may copy and distribute verbatim copies of the Program's
80
+ source code as you receive it, in any medium, provided that you
81
+ conspicuously and appropriately publish on each copy an appropriate
82
+ copyright notice and disclaimer of warranty; keep intact all the
83
+ notices that refer to this License and to the absence of any warranty;
84
+ and give any other recipients of the Program a copy of this License
85
+ along with the Program.
86
+
87
+ You may charge a fee for the physical act of transferring a copy, and
88
+ you may at your option offer warranty protection in exchange for a fee.
89
+
90
+ 2. You may modify your copy or copies of the Program or any portion
91
+ of it, thus forming a work based on the Program, and copy and
92
+ distribute such modifications or work under the terms of Section 1
93
+ above, provided that you also meet all of these conditions:
94
+
95
+ a) You must cause the modified files to carry prominent notices
96
+ stating that you changed the files and the date of any change.
97
+
98
+ b) You must cause any work that you distribute or publish, that in
99
+ whole or in part contains or is derived from the Program or any
100
+ part thereof, to be licensed as a whole at no charge to all third
101
+ parties under the terms of this License.
102
+
103
+ c) If the modified program normally reads commands interactively
104
+ when run, you must cause it, when started running for such
105
+ interactive use in the most ordinary way, to print or display an
106
+ announcement including an appropriate copyright notice and a
107
+ notice that there is no warranty (or else, saying that you provide
108
+ a warranty) and that users may redistribute the program under
109
+ these conditions, and telling the user how to view a copy of this
110
+ License. (Exception: if the Program itself is interactive but
111
+ does not normally print such an announcement, your work based on
112
+ the Program is not required to print an announcement.)
113
+
114
+ These requirements apply to the modified work as a whole. If
115
+ identifiable sections of that work are not derived from the Program,
116
+ and can be reasonably considered independent and separate works in
117
+ themselves, then this License, and its terms, do not apply to those
118
+ sections when you distribute them as separate works. But when you
119
+ distribute the same sections as part of a whole which is a work based
120
+ on the Program, the distribution of the whole must be on the terms of
121
+ this License, whose permissions for other licensees extend to the
122
+ entire whole, and thus to each and every part regardless of who wrote it.
123
+
124
+ Thus, it is not the intent of this section to claim rights or contest
125
+ your rights to work written entirely by you; rather, the intent is to
126
+ exercise the right to control the distribution of derivative or
127
+ collective works based on the Program.
128
+
129
+ In addition, mere aggregation of another work not based on the Program
130
+ with the Program (or with a work based on the Program) on a volume of
131
+ a storage or distribution medium does not bring the other work under
132
+ the scope of this License.
133
+
134
+ 3. You may copy and distribute the Program (or a work based on it,
135
+ under Section 2) in object code or executable form under the terms of
136
+ Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+ a) Accompany it with the complete corresponding machine-readable
139
+ source code, which must be distributed under the terms of Sections
140
+ 1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+ b) Accompany it with a written offer, valid for at least three
143
+ years, to give any third party, for a charge no more than your
144
+ cost of physically performing source distribution, a complete
145
+ machine-readable copy of the corresponding source code, to be
146
+ distributed under the terms of Sections 1 and 2 above on a medium
147
+ customarily used for software interchange; or,
148
+
149
+ c) Accompany it with the information you received as to the offer
150
+ to distribute corresponding source code. (This alternative is
151
+ allowed only for noncommercial distribution and only if you
152
+ received the program in object code or executable form with such
153
+ an offer, in accord with Subsection b above.)
154
+
155
+ The source code for a work means the preferred form of the work for
156
+ making modifications to it. For an executable work, complete source
157
+ code means all the source code for all modules it contains, plus any
158
+ associated interface definition files, plus the scripts used to
159
+ control compilation and installation of the executable. However, as a
160
+ special exception, the source code distributed need not include
161
+ anything that is normally distributed (in either source or binary
162
+ form) with the major components (compiler, kernel, and so on) of the
163
+ operating system on which the executable runs, unless that component
164
+ itself accompanies the executable.
165
+
166
+ If distribution of executable or object code is made by offering
167
+ access to copy from a designated place, then offering equivalent
168
+ access to copy the source code from the same place counts as
169
+ distribution of the source code, even though third parties are not
170
+ compelled to copy the source along with the object code.
171
+
172
+ 4. You may not copy, modify, sublicense, or distribute the Program
173
+ except as expressly provided under this License. Any attempt
174
+ otherwise to copy, modify, sublicense or distribute the Program is
175
+ void, and will automatically terminate your rights under this License.
176
+ However, parties who have received copies, or rights, from you under
177
+ this License will not have their licenses terminated so long as such
178
+ parties remain in full compliance.
179
+
180
+ 5. You are not required to accept this License, since you have not
181
+ signed it. However, nothing else grants you permission to modify or
182
+ distribute the Program or its derivative works. These actions are
183
+ prohibited by law if you do not accept this License. Therefore, by
184
+ modifying or distributing the Program (or any work based on the
185
+ Program), you indicate your acceptance of this License to do so, and
186
+ all its terms and conditions for copying, distributing or modifying
187
+ the Program or works based on it.
188
+
189
+ 6. Each time you redistribute the Program (or any work based on the
190
+ Program), the recipient automatically receives a license from the
191
+ original licensor to copy, distribute or modify the Program subject to
192
+ these terms and conditions. You may not impose any further
193
+ restrictions on the recipients' exercise of the rights granted herein.
194
+ You are not responsible for enforcing compliance by third parties to
195
+ this License.
196
+
197
+ 7. If, as a consequence of a court judgment or allegation of patent
198
+ infringement or for any other reason (not limited to patent issues),
199
+ conditions are imposed on you (whether by court order, agreement or
200
+ otherwise) that contradict the conditions of this License, they do not
201
+ excuse you from the conditions of this License. If you cannot
202
+ distribute so as to satisfy simultaneously your obligations under this
203
+ License and any other pertinent obligations, then as a consequence you
204
+ may not distribute the Program at all. For example, if a patent
205
+ license would not permit royalty-free redistribution of the Program by
206
+ all those who receive copies directly or indirectly through you, then
207
+ the only way you could satisfy both it and this License would be to
208
+ refrain entirely from distribution of the Program.
209
+
210
+ If any portion of this section is held invalid or unenforceable under
211
+ any particular circumstance, the balance of the section is intended to
212
+ apply and the section as a whole is intended to apply in other
213
+ circumstances.
214
+
215
+ It is not the purpose of this section to induce you to infringe any
216
+ patents or other property right claims or to contest validity of any
217
+ such claims; this section has the sole purpose of protecting the
218
+ integrity of the free software distribution system, which is
219
+ implemented by public license practices. Many people have made
220
+ generous contributions to the wide range of software distributed
221
+ through that system in reliance on consistent application of that
222
+ system; it is up to the author/donor to decide if he or she is willing
223
+ to distribute software through any other system and a licensee cannot
224
+ impose that choice.
225
+
226
+ This section is intended to make thoroughly clear what is believed to
227
+ be a consequence of the rest of this License.
228
+
229
+ 8. If the distribution and/or use of the Program is restricted in
230
+ certain countries either by patents or by copyrighted interfaces, the
231
+ original copyright holder who places the Program under this License
232
+ may add an explicit geographical distribution limitation excluding
233
+ those countries, so that distribution is permitted only in or among
234
+ countries not thus excluded. In such case, this License incorporates
235
+ the limitation as if written in the body of this License.
236
+
237
+ 9. The Free Software Foundation may publish revised and/or new versions
238
+ of the General Public License from time to time. Such new versions will
239
+ be similar in spirit to the present version, but may differ in detail to
240
+ address new problems or concerns.
241
+
242
+ Each version is given a distinguishing version number. If the Program
243
+ specifies a version number of this License which applies to it and "any
244
+ later version", you have the option of following the terms and conditions
245
+ either of that version or of any later version published by the Free
246
+ Software Foundation. If the Program does not specify a version number of
247
+ this License, you may choose any version ever published by the Free Software
248
+ Foundation.
249
+
250
+ 10. If you wish to incorporate parts of the Program into other free
251
+ programs whose distribution conditions are different, write to the author
252
+ to ask for permission. For software which is copyrighted by the Free
253
+ Software Foundation, write to the Free Software Foundation; we sometimes
254
+ make exceptions for this. Our decision will be guided by the two goals
255
+ of preserving the free status of all derivatives of our free software and
256
+ of promoting the sharing and reuse of software generally.
257
+
258
+ NO WARRANTY
259
+
260
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+ REPAIR OR CORRECTION.
269
+
270
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+ POSSIBILITY OF SUCH DAMAGES.
279
+
280
+ END OF TERMS AND CONDITIONS
281
+
282
+ How to Apply These Terms to Your New Programs
283
+
284
+ If you develop a new program, and you want it to be of the greatest
285
+ possible use to the public, the best way to achieve this is to make it
286
+ free software which everyone can redistribute and change under these terms.
287
+
288
+ To do so, attach the following notices to the program. It is safest
289
+ to attach them to the start of each source file to most effectively
290
+ convey the exclusion of warranty; and each file should have at least
291
+ the "copyright" line and a pointer to where the full notice is found.
292
+
293
+ <one line to give the program's name and a brief idea of what it does.>
294
+ Copyright (C) <year> <name of author>
295
+
296
+ This program is free software; you can redistribute it and/or modify
297
+ it under the terms of the GNU General Public License as published by
298
+ the Free Software Foundation; either version 2 of the License, or
299
+ (at your option) any later version.
300
+
301
+ This program is distributed in the hope that it will be useful,
302
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
303
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304
+ GNU General Public License for more details.
305
+
306
+ You should have received a copy of the GNU General Public License along
307
+ with this program; if not, write to the Free Software Foundation, Inc.,
308
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309
+
310
+ Also add information on how to contact you by electronic and paper mail.
311
+
312
+ If the program is interactive, make it output a short notice like this
313
+ when it starts in an interactive mode:
314
+
315
+ Gnomovision version 69, Copyright (C) year name of author
316
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317
+ This is free software, and you are welcome to redistribute it
318
+ under certain conditions; type `show c' for details.
319
+
320
+ The hypothetical commands `show w' and `show c' should show the appropriate
321
+ parts of the General Public License. Of course, the commands you use may
322
+ be called something other than `show w' and `show c'; they could even be
323
+ mouse-clicks or menu items--whatever suits your program.
324
+
325
+ You should also get your employer (if you work as a programmer) or your
326
+ school, if any, to sign a "copyright disclaimer" for the program, if
327
+ necessary. Here is a sample; alter the names:
328
+
329
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
331
+
332
+ <signature of Ty Coon>, 1 April 1989
333
+ Ty Coon, President of Vice
334
+
335
+ This General Public License does not permit incorporating your program into
336
+ proprietary programs. If your program is a subroutine library, you may
337
+ consider it more useful to permit linking proprietary applications with the
338
+ library. If this is what you want to do, use the GNU Lesser General
339
+ Public License instead of this License.
.venv/Lib/site-packages/git_filter_repo-2.47.0.dist-info/COPYING.mit ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2009, 2018-2019
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
.venv/Lib/site-packages/git_filter_repo-2.47.0.dist-info/INSTALLER ADDED
@@ -0,0 +1 @@
 
 
1
+ pip
.venv/Lib/site-packages/git_filter_repo-2.47.0.dist-info/METADATA ADDED
@@ -0,0 +1,607 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: git-filter-repo
3
+ Version: 2.47.0
4
+ Summary: Quickly rewrite git repository history
5
+ Author-email: Elijah Newren <[email protected]>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/newren/git-filter-repo
8
+ Project-URL: Issues, https://github.com/newren/git-filter-repo/issues/
9
+ Project-URL: Source, https://github.com/newren/git-filter-repo
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3.6
15
+ Classifier: Programming Language :: Python :: 3.7
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: Implementation :: CPython
23
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
24
+ Requires-Python: >=3.6
25
+ Description-Content-Type: text/markdown
26
+ License-File: COPYING
27
+ License-File: COPYING.gpl
28
+ License-File: COPYING.mit
29
+
30
+ git filter-repo is a versatile tool for rewriting history, which includes
31
+ [capabilities I have not found anywhere
32
+ else](#design-rationale-behind-filter-repo). It roughly falls into the
33
+ same space of tool as [git
34
+ filter-branch](https://git-scm.com/docs/git-filter-branch) but without the
35
+ capitulation-inducing poor
36
+ [performance](https://public-inbox.org/git/CABPp-BGOz8nks0+Tdw5GyGqxeYR-3FF6FT5JcgVqZDYVRQ6qog@mail.gmail.com/),
37
+ with far more capabilities, and with a design that scales usability-wise
38
+ beyond trivial rewriting cases. [git filter-repo is now recommended by the
39
+ git project](https://git-scm.com/docs/git-filter-branch#_warning) instead
40
+ of git filter-branch.
41
+
42
+ While most users will probably just use filter-repo as a simple command
43
+ line tool (and likely only use a few of its flags), at its core filter-repo
44
+ contains a library for creating history rewriting tools. As such, users
45
+ with specialized needs can leverage it to quickly create [entirely new
46
+ history rewriting tools](contrib/filter-repo-demos).
47
+
48
+ # Table of Contents
49
+
50
+ * [Prerequisites](#prerequisites)
51
+ * [How do I install it?](#how-do-i-install-it)
52
+ * [How do I use it?](#how-do-i-use-it)
53
+ * [Why filter-repo instead of other alternatives?](#why-filter-repo-instead-of-other-alternatives)
54
+ * [filter-branch](#filter-branch)
55
+ * [BFG Repo Cleaner](#bfg-repo-cleaner)
56
+ * [Simple example, with comparisons](#simple-example-with-comparisons)
57
+ * [Solving this with filter-repo](#solving-this-with-filter-repo)
58
+ * [Solving this with BFG Repo Cleaner](#solving-this-with-bfg-repo-cleaner)
59
+ * [Solving this with filter-branch](#solving-this-with-filter-branch)
60
+ * [Solving this with fast-export/fast-import](#solving-this-with-fast-exportfast-import)
61
+ * [Design rationale behind filter-repo](#design-rationale-behind-filter-repo)
62
+ * [How do I contribute?](#how-do-i-contribute)
63
+ * [Is there a Code of Conduct?](#is-there-a-code-of-conduct)
64
+ * [Upstream Improvements](#upstream-improvements)
65
+
66
+ # Prerequisites
67
+
68
+ filter-repo requires:
69
+
70
+ * git >= 2.22.0 at a minimum; [some features](#upstream-improvements)
71
+ require git >= 2.24.0 or later
72
+ * python3 >= 3.6
73
+
74
+ # How do I install it?
75
+
76
+ While the `git-filter-repo` repository has many files, the main logic
77
+ is all contained in a single-file python script named
78
+ `git-filter-repo`, which was done to make installation for basic use
79
+ on many systems trivial: just place that one file into your $PATH.
80
+
81
+ See [INSTALL.md](INSTALL.md) for things beyond basic usage or special
82
+ cases. The more involved instructions are only needed if one of the
83
+ following apply:
84
+
85
+ * you do not find the above comment about trivial installation intuitively
86
+ obvious
87
+ * you are working with a python3 executable named something other than
88
+ "python3"
89
+ * you want to install documentation (beyond the builtin docs shown with -h)
90
+ * you want to run some of the [contrib](contrib/filter-repo-demos/) examples
91
+ * you want to create your own python filtering scripts using filter-repo as
92
+ a module/library
93
+
94
+ # How do I use it?
95
+
96
+ For comprehensive documentation:
97
+ * see the [user manual](https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html)
98
+ * alternative formating of the user manual is available on various
99
+ external sites
100
+ ([example](https://www.mankier.com/1/git-filter-repo)), for those
101
+ that don't like the htmlpreview.github.io layout, though it may
102
+ only be up-to-date as of the latest release
103
+
104
+ If you prefer learning from examples:
105
+ * there is a [cheat sheet for converting filter-branch
106
+ commands](Documentation/converting-from-filter-branch.md#cheat-sheet-conversion-of-examples-from-the-filter-branch-manpage),
107
+ which covers every example from the filter-branch manual
108
+ * there is a [cheat sheet for converting BFG Repo Cleaner
109
+ commands](Documentation/converting-from-bfg-repo-cleaner.md#cheat-sheet-conversion-of-examples-from-bfg),
110
+ which covers every example from the BFG website
111
+ * the [simple example](#simple-example-with-comparisons) below may
112
+ be of interest
113
+ * the user manual has an extensive [examples
114
+ section](https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html#EXAMPLES)
115
+ * I have collected a set of [example filterings based on user-filed issues](Documentation/examples-from-user-filed-issues.md)
116
+
117
+ In either case, you may also find the [Frequently Answered Questions](Documentation/FAQ.md) useful.
118
+
119
+ # Why filter-repo instead of other alternatives?
120
+
121
+ This was covered in more detail in a [Git Rev News article on
122
+ filter-repo](https://git.github.io/rev_news/2019/08/21/edition-54/#an-introduction-to-git-filter-repo--written-by-elijah-newren),
123
+ but some highlights for the main competitors:
124
+
125
+ ## filter-branch
126
+
127
+ * filter-branch is [extremely to unusably
128
+ slow](https://public-inbox.org/git/CABPp-BGOz8nks0+Tdw5GyGqxeYR-3FF6FT5JcgVqZDYVRQ6qog@mail.gmail.com/)
129
+ ([multiple orders of magnitude slower than it should
130
+ be](https://git-scm.com/docs/git-filter-branch#PERFORMANCE))
131
+ for non-trivial repositories.
132
+
133
+ * [filter-branch is riddled with
134
+ gotchas](https://git-scm.com/docs/git-filter-branch#SAFETY) that can
135
+ silently corrupt your rewrite or at least thwart your "cleanup"
136
+ efforts by giving you something more problematic and messy than what
137
+ you started with.
138
+
139
+ * filter-branch is [very onerous](#simple-example-with-comparisons)
140
+ [to
141
+ use](https://github.com/newren/git-filter-repo/blob/a6a6a1b0f62d365bbe2e76f823e1621857ec4dbd/contrib/filter-repo-demos/filter-lamely#L9-L61)
142
+ for any rewrite which is even slightly non-trivial.
143
+
144
+ * the git project has stated that the above issues with filter-branch
145
+ cannot be backward compatibly fixed; they recommend that you [stop
146
+ using
147
+ filter-branch](https://git-scm.com/docs/git-filter-branch#_warning)
148
+
149
+ * die-hard fans of filter-branch may be interested in
150
+ [filter-lamely](contrib/filter-repo-demos/filter-lamely)
151
+ (a.k.a. [filter-branch-ish](contrib/filter-repo-demos/filter-branch-ish)),
152
+ a reimplementation of filter-branch based on filter-repo which is
153
+ more performant (though not nearly as fast or safe as
154
+ filter-repo).
155
+
156
+ * a [cheat
157
+ sheet](Documentation/converting-from-filter-branch.md#cheat-sheet-conversion-of-examples-from-the-filter-branch-manpage)
158
+ is available showing how to convert example commands from the manual of
159
+ filter-branch into filter-repo commands.
160
+
161
+ ## BFG Repo Cleaner
162
+
163
+ * great tool for its time, but while it makes some things simple, it
164
+ is limited to a few kinds of rewrites.
165
+
166
+ * its architecture is not amenable to handling more types of
167
+ rewrites.
168
+
169
+ * its architecture presents some shortcomings and bugs even for its
170
+ intended usecase.
171
+
172
+ * fans of bfg may be interested in
173
+ [bfg-ish](contrib/filter-repo-demos/bfg-ish), a reimplementation of bfg
174
+ based on filter-repo which includes several new features and bugfixes
175
+ relative to bfg.
176
+
177
+ * a [cheat
178
+ sheet](Documentation/converting-from-bfg-repo-cleaner.md#cheat-sheet-conversion-of-examples-from-bfg)
179
+ is available showing how to convert example commands from the manual of
180
+ BFG Repo Cleaner into filter-repo commands.
181
+
182
+ # Simple example, with comparisons
183
+
184
+ Let's say that we want to extract a piece of a repository, with the intent
185
+ on merging just that piece into some other bigger repo. For extraction, we
186
+ want to:
187
+
188
+ * extract the history of a single directory, src/. This means that only
189
+ paths under src/ remain in the repo, and any commits that only touched
190
+ paths outside this directory will be removed.
191
+ * rename all files to have a new leading directory, my-module/ (e.g. so that
192
+ src/foo.c becomes my-module/src/foo.c)
193
+ * rename any tags in the extracted repository to have a 'my-module-'
194
+ prefix (to avoid any conflicts when we later merge this repo into
195
+ something else)
196
+
197
+ ## Solving this with filter-repo
198
+
199
+ Doing this with filter-repo is as simple as the following command:
200
+ ```shell
201
+ git filter-repo --path src/ --to-subdirectory-filter my-module --tag-rename '':'my-module-'
202
+ ```
203
+ (the single quotes are unnecessary, but make it clearer to a human that we
204
+ are replacing the empty string as a prefix with `my-module-`)
205
+
206
+ ## Solving this with BFG Repo Cleaner
207
+
208
+ BFG Repo Cleaner is not capable of this kind of rewrite; in fact, all
209
+ three types of wanted changes are outside of its capabilities.
210
+
211
+ ## Solving this with filter-branch
212
+
213
+ filter-branch comes with a pile of caveats (more on that below) even
214
+ once you figure out the necessary invocation(s):
215
+
216
+ ```shell
217
+ git filter-branch \
218
+ --tree-filter 'mkdir -p my-module && \
219
+ git ls-files \
220
+ | grep -v ^src/ \
221
+ | xargs git rm -f -q && \
222
+ ls -d * \
223
+ | grep -v my-module \
224
+ | xargs -I files mv files my-module/' \
225
+ --tag-name-filter 'echo "my-module-$(cat)"' \
226
+ --prune-empty -- --all
227
+ git clone file://$(pwd) newcopy
228
+ cd newcopy
229
+ git for-each-ref --format="delete %(refname)" refs/tags/ \
230
+ | grep -v refs/tags/my-module- \
231
+ | git update-ref --stdin
232
+ git gc --prune=now
233
+ ```
234
+
235
+ Some might notice that the above filter-branch invocation will be really
236
+ slow due to using --tree-filter; you could alternatively use the
237
+ --index-filter option of filter-branch, changing the above commands to:
238
+
239
+ ```shell
240
+ git filter-branch \
241
+ --index-filter 'git ls-files \
242
+ | grep -v ^src/ \
243
+ | xargs git rm -q --cached;
244
+ git ls-files -s \
245
+ | sed "s%$(printf \\t)%&my-module/%" \
246
+ | git update-index --index-info;
247
+ git ls-files \
248
+ | grep -v ^my-module/ \
249
+ | xargs git rm -q --cached' \
250
+ --tag-name-filter 'echo "my-module-$(cat)"' \
251
+ --prune-empty -- --all
252
+ git clone file://$(pwd) newcopy
253
+ cd newcopy
254
+ git for-each-ref --format="delete %(refname)" refs/tags/ \
255
+ | grep -v refs/tags/my-module- \
256
+ | git update-ref --stdin
257
+ git gc --prune=now
258
+ ```
259
+
260
+ However, for either filter-branch command there are a pile of caveats.
261
+ First, some may be wondering why I list five commands here for
262
+ filter-branch. Despite the use of --all and --tag-name-filter, and
263
+ filter-branch's manpage claiming that a clone is enough to get rid of
264
+ old objects, the extra steps to delete the other tags and do another
265
+ gc are still required to clean out the old objects and avoid mixing
266
+ new and old history before pushing somewhere. Other caveats:
267
+ * Commit messages are not rewritten; so if some of your commit
268
+ messages refer to prior commits by (abbreviated) sha1, after the
269
+ rewrite those messages will now refer to commits that are no longer
270
+ part of the history. It would be better to rewrite those
271
+ (abbreviated) sha1 references to refer to the new commit ids.
272
+ * The --prune-empty flag sometimes misses commits that should be
273
+ pruned, and it will also prune commits that *started* empty rather
274
+ than just ended empty due to filtering. For repositories that
275
+ intentionally use empty commits for versioning and publishing
276
+ related purposes, this can be detrimental.
277
+ * The commands above are OS-specific. GNU vs. BSD issues for sed,
278
+ xargs, and other commands often trip up users; I think I failed to
279
+ get most folks to use --index-filter since the only example in the
280
+ filter-branch manpage that both uses it and shows how to move
281
+ everything into a subdirectory is linux-specific, and it is not
282
+ obvious to the reader that it has a portability issue since it
283
+ silently misbehaves rather than failing loudly.
284
+ * The --index-filter version of the filter-branch command may be two to
285
+ three times faster than the --tree-filter version, but both
286
+ filter-branch commands are going to be multiple orders of magnitude
287
+ slower than filter-repo.
288
+ * Both commands assume all filenames are composed entirely of ascii
289
+ characters (even special ascii characters such as tabs or double
290
+ quotes will wreak havoc and likely result in missing files or
291
+ misnamed files)
292
+
293
+ ## Solving this with fast-export/fast-import
294
+
295
+ One can kind of hack this together with something like:
296
+
297
+ ```shell
298
+ git fast-export --no-data --reencode=yes --mark-tags --fake-missing-tagger \
299
+ --signed-tags=strip --tag-of-filtered-object=rewrite --all \
300
+ | grep -vP '^M [0-9]+ [0-9a-f]+ (?!src/)' \
301
+ | grep -vP '^D (?!src/)' \
302
+ | perl -pe 's%^(M [0-9]+ [0-9a-f]+ )(.*)$%\1my-module/\2%' \
303
+ | perl -pe 's%^(D )(.*)$%\1my-module/\2%' \
304
+ | perl -pe s%refs/tags/%refs/tags/my-module-% \
305
+ | git -c core.ignorecase=false fast-import --date-format=raw-permissive \
306
+ --force --quiet
307
+ git for-each-ref --format="delete %(refname)" refs/tags/ \
308
+ | grep -v refs/tags/my-module- \
309
+ | git update-ref --stdin
310
+ git reset --hard
311
+ git reflog expire --expire=now --all
312
+ git gc --prune=now
313
+ ```
314
+
315
+ But this comes with some nasty caveats and limitations:
316
+ * The various greps and regex replacements operate on the entire
317
+ fast-export stream and thus might accidentally corrupt unintended
318
+ portions of it, such as commit messages. If you needed to edit
319
+ file contents and thus dropped the --no-data flag, it could also
320
+ end up corrupting file contents.
321
+ * This command assumes all filenames in the repository are composed
322
+ entirely of ascii characters, and also exclude special characters
323
+ such as tabs or double quotes. If such a special filename exists
324
+ within the old src/ directory, it will be pruned even though it
325
+ was intended to be kept. (In slightly different repository
326
+ rewrites, this type of editing also risks corrupting filenames
327
+ with special characters by adding extra double quotes near the end
328
+ of the filename and in some leading directory name.)
329
+ * This command will leave behind huge numbers of useless empty
330
+ commits, and has no realistic way of pruning them. (And if you
331
+ tried to combine this technique with another tool to prune the
332
+ empty commits, then you now have no way to distinguish between
333
+ commits which were made empty by the filtering that you want to
334
+ remove, and commits which were empty before the filtering process
335
+ and which you thus may want to keep.)
336
+ * Commit messages which reference other commits by hash will now
337
+ reference old commits that no longer exist. Attempting to edit
338
+ the commit messages to update them is extraordinarily difficult to
339
+ add to this kind of direct rewrite.
340
+
341
+ # Design rationale behind filter-repo
342
+
343
+ None of the existing repository filtering tools did what I wanted;
344
+ they all came up short for my needs. No tool provided any of the
345
+ first eight traits below I wanted, and no tool provided more than
346
+ two of the last four traits either:
347
+
348
+ 1. [Starting report] Provide user an analysis of their repo to help
349
+ them get started on what to prune or rename, instead of expecting
350
+ them to guess or find other tools to figure it out. (Triggered, e.g.
351
+ by running the first time with a special flag, such as --analyze.)
352
+
353
+ 1. [Keep vs. remove] Instead of just providing a way for users to
354
+ easily remove selected paths, also provide flags for users to
355
+ only *keep* certain paths. Sure, users could workaround this by
356
+ specifying to remove all paths other than the ones they want to
357
+ keep, but the need to specify all paths that *ever* existed in
358
+ **any** version of the repository could sometimes be quite
359
+ painful. For filter-branch, using pipelines like `git ls-files |
360
+ grep -v ... | xargs -r git rm` might be a reasonable workaround
361
+ but can get unwieldy and isn't as straightforward for users; plus
362
+ those commands are often operating-system specific (can you spot
363
+ the GNUism in the snippet I provided?).
364
+
365
+ 1. [Renaming] It should be easy to rename paths. For example, in
366
+ addition to allowing one to treat some subdirectory as the root
367
+ of the repository, also provide options for users to make the
368
+ root of the repository just become a subdirectory. And more
369
+ generally allow files and directories to be easily renamed.
370
+ Provide sanity checks if renaming causes multiple files to exist
371
+ at the same path. (And add special handling so that if a commit
372
+ merely copied oldname->newname without modification, then
373
+ filtering oldname->newname doesn't trigger the sanity check and
374
+ die on that commit.)
375
+
376
+ 1. [More intelligent safety] Writing copies of the original refs to
377
+ a special namespace within the repo does not provide a
378
+ user-friendly recovery mechanism. Many would struggle to recover
379
+ using that. Almost everyone I've ever seen do a repository
380
+ filtering operation has done so with a fresh clone, because
381
+ wiping out the clone in case of error is a vastly easier recovery
382
+ mechanism. Strongly encourage that workflow by [detecting and
383
+ bailing if we're not in a fresh
384
+ clone](https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html#FRESHCLONE),
385
+ unless the user overrides with --force.
386
+
387
+ 1. [Auto shrink] Automatically remove old cruft and repack the
388
+ repository for the user after filtering (unless overridden); this
389
+ simplifies things for the user, helps avoid mixing old and new
390
+ history together, and avoids problems where the multi-step
391
+ process for shrinking the repo documented in the manpage doesn't
392
+ actually work in some cases. (I'm looking at you,
393
+ filter-branch.)
394
+
395
+ 1. [Clean separation] Avoid confusing users (and prevent accidental
396
+ re-pushing of old stuff) due to mixing old repo and rewritten
397
+ repo together. (This is particularly a problem with filter-branch
398
+ when using the --tag-name-filter option, and sometimes also an
399
+ issue when only filtering a subset of branches.)
400
+
401
+ 1. [Versatility] Provide the user the ability to extend the tool or
402
+ even write new tools that leverage existing capabilities, and
403
+ provide this extensibility in a way that (a) avoids the need to
404
+ fork separate processes (which would destroy performance), (b)
405
+ avoids making the user specify OS-dependent shell commands (which
406
+ would prevent users from sharing commands with each other), (c)
407
+ takes advantage of rich data structures (because hashes, dicts,
408
+ lists, and arrays are prohibitively difficult in shell) and (d)
409
+ provides reasonable string manipulation capabilities (which are
410
+ sorely lacking in shell).
411
+
412
+ 1. [Old commit references] Provide a way for users to use old commit
413
+ IDs with the new repository (in particular via mapping from old to
414
+ new hashes with refs/replace/ references).
415
+
416
+ 1. [Commit message consistency] If commit messages refer to other
417
+ commits by ID (e.g. "this reverts commit 01234567890abcdef", "In
418
+ commit 0013deadbeef9a..."), those commit messages should be
419
+ rewritten to refer to the new commit IDs.
420
+
421
+ 1. [Become-empty pruning] Commits which become empty due to filtering
422
+ should be pruned. If the parent of a commit is pruned, the first
423
+ non-pruned ancestor needs to become the new parent. If no
424
+ non-pruned ancestor exists and the commit was not a merge, then it
425
+ becomes a new root commit. If no non-pruned ancestor exists and
426
+ the commit was a merge, then the merge will have one less parent
427
+ (and thus make it likely to become a non-merge commit which would
428
+ itself be pruned if it had no file changes of its own). One
429
+ special thing to note here is that we prune commits which become
430
+ empty, NOT commits which start empty. Some projects intentionally
431
+ create empty commits for versioning or publishing reasons, and
432
+ these should not be removed. (As a special case, commits which
433
+ started empty but whose parent was pruned away will also be
434
+ considered to have "become empty".)
435
+
436
+ 1. [Become-degenerate pruning] Pruning of commits which become empty
437
+ can potentially cause topology changes, and there are lots of
438
+ special cases. Normally, merge commits are not removed since they
439
+ are needed to preserve the graph topology, but the pruning of
440
+ parents and other ancestors can ultimately result in the loss of
441
+ one or more parents. A simple case was already noted above: if a
442
+ merge commit loses enough parents to become a non-merge commit and
443
+ it has no file changes, then it too can be pruned. Merge commits
444
+ can also have a topology that becomes degenerate: it could end up
445
+ with the merge_base serving as both parents (if all intervening
446
+ commits from the original repo were pruned), or it could end up
447
+ with one parent which is an ancestor of its other parent. In such
448
+ cases, if the merge has no file changes of its own, then the merge
449
+ commit can also be pruned. However, much as we do with empty
450
+ pruning we do not prune merge commits that started degenerate
451
+ (which indicates it may have been intentional, such as with --no-ff
452
+ merges) but only merge commits that become degenerate and have no
453
+ file changes of their own.
454
+
455
+ 1. [Speed] Filtering should be reasonably fast
456
+
457
+ # How do I contribute?
458
+
459
+ See the [contributing guidelines](Documentation/Contributing.md).
460
+
461
+ # Is there a Code of Conduct?
462
+
463
+ Participants in the filter-repo community are expected to adhere to
464
+ the same standards as for the git project, so the [git Code of
465
+ Conduct](https://git.kernel.org/pub/scm/git/git.git/tree/CODE_OF_CONDUCT.md)
466
+ applies.
467
+
468
+ # Upstream Improvements
469
+
470
+ Work on filter-repo and [its
471
+ predecessor](https://public-inbox.org/git/[email protected]/)
472
+ has also driven numerous improvements to fast-export and fast-import
473
+ (and occasionally other commands) in core git, based on things
474
+ filter-repo needs to do its work:
475
+
476
+ * git-2.48.0 (to be released Jan 2025)
477
+ * [fast-import: disallow more path components](
478
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=da91a90c2f)
479
+ * [fast-import: disallow "." and ".." path components](
480
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=4a2790a257)
481
+ * [fast-import: avoid making replace refs point to themselves](
482
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=5e904f1a4a)
483
+ * git-2.28.0
484
+ * [fast-import: add new --date-format=raw-permissive format](
485
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=d42a2fb72f)
486
+ * git-2.24.0
487
+ * [fast-export: handle nested tags](
488
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=941790d7de)
489
+ * [t9350: add tests for tags of things other than a commit](
490
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=8d7d33c1ce)
491
+ * [fast-export: allow user to request tags be marked with --mark-tags](
492
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=a1638cfe12)
493
+ * [fast-export: add support for --import-marks-if-exists](
494
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=208d69246e)
495
+ * [fast-import: add support for new 'alias' command](
496
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=b8f50e5b60)
497
+ * [fast-import: allow tags to be identified by mark labels](
498
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=f73b2aba05)
499
+ * [fast-import: fix handling of deleted tags](
500
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=3164e6bd24)
501
+ * [fast-export: fix exporting a tag and nothing else](
502
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=af2abd870b)
503
+ * [git-fast-import.txt: clarify that multiple merge commits are allowed](
504
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=d1387d3895)
505
+ * git-2.23.0
506
+ * [t9350: fix encoding test to actually test reencoding](
507
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=32615ce762)
508
+ * [fast-import: support 'encoding' commit header](
509
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=3edfcc65fd)
510
+ * [fast-export: avoid stripping encoding header if we cannot reencode](
511
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=ccbfc96dc4)
512
+ * [fast-export: differentiate between explicitly UTF-8 and implicitly
513
+ UTF-8](
514
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=57a8be2cb0)
515
+ * [fast-export: do automatic reencoding of commit messages only if
516
+ requested](
517
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=e80001f8fd)
518
+ * git-2.22.0
519
+ * [log,diff-tree: add --combined-all-paths option](
520
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=d76ce4f734)
521
+ * [t9300: demonstrate bug with get-mark and empty orphan commits](
522
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=62edbec7de)
523
+ * [git-fast-import.txt: fix wording about where ls command can appear](
524
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=a63c54a019)
525
+ * [fast-import: check most prominent commands first](
526
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=5056bb7646)
527
+ * [fast-import: only allow cat-blob requests where it makes sense](
528
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=7ffde293f2)
529
+ * [fast-import: fix erroneous handling of get-mark with empty orphan
530
+ commits](
531
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=cf7b857a77)
532
+ * [Honor core.precomposeUnicode in more places](
533
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=8e712ef6fc)
534
+ * git-2.21.0
535
+ * [fast-export: convert sha1 to oid](
536
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=843b9e6d48)
537
+ * [git-fast-import.txt: fix documentation for --quiet option](
538
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=f55c979b14)
539
+ * [git-fast-export.txt: clarify misleading documentation about rev-list
540
+ args](
541
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=4532be7cba)
542
+ * [fast-export: use value from correct enum](
543
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=b93b81e799)
544
+ * [fast-export: avoid dying when filtering by paths and old tags exist](
545
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=1f30c904b3)
546
+ * [fast-export: move commit rewriting logic into a function for reuse](
547
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=f129c4275c)
548
+ * [fast-export: when using paths, avoid corrupt stream with non-existent
549
+ mark](
550
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=cd13762d8f)
551
+ * [fast-export: ensure we export requested refs](
552
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=fdf31b6369)
553
+ * [fast-export: add --reference-excluded-parents option](
554
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=530ca19c02)
555
+ * [fast-import: remove unmaintained duplicate documentation](
556
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=25dd3e4889)
557
+ * [fast-export: add a --show-original-ids option to show
558
+ original names](
559
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=a965bb3116)
560
+ * [git-show-ref.txt: fix order of flags](
561
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=bd8d6f0def)
562
+ * git-2.20.0
563
+ * [update-ref: fix type of update_flags variable to
564
+ match its usage](
565
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=e4c34855a2)
566
+ * [update-ref: allow --no-deref with --stdin](
567
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=d345e9fbe7)
568
+ * git-1.7.3
569
+ * [fast-export: Fix dropping of files with --import-marks and path
570
+ limiting](
571
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=4087a02e45)
572
+ * [fast-export: Add a --full-tree option](
573
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=7f40ab0916)
574
+ * [fast-export: Fix output order of D/F changes](
575
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=060df62422)
576
+ * [fast-import: Improve robustness when D->F changes provided in wrong
577
+ order](
578
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=253fb5f889)
579
+ * git-1.6.4:
580
+ * [fast-export: Set revs.topo_order before calling setup_revisions](
581
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=668f3aa776)
582
+ * [fast-export: Omit tags that tag trees](
583
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=02c48cd69b)
584
+ * [fast-export: Make sure we show actual ref names instead of "(null)"](
585
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=2374502c6c)
586
+ * [fast-export: Do parent rewriting to avoid dropping relevant commits](
587
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=32164131db)
588
+ * [fast-export: Add a --tag-of-filtered-object option for newly
589
+ dangling tags](
590
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=2d8ad46919)
591
+ * [Add new fast-export testcases](
592
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=25e0ca5dd6)
593
+ * [fast-export: Document the fact that git-rev-list arguments are
594
+ accepted](
595
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=8af15d282e)
596
+ * git-1.6.3:
597
+ * [git-filter-branch: avoid collisions with variables in eval'ed
598
+ commands](
599
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=d5b0c97d13)
600
+ * [Correct missing SP characters in grammar comment at top of
601
+ fast-import.c](
602
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=98e1a4186a)
603
+ * [fast-export: Avoid dropping files from commits](
604
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=ebeec7dbc5)
605
+ * git-1.6.1.4:
606
+ * [fast-export: ensure we traverse commits in topological order](
607
+ https://git.kernel.org/pub/scm/git/git.git/commit/?id=784f8affe4)
.venv/Lib/site-packages/git_filter_repo-2.47.0.dist-info/RECORD ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ../../Scripts/git-filter-repo.exe,sha256=Zhf2lAEdidPg1hjAz_Ejn8GhtY5zpa3ilnjx-c2ObQ4,108406
2
+ __pycache__/git_filter_repo.cpython-312.pyc,,
3
+ git_filter_repo-2.47.0.dist-info/COPYING,sha256=ZEeii_kaYaMWrMwlvI_NuMumZ7sibKtXEQfoEQ6i1BE,1159
4
+ git_filter_repo-2.47.0.dist-info/COPYING.gpl,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
5
+ git_filter_repo-2.47.0.dist-info/COPYING.mit,sha256=tzen05dpcjnBcX_Qb8c8I8MKce9gI2e16yQXu7G8Ci4,1054
6
+ git_filter_repo-2.47.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
7
+ git_filter_repo-2.47.0.dist-info/METADATA,sha256=gEdjLGg856P6DpBbvXrO9Mf-9OxHfDNEd2XCSOsnVEY,31010
8
+ git_filter_repo-2.47.0.dist-info/RECORD,,
9
+ git_filter_repo-2.47.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ git_filter_repo-2.47.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
11
+ git_filter_repo-2.47.0.dist-info/entry_points.txt,sha256=BzaGaI1mp80VRtaSxXvI1tsJjxmVC5Wb9800OUNqRA4,57
12
+ git_filter_repo-2.47.0.dist-info/top_level.txt,sha256=dr26pp94RCYQjpxw8uezW8EK1EP33r_Ed8EWPtxjKeM,16
13
+ git_filter_repo.py,sha256=Z0R0E-Jz_HaAkokRF0iHC29gcvCLF-_pSGOpLYELfZQ,210911
.venv/Lib/site-packages/git_filter_repo-2.47.0.dist-info/REQUESTED ADDED
File without changes
.venv/Lib/site-packages/git_filter_repo-2.47.0.dist-info/WHEEL ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (75.6.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
.venv/Lib/site-packages/git_filter_repo-2.47.0.dist-info/entry_points.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ [console_scripts]
2
+ git-filter-repo = git_filter_repo:main
.venv/Lib/site-packages/git_filter_repo-2.47.0.dist-info/top_level.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ git_filter_repo
.venv/Lib/site-packages/git_filter_repo.py ADDED
The diff for this file is too large to render. See raw diff
 
.venv/Scripts/git-filter-repo.exe ADDED
Binary file (108 kB). View file
 
.venv/Scripts/python.exe ADDED
Binary file (271 kB). View file