2 # Copyright (C) 2019-2020 Jan BOON <jan.boon@kaetemi.be>
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions are met:
8 # * Redistributions of source code must retain the above copyright notice, this
9 # list of conditions and the following disclaimer.
11 # * Redistributions in binary form must reproduce the above copyright notice,
12 # this list of conditions and the following disclaimer in the documentation
13 # and/or other materials provided with the distribution.
15 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 # This script specifies by whom and when source files were modified
28 # from their original, in order to comply with the AGPLv3 requirements.
30 # It will output a mapping of unidentified contributors, for matching
31 # names more appropriately. If you are being paid by Winch Gate, map
32 # your name to "winch_gate".
34 # There's also a mapping of commits to ignore, they do not count towards
35 # contribution, as well as a mapping of commits for which to override
38 # set PATH=C:\Python38;%PATH%
39 # python -m pip install --upgrade pip
40 # python -m pip install gitpython
44 from datetime
import datetime
45 from pathlib
import Path
50 # Mapping for author short name to full display name
52 authors
["winch_gate"] = "Winch Gate Property Limited"
53 authors
["nevrax"] = "Nevrax Ltd."
54 authors
["sfb"] = "Matt RAYKOWSKI (sfb) <matt.raykowski@gmail.com>" # OpenNeL
55 authors
["ace"] = "Vianney LECROART (ace) <vl@ryzom.com>" # Nevrax, Winch Gate
56 authors
["rti"] = "Robert TIMM (rti) <mail@rtti.de>" # OpenNeL
57 authors
["botanic"] = "Matthew LAGOE (Botanic) <cyberempires@gmail.com>" # OpenNeL
58 authors
["rtsan"] = "Henri KUUSTE <al-rtsan@totl.net>" # OpenNeL
59 authors
["kaetemi"] = "Jan BOON (Kaetemi) <jan.boon@kaetemi.be>"
60 authors
["kervala"] = "Cédric OCHS (kervala) <kervala@gmail.com>"
61 authors
["glorf"] = "Guillaume DUPUY (glorf) <glorf@glorf.fr>"
62 authors
["ulukyn"] = "Nuno GONCALVES (Ulukyn) <ulukyn@ryzom.com>"
63 authors
["nimetu"] = "Meelis MAGI (Nimetu) <nimetu@gmail.com>"
64 authors
["dfighter"] = "Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>" # GSoC
65 authors
["dnk-88"] = "Dzmitry KAMIAHIN (dnk-88) <dnk-88@tut.by>" # GSoC
66 authors
["fhenon"] = "Fabien HENON" # GSoC
67 authors
["adrianj"] = "Adrian JAEKEL <aj@elane2k.com>" # GSoC
68 authors
["cemycc"] = "Emanuel COSTEA <cemycc@gmail.com>" # GSoC
69 authors
["inky"] = "Inky <jnk@mailoo.org>"
70 authors
["riasan"] = "Riasan <riasan@ryzom.com>"
71 authors
["karu"] = "karu"
72 authors
["kishan"] = "Kishan GRIMOUT <kishan.grimout@gmail.com>"
73 authors
["vinicius"] = "Vinicius ARROYO"
74 authors
["llapp"] = "llapp"
75 authors
["depyraken"] = "depyraken"
76 authors
["gary"] = "Gary PRESTON"
77 authors
["tobiasp"] = "Tobias PETERS <tobias.peters@kreativeffekt.at>"
78 authors
["rodolpheb"] = "Rodolphe BREARD <code@breard.tf>"
79 authors
["geelsd"] = "Dylan GEELS <geelsd@live.nl>"
80 authors
["shubham"] = "Shubham MEENA <shubham.iit17@gmail.com>"
81 authors
["liria"] = "liria <liria@gmx.fr>"
82 authors
["etrange"] = "StudioEtrange <nomorgan@gmail.com>"
83 authors
["sircotare"] = "SirCotare"
84 authors
["rolandw"] = "Roland WINKLMEIER <roland.m.winklmeier@gmail.com>"
85 authors
["thibg"] = "Thibaut GIRKA (ThibG) <thib@sitedethib.com>" # LibVR support
86 authors
["xtarsia"] = "Xtarsia"
88 # Mapping from git author name to short name, dash to ignore author
90 short_authors
["sfb"] = "sfb"
91 short_authors
["Matt Raykowski <matt.raykowski@gmail.com>"] = "sfb"
92 short_authors
["mattraykowski"] = "sfb"
93 short_authors
["\"Matt Raykowski\" <matt.raykowski@gmail.com>"] = "sfb"
94 short_authors
["vl"] = "ace"
95 short_authors
["acemtp@acemtp-desktop <acemtp@acemtp-desktop>"] = "ace"
96 short_authors
["acemtp@users.sourceforge.net <acemtp@users.sourceforge.net>"] = "ace"
97 short_authors
["botanicvelious <cyberempires@gmail.com>"] = "botanic"
98 short_authors
["botanic"] = "botanic"
99 short_authors
["Matthew Lagoe <matthew.lagoe@subrigo.net>"] = "botanic"
100 short_authors
["Botanic"] = "botanic"
101 short_authors
["Matthew Lagoe@MatthewLagoe-PC <Matthew Lagoe@MatthewLagoe-PC>"] = "botanic"
102 short_authors
["Botanic <admin@tempestintheaether.org>"] = "botanic"
103 short_authors
["kaetemi <kaetemi@gmail.com>"] = "kaetemi"
104 short_authors
["Jan Boon <jan.boon@kaetemi.be>"] = "kaetemi"
105 short_authors
["Jan Boon <kaetemi@no-break.space>"] = "kaetemi"
106 short_authors
["Jan Boon <kaetemi@gmail.com>"] = "kaetemi"
107 short_authors
["Jan BOON (jan.boon@kaetemi.be)"] = "kaetemi"
108 short_authors
["kaetemi"] = "kaetemi"
109 short_authors
["kaetemi@users.sourceforge.net <kaetemi@users.sourceforge.net>"] = "kaetemi"
110 short_authors
["kaetemi@kaevm.localdomain <kaetemi@kaevm.localdomain>"] = "kaetemi"
111 short_authors
["Jan Boon (Kaetemi)"] = "kaetemi"
112 short_authors
["NO-BREAK SPACE OÜ <support@no-break.space>"] = "-" # bot
113 short_authors
["Ryzom Pipeline <ryzom-pipeline@kaetemi.be>"] = "-" # bot
114 short_authors
["Nimetu <nimetu@gmail.com>"] = "nimetu"
115 short_authors
["nimetu@gmail.com <nimetu@gmail.com>"] = "nimetu"
116 short_authors
["Meelis Mägi <nimetu@gmail.com>"] = "nimetu"
117 short_authors
["nimetu <nimetu@gmail.com>"] = "nimetu"
118 short_authors
["nimetu"] = "nimetu"
119 short_authors
["kervala"] = "kervala"
120 short_authors
["Cédric OCHS <kervala@gmail.com>"] = "kervala"
121 short_authors
["Nuno Gonçalves <ulukyn@gmail.com>"] = "ulukyn"
122 short_authors
["ulukyn"] = "ulukyn"
123 short_authors
["Ulukyn <ulukyn@gmail.com>"] = "ulukyn"
124 short_authors
["ulukyn@gmail.com <ulukyn@gmail.com>"] = "ulukyn"
125 short_authors
["Ulu Kyn <ulukyn@gmail.com>"] = "ulukyn"
126 short_authors
["Inky <jnk@mailoo.org>"] = "inky"
127 short_authors
["inky <jnk@mailoo.org>"] = "inky"
128 short_authors
["Riasan <riasan@ryzom.com>"] = "riasan"
129 short_authors
["Guillaume Dupuy <glorf@glorf.fr>"] = "glorf"
130 short_authors
["karu"] = "karu"
131 short_authors
["kishan_grimout"] = "kishan"
132 short_authors
["KISHAN GRIMOUT <kishan.grimout@gmail.com>"] = "kishan"
133 short_authors
["Vinicius Arroyo <vinicius.arroyo@gmail.com>"] = "vinicius"
134 short_authors
["Llapp"] = "llapp"
135 short_authors
["depyraken"] = "depyraken"
136 short_authors
["Gary Preston <gary@mups.co.uk>"] = "gary"
137 short_authors
["Tobias Peters <tobias.peters@kreativeffekt.at>"] = "tobiasp"
138 short_authors
["dfighter1985"] = "dfighter"
139 short_authors
["dfighter1985 <dfighter1985@gmail.com>"] = "dfighter"
140 short_authors
["Laszlo Kis-Adam <dfighter1985@gmail.com>"] = "dfighter"
141 short_authors
["Laszlo Kis-Adam"] = "dfighter"
142 short_authors
["dfighter1985 <dfighter1985.arcemu@gmail.com>"] = "dfighter"
143 short_authors
["dfighter <dfighter1985.arcemu@gmail.com>"] = "dfighter"
144 short_authors
["timon <dnk-88@tut.by>"] = "dnk-88"
145 short_authors
["dnk-88"] = "dnk-88"
146 short_authors
["Dzmitry Kamiahin <dnk-88@tut.by>"] = "dnk-88"
147 short_authors
["Dzmitry Kamiahin <dzmitry.kamiahin@gmail.com>"] = "dnk-88"
148 short_authors
["Fabien_HENON"] = "fhenon"
149 short_authors
["Rodolphe Breard <rodolphe@what.tf>"] = "rodolpheb"
150 short_authors
["Rodolphe Breard <code@breard.tf>"] = "rodolpheb"
151 short_authors
["Dylan Geels <geelsd@live.nl>"] = "geelsd"
152 short_authors
["shubham_meena <shubham.iit17@gmail.com>"] = "shubham"
153 short_authors
["shubham_meena"] = "shubham"
154 short_authors
["liria <liria@gmx.fr>"] = "liria"
155 short_authors
["liria"] = "liria"
156 short_authors
["StudioEtrange <nomorgan@gmail.com>"] = "etrange"
157 short_authors
["rti <mail@rtti.de>"] = "rti"
158 short_authors
["rti"] = "rti"
159 short_authors
["SirCotare"] = "sircotare"
160 short_authors
["SirCotare@Medivh <SirCotare@Medivh>"] = "sircotare"
161 short_authors
["Roland Winklmeier <roland.m.winklmeier@googlemail.com>"] = "rolandw"
162 short_authors
["Adrian Jaekel <aj at elane2k dot com>"] = "adrianj"
163 short_authors
["Emanuel Costea <cemycc@gmail.com>"] = "cemycc"
164 short_authors
["cemycc <cemycc@gmail.com>"] = "cemycc"
165 short_authors
["cemycc"] = "cemycc"
166 short_authors
["Thibaut Girka <thib@sitedethib.com>"] = "thibg"
167 short_authors
["Thibaut Girka (ThibG)"] = "thibg"
168 short_authors
["Xtarsia <69606701+Xtarsia@users.noreply.github.com>"] = "xtarsia"
169 short_authors
["Xtarsia"] = "xtarsia"
170 # short_authors["\"picomancer ext:(%22) <pico-bitbucketpub-4mcdxm39-onlyham@picomancer.com>"] = "-"
171 # short_authors["Quitta"] = "-"
172 # short_authors["Krolock"] = "-"
173 # short_authors["aquiles"] = "-"
174 # short_authors["Piotr Kaczmarek <kaczorek@gmail.com>"] = "-"
175 # short_authors["kerozcak"] = "-"
176 # short_authors["thorbjorn"] = "-"
177 # short_authors["DJanssens <daan.codes@gmail.com>"] = "-"
178 # short_authors["Michael Witrant <mike@lepton.fr>"] = "-"
180 generic_authors
= [ ]
181 generic_authors
+= [ "Ryzom Core <http://ryzom.dev/>" ]
182 generic_authors
+= [ "by authors" ]
184 # Reverse mapping for parsing original annotation
185 for short_author
in authors
:
186 short_authors
[authors
[short_author
]] = short_author
188 # Mapping to override author of a git commit, dash to ignore commit
190 # - no authorship or various authors
191 # / initial commit, we don't have history of 2008-2010 Ryzom SVN and older 2008 OpenNeL SVN
192 # ? copyright not identified
193 override_author
= { }
194 override_author
["af454dd1cf9306afe0f074ea2b348a0629112a9e"] = "*" # Fix EOL issues on Mercurial repository
195 override_author
["e7e51f01e080bfacd87331d16e3e124ba90a04ac"] = "dfighter" # Merge GUI Editor branch
196 override_author
["d5c601ffa5690b89f121561bac165b83f39a896f"] = "/" # Initial commit.
197 override_author
["adb4963102e226ff8121caa45a802b7d31c25a81"] = "dnk-88" # Merge OVQT
198 override_author
["02e8f6e95629ca88820a01e4f62f336b61001214"] = "-" # EOL
199 override_author
["6b3b85962a898c718a16882574abbc167c087816"] = "-" # EOL
200 override_author
["29b38937a58ffd06ba64829a49f060ff7c9a2d0a"] = "-" # Header
201 override_author
["61eefa97c2ffbca94e123d766f518ce006fa3ed4"] = "-" # Header
202 override_author
["a9250a74f1140c08655d31cbe185a5e543e1e942"] = "-" # Header
203 override_author
["dd1043eaaec28399aa0013ddf5b5d7e0c32b1ce1"] = "-" # Header
204 override_author
["ff4a521b07a4983140d82f27fc2f0468a507d095"] = "-" # Header
205 override_author
["43452ea27c6e92488d8bd1417b2aee60d75d8a68"] = "-" # Header
206 override_author
["8e21fed1e6b79bf92f6364c7cb4f0c56e1dda103"] = "-" # Header cleanup
207 override_author
["c8e562f37781d62ebc54b68ef74f7693de79a907"] = "-" # Header cleanup
208 override_author
["dc734ed66226b257becae9fcd140898e14510e6a"] = "-" # Header cleanup
209 override_author
["a3a074f455a3f52e6fa4d44214f6c34289fa6f8c"] = "-" # Sync
210 override_author
["141e7c645966ee3475097a75a65def8c9bd7086a"] = "-" # Sync
211 override_author
["e6a617b8bcd1630dba5fc3b6ae9815775ba2c19d"] = "-" # Sync
215 exclude_paths
["nel/3rdparty"] = True
216 exclude_paths
["nel/src/3d/driver/opengl/GL"] = True
217 exclude_paths
["nel/src/3d/driver/opengl/EGL"] = True
218 exclude_paths
["nel/src/3d/driver/opengl/GLES"] = True
219 exclude_paths
["nel/src/3d/driver/opengl/KHR"] = True
220 exclude_paths
["studio/src/3rdparty"] = True
222 # Programmatical remappings
223 def remap_author(blob
, commit
, author
):
224 # Remap author to copyright owner
225 # You can map based on
227 # - commit.committed_date
228 if override_author
.get(commit
.hexsha
) != None:
229 return override_author
[commit
.hexsha
]
230 authored_date
= datetime
.utcfromtimestamp(commit
.authored_date
) # time.gmtime(commit.authored_date) # datetime.date(2002, 12, 26)
231 authored_timestamp
= commit
.authored_date
232 short_author
= short_authors
.get(author
)
233 if short_author
== None:
235 if "Update GPL headers" in commit
.message
:
236 # Ignore if commit message matches "Update GPL headers"
238 # If you're paid by Winch Gate, or signed copyright transfer with
239 # them, remap here, limit by authored_date if needed.
240 if short_author
== "ulukyn" or short_author
== "ace":
241 short_author
= "winch_gate"
242 if short_author
== "riasan":
243 short_author
= "winch_gate"
244 if short_author
== "sircotare" and authored_date
.year
>= 2012:
245 short_author
= "winch_gate"
246 if short_author
== "inky" and authored_date
.year
< 2020:
247 short_author
= "winch_gate"
248 if "feature-export-assimp" in commit
.message
and authored_date
.year
<= 2015:
249 # Project paid for by Winch Gate
250 short_author
= "winch_gate"
251 if short_author
== "nimetu" and authored_date
.year
>= 2009:
252 short_author
= "winch_gate"
253 if short_author
== "kervala":
254 # Don't know if they signed the copyright assignment agreement with Winch Gate or Ryzom Forge
256 if short_author
== "karu" or short_author
== "kishan" or short_author
== "glorf":
258 if short_author
== "llapp" or short_author
== "vinicius" or short_author
== "gary":
260 if short_author
== "depyraken" or short_author
== "tobiasp" or short_author
== "rodolpheb":
262 if short_author
== "geelsd" or short_author
== "shubham" or short_author
== "liria":
266 # Mapping for original author, which is not included in list of
267 # modification, but instead adjusts the original copyright date range.
268 # Author is based on first commit.
269 #def remap_original_author(blob, author):
270 # # Remap original file author to original copyright owner
272 # if blob.path.startswith("code/nel/3rdparty"):
274 # return "winch_gate"
276 def stringify_author(author
):
277 if author
.email
== "none@none" or author
.email
== "":
279 return author
.name
+ " <" + author
.email
+ ">"
281 def list_unknown_authors():
282 print("-- List unknown authors --")
284 for commit
in repo
.iter_commits():
285 author
= stringify_author(commit
.author
)
286 if short_authors
.get(author
) == None and listed_authors
.get(author
) == None:
287 listed_authors
[author
] = True
290 #def count_tree_size(tree):
291 # res = len(tree.blobs)
292 # for subtree in tree.trees:
293 # res = res + count_tree_size(subtree)
296 #def list_large_commits():
297 # print("-- List large commits --")
298 # for commit in repo.iter_commits():
299 # print(commit.hexsha + ": " + str(count_tree_size(commit.tree)))
302 #assert not repo.is_dirty()
304 # repo.untracked_files
305 # assert repo.head.ref == repo.heads.develop
309 print(str(repo
.index
))
311 tree
= repo
.head
.ref
.commit
.tree
312 assert repo
.tree() == repo
.head
.commit
.tree
313 assert repo
.tree() == tree
317 assert len(tree
.trees
) > 0
318 assert len(tree
.blobs
) > 0
319 assert len(tree
.blobs
) + len(tree
.trees
) == len(tree
)
321 # for entry in tree.trees:
322 # for entry2 in entry.trees:
327 historic_commit
= repo
.commit("e9692f5fea4afb02cf27d8a33c40587007bb13c5");
330 header_not_found
= { }
332 modified_blurb
= "This source file has been modified by the following contributors:"
333 #modified_blurb = "This file contains modifications from the following contributors:"
335 def make_copyright(oldest_year
, newest_year
, long_name
):
336 if newest_year
> oldest_year
:
337 return "Copyright (C) " + str(oldest_year
) + "-" + str(newest_year
) + " " + long_name
339 if newest_year
!= oldest_year
:
340 raise str(oldest_year
) + "-" + str(newest_year
)
341 return "Copyright (C) " + str(newest_year
) + " " + long_name
343 def rewrite_cpp(path
, copyright_oldest
, copyright_newest
, copyright_lines
):
344 # Read all notices until "// This program is free software"
345 # Everything before the first "// Copyright" remains intact
346 # Parse existing notices, merge with lists, track which one is first
347 # Write out new copyright and modification notices
348 contents
= Path("../../" + path
).read_text()
349 content_start
= contents
.find("// This program is free software")
350 if content_start
< 0:
351 header_not_found
[path
] = True
352 print("Could not find \"// This program is free software\"")
354 copyright_start
= contents
.find("// Copyright", 0, content_start
)
355 if copyright_start
< 0:
356 header_not_found
[path
] = True
357 print("Could not find \"// Copyright\"")
359 copyright_block
= contents
[copyright_start
:content_start
].splitlines()
360 first_copyright
= "?"
361 for statement
in copyright_block
:
362 if statement
.startswith("// Copyright"):
363 # Parse this statement
364 # // Copyright (C) 2010 Winch Gate Property Limited
365 # // Copyright (C) 2010-2019 Winch Gate Property Limited
366 # // Copyright (C) 2010 - 2019 Winch Gate Property Limited
367 # // Copyright (C) 2010 Winch Gate Property Limited
368 copyright_end
= statement
.find(")") + 1
369 if copyright_end
< 0:
370 copyright_end
= len("// Copyright")
371 year_start
= statement
.find("2", copyright_end
)
372 year_end
= statement
.find("-", year_start
, year_start
+ 7)
377 year_end
= statement
.find(" ", year_start
)
378 name_start
= year_end
380 endyear_start
= statement
.find("2", year_end
)
381 if endyear_start
>= 0:
382 endyear_end
= statement
.find(" ", endyear_start
)
383 name_start
= endyear_end
385 name_start
= year_end
386 oldestyear
= int(statement
[year_start
:year_end
].strip())
387 newestyear
= oldestyear
389 newestyear
= int(statement
[endyear_start
:endyear_end
].strip())
390 name_long
= statement
[name_start
:].strip()
392 if name_long
in generic_authors
:
394 for author
in copyright_lines
:
396 if copyright_lines
[author
] > highest_author
:
399 name_short
= short_authors
[name_long
]
400 if name_short
== "*":
401 header_not_found
[path
] = True
402 print("Copyright by authors failed to be specified")
405 #print(str(oldestyear))
406 #print(str(newestyear))
409 #if first_copyright == "?" or (path.startswith('code/studio') and first_copyright == 'winch_gate'):
410 if first_copyright
== "?":
411 first_copyright
= name_short
412 if copyright_oldest
.get(name_short
) == None or copyright_newest
.get(name_short
) == None:
413 copyright_oldest
[name_short
] = oldestyear
414 copyright_newest
[name_short
] = newestyear
416 if oldestyear
< copyright_oldest
[name_short
]:
417 copyright_oldest
[name_short
] = oldestyear
418 if newestyear
> copyright_newest
[name_short
]:
419 copyright_newest
[name_short
] = newestyear
420 new_statement
= "// " + make_copyright(copyright_oldest
[first_copyright
], copyright_newest
[first_copyright
], authors
[first_copyright
]) + "\n"
422 #for author in copyright_oldest:
423 # if author != first_copyright and len(author) > 1:
425 # new_statement += "//\n"
426 # new_statement += "// " + modified_blurb + "\n"
428 # new_statement += "// " + make_copyright(copyright_oldest[author], copyright_newest[author], authors[author]) + "\n"
429 modified_statements
= [ ]
430 for author
in copyright_oldest
:
431 if author
!= first_copyright
and len(author
) > 1:
432 modified_statements
+= [ "// " + make_copyright(copyright_oldest
[author
], copyright_newest
[author
], authors
[author
]) + "\n" ]
433 if len(modified_statements
) > 0:
434 modified_statements
.sort()
435 new_statement
+= "//\n"
436 new_statement
+= "// " + modified_blurb
+ "\n"
437 for notice
in modified_statements
:
438 new_statement
+= notice
;
439 new_statement
+= "//\n"
440 #print(copyright_block)
441 #print(new_statement)
442 new_contents
= contents
[0:copyright_start
] + new_statement
+ contents
[content_start
:]
443 if contents
!= new_contents
:
445 Path("../../" + path
).write_text(new_contents
)
447 def process_cpp(cpp_entry
):
448 print(cpp_entry
.path
)
449 blame
= repo
.blame(repo
.head
.ref
, cpp_entry
.path
)
455 # Count number of lines per author
459 if commit
.hexsha
== "af454dd1cf9306afe0f074ea2b348a0629112a9e":
460 # Special treatment since this commit breaks blame history before 2012
462 # Allow blame from old history if this line matches
463 retry_lines
[line
] = True
464 # Do not count this line
466 line_count
= len(lines
)
467 author
= remap_author(cpp_entry
, commit
, stringify_author(commit
.author
))
468 authored_date
= datetime
.utcfromtimestamp(commit
.authored_date
)
469 if author_lines
.get(author
) == None:
470 author_lines
[author
] = 0
471 author_oldest
[author
] = authored_date
.year
472 author_newest
[author
] = authored_date
.year
473 author_lines
[author
] += line_count
474 if authored_date
.year
< author_oldest
[author
]:
475 author_oldest
[author
] = authored_date
.year
476 if authored_date
.year
> author_newest
[author
]:
477 author_newest
[author
] = authored_date
.year
478 if commit_lines
.get(commit
.hexsha
) == None:
479 commit_lines
[commit
.hexsha
] = 0
480 if commit_counter
.get(commit
.hexsha
) == None:
481 commit_counter
[commit
.hexsha
] = 0
482 commit_counter
[commit
.hexsha
] += 1
483 commit_lines
[commit
.hexsha
] += line_count
484 # print(commit.hexsha)
486 if historic_paths
.get(cpp_entry
.path
) == True:
487 historic_blame
= repo
.blame(historic_commit
, cpp_entry
.path
)
488 for tuple in historic_blame
:
493 if retry_lines
.get(line
) == True:
497 # Exact copy of above from here on
498 author
= remap_author(cpp_entry
, commit
, stringify_author(commit
.author
))
499 authored_date
= datetime
.utcfromtimestamp(commit
.authored_date
)
500 if author_lines
.get(author
) == None:
501 author_lines
[author
] = 0
502 author_oldest
[author
] = authored_date
.year
503 author_newest
[author
] = authored_date
.year
504 author_lines
[author
] += line_count
505 if authored_date
.year
< author_oldest
[author
]:
506 author_oldest
[author
] = authored_date
.year
507 if authored_date
.year
> author_newest
[author
]:
508 author_newest
[author
] = authored_date
.year
509 if commit_lines
.get(commit
.hexsha
) == None:
510 commit_lines
[commit
.hexsha
] = 0
511 if commit_counter
.get(commit
.hexsha
) == None:
512 commit_counter
[commit
.hexsha
] = 0
513 commit_counter
[commit
.hexsha
] += 1
514 commit_lines
[commit
.hexsha
] += line_count
515 # also todo: keep oldest and newest year for each user
516 if len(author_lines
) > 1 or author_lines
.get('/') == None:
517 # Debug output for modified files
518 # print(str(author_lines))
519 # print(str(commit_lines))
520 for author
in author_lines
:
522 print(str(author_oldest
[author
]) + "-" + str(author_newest
[author
]) + " " + author
+ ": " + str(author_lines
[author
]))
523 rewrite_cpp(cpp_entry
.path
, author_oldest
, author_newest
, author_lines
)
525 def process_tree(tree_entry
):
526 for blob
in tree_entry
.blobs
:
527 # print("Blob: " + blob.path)
528 if exclude_paths
.get(blob
.path
) == True:
530 if blob
.path
.endswith(".cpp") or blob
.path
.endswith(".h") or blob
.path
.endswith(".c"):
532 for tree
in tree_entry
.trees
:
533 # print("Tree: " + tree.path)
534 if exclude_paths
.get(tree
.path
) == True:
538 def list_historic_tree(tree_entry
):
539 for blob
in tree_entry
.blobs
:
540 historic_paths
[blob
.path
] = True
541 for tree
in tree_entry
.trees
:
542 list_historic_tree(tree
)
546 #list_unknown_authors()
547 #list_large_commits()
549 print("-- Process files --")
550 list_historic_tree(historic_commit
.tree
)
553 # Lazily sorted large commits
554 print("-- List large commits --")
555 for commit
in commit_counter
:
556 count
= commit_counter
[commit
]
558 print(commit
+ ": " + str(count
))
559 for commit
in commit_counter
:
560 count
= commit_counter
[commit
]
561 if count
> 500 and count
< 1000:
562 print(commit
+ ": " + str(count
))
563 for commit
in commit_counter
:
564 count
= commit_counter
[commit
]
565 if count
> 100 and count
< 500:
566 print(commit
+ ": " + str(count
))
567 for commit
in commit_counter
:
568 count
= commit_counter
[commit
]
569 if count
> 50 and count
< 100:
570 print(commit
+ ": " + str(count
))
572 # -- List large commits --
573 # af454dd1cf9306afe0f074ea2b348a0629112a9e: 4001
574 # 613d4ddc34ae0a7a16ee6cfb42957c300d0c654e: 267 # Remove throw statements, OK
575 # e7e51f01e080bfacd87331d16e3e124ba90a04ac: 460 # Merging GUI editor repo, author change todo
576 # c73f0d944917d8d51860430591450f490ce2635a: 113 # Add max file library, OK
577 # f605c5faa55148302e7538b801b6fd6b5b646b8a: 152 # Replace clear, OK
578 # d5c601ffa5690b89f121561bac165b83f39a896f: 148 # Initial version, author change to winch_gate
579 # c3b3db07f160ac3b1cfd17f249851d139e952f7c: 273 # Memory leaks detection, OK
580 # b7e3e4b4f0d1b9b64909657d4edbc701bd823947: 121 # Memory leaks detection, OK
581 # 2fad59f296a07534a7664296a020285e63a538e1: 105 # Memory leaks detection, OK
582 # adb4963102e226ff8121caa45a802b7d31c25a81: 126 # OVQT, change author to dnk-88
583 # ffb5b2678bb1028fbc5a92c156bddfdda87f7ae6: 120 # Code cleanup, OK
584 # 45c8b20f3981eeec3484e53f32ccdc8a372c6063: 60
585 # 31a540b35d916b2eb5ed9ed66f0f43cb5cc30704: 94
586 # 4b1959a5600b9e05b7ff2a27d5e564d07efd117d: 57
587 # 449f0061f86f851e1806d61ed86d17815df7cbfa: 54
588 # ab454f3d92e03b2721db9c0d687a4d6eb90620c8: 79
589 # 58c8606d5ddc2b6e3b1e578ad9646a96bbce22a3: 64
590 # f1cdcd1654e9522e347001a0c1918f36b23b506a: 61
591 # 0fb9906929f248a09b4998d46b324bb71b390c68: 51
592 # f5dec3c1caf4ca7f26f4c8c44ecb8aef01461a62: 59
593 # db31312b11c946a97bd95137ab68ccfd55c3c244: 53
596 #print("-- Possible mismatching original author --")
598 print("-- Source files without header --")
599 for path
in header_not_found
:
601 #code/nel/include/nel/3d/fxaa.h
602 #code/nel/include/nel/3d/geometry_program.h
603 #code/nel/include/nel/3d/gpu_program_params.h
604 #code/nel/include/nel/3d/pixel_program.h
605 #code/nel/include/nel/3d/program.h
606 #code/nel/include/nel/3d/render_target_manager.h
607 #code/nel/include/nel/3d/stereo_debugger.h
608 #code/nel/include/nel/3d/stereo_display.h
609 #code/nel/include/nel/3d/stereo_hmd.h
610 #code/nel/include/nel/3d/stereo_libvr.h
611 #code/nel/include/nel/3d/stereo_ovr.h
612 #code/nel/include/nel/3d/stereo_ovr_04.h
613 #code/nel/include/nel/gui/string_case.h
614 #code/nel/include/nel/misc/callback.h
615 #code/nel/include/nel/misc/fast_id_map.h
616 #code/nel/include/nel/misc/wang_hash.h
617 #code/nel/include/nel/sound/audio_decoder.h
618 #code/nel/include/nel/sound/audio_decoder_vorbis.h
619 #code/nel/include/nel/sound/containers.h
620 #code/nel/include/nel/sound/group_controller.h
621 #code/nel/include/nel/sound/group_controller_root.h
622 #code/nel/include/nel/sound/source_music_channel.h
623 #code/nel/include/nel/sound/u_group_controller.h
624 #code/nel/include/nel/sound/decoder/dr_mp3.h
625 #code/nel/samples/3d/nel_qt/qtcolorpicker_cpp.h
626 #code/nel/samples/misc/callback/main.cpp
627 #code/nel/src/3d/fxaa.cpp
628 #code/nel/src/3d/fxaa_program.h
629 #code/nel/src/3d/geometry_program.cpp
630 #code/nel/src/3d/gpu_program_params.cpp
631 #code/nel/src/3d/pixel_program.cpp
632 #code/nel/src/3d/program.cpp
633 #code/nel/src/3d/render_target_manager.cpp
634 #code/nel/src/3d/stereo_debugger.cpp
635 #code/nel/src/3d/stereo_display.cpp
636 #code/nel/src/3d/stereo_hmd.cpp
637 #code/nel/src/3d/stereo_libvr.cpp
638 #code/nel/src/3d/stereo_ovr.cpp
639 #code/nel/src/3d/stereo_ovr_04.cpp
640 #code/nel/src/3d/stereo_ovr_04_program.h
641 #code/nel/src/3d/stereo_ovr_fp.cpp
642 #code/nel/src/3d/driver/direct3d/driver_direct3d_pixel_program.cpp
643 #code/nel/src/3d/driver/opengl/driver_opengl_pixel_program.cpp
644 #code/nel/src/3d/driver/opengl/EGL/egl.h
645 #code/nel/src/3d/driver/opengl/EGL/eglext.h
646 #code/nel/src/3d/driver/opengl/EGL/eglplatform.h
647 #code/nel/src/3d/driver/opengl/GLES/egl.h
648 #code/nel/src/3d/driver/opengl/GLES/gl.h
649 #code/nel/src/3d/driver/opengl/GLES/glext.h
650 #code/nel/src/3d/driver/opengl/GLES/glplatform.h
651 #code/nel/src/3d/driver/opengl/KHR/khrplatform.h
652 #code/nel/src/3d/shaders/fxaa3_11.h
653 #code/nel/src/ligo/primitive_utils.cpp
654 #code/nel/src/misc/config_file/cf_gramatical.cpp
655 #code/nel/src/misc/config_file/cf_lexical.cpp
656 #code/nel/src/sound/audio_decoder.cpp
657 #code/nel/src/sound/audio_decoder_vorbis.cpp
658 #code/nel/src/sound/group_controller.cpp
659 #code/nel/src/sound/group_controller_root.cpp
660 #code/nel/src/sound/source_music_channel.cpp
661 #code/nel/src/sound/stream_file_sound.cpp
662 #code/nel/src/sound/stream_file_source.cpp
663 #code/nel/tools/3d/ligo/plugin_max/ligoscape_utility.h
664 #code/nel/tools/3d/object_viewer_exe/resource.h
665 #code/nel/tools/3d/object_viewer_widget/src/entity.cpp
666 #code/nel/tools/3d/object_viewer_widget/src/entity.h
667 #code/nel/tools/3d/object_viewer_widget/src/interfaces.h
668 #code/nel/tools/3d/object_viewer_widget/src/object_viewer_widget.cpp
669 #code/nel/tools/3d/object_viewer_widget/src/object_viewer_widget.h
670 #code/nel/tools/3d/object_viewer_widget/src/stdpch.cpp
671 #code/nel/tools/3d/object_viewer_widget/src/stdpch.h
672 #code/nel/tools/3d/pipeline_max/class_data.cpp
673 #code/nel/tools/3d/pipeline_max/class_data.h
674 #code/nel/tools/3d/pipeline_max/class_directory_3.cpp
675 #code/nel/tools/3d/pipeline_max/class_directory_3.h
676 #code/nel/tools/3d/pipeline_max/config.cpp
677 #code/nel/tools/3d/pipeline_max/config.h
678 #code/nel/tools/3d/pipeline_max/derived_object.cpp
679 #code/nel/tools/3d/pipeline_max/derived_object.h
680 #code/nel/tools/3d/pipeline_max/dll_directory.cpp
681 #code/nel/tools/3d/pipeline_max/dll_directory.h
682 #code/nel/tools/3d/pipeline_max/dll_plugin_desc.cpp
683 #code/nel/tools/3d/pipeline_max/dll_plugin_desc.h
684 #code/nel/tools/3d/pipeline_max/scene.cpp
685 #code/nel/tools/3d/pipeline_max/scene.h
686 #code/nel/tools/3d/pipeline_max/scene_class.cpp
687 #code/nel/tools/3d/pipeline_max/scene_class.h
688 #code/nel/tools/3d/pipeline_max/scene_class_registry.cpp
689 #code/nel/tools/3d/pipeline_max/scene_class_registry.h
690 #code/nel/tools/3d/pipeline_max/scene_class_unknown.cpp
691 #code/nel/tools/3d/pipeline_max/scene_class_unknown.h
692 #code/nel/tools/3d/pipeline_max/storage_array.cpp
693 #code/nel/tools/3d/pipeline_max/storage_array.h
694 #code/nel/tools/3d/pipeline_max/storage_chunks.cpp
695 #code/nel/tools/3d/pipeline_max/storage_chunks.h
696 #code/nel/tools/3d/pipeline_max/storage_file.cpp
697 #code/nel/tools/3d/pipeline_max/storage_file.h
698 #code/nel/tools/3d/pipeline_max/storage_object.cpp
699 #code/nel/tools/3d/pipeline_max/storage_object.h
700 #code/nel/tools/3d/pipeline_max/storage_stream.cpp
701 #code/nel/tools/3d/pipeline_max/storage_stream.h
702 #code/nel/tools/3d/pipeline_max/storage_value.cpp
703 #code/nel/tools/3d/pipeline_max/storage_value.h
704 #code/nel/tools/3d/pipeline_max/super_class_desc.cpp
705 #code/nel/tools/3d/pipeline_max/super_class_desc.h
706 #code/nel/tools/3d/pipeline_max/typedefs.cpp
707 #code/nel/tools/3d/pipeline_max/typedefs.h
708 #code/nel/tools/3d/pipeline_max/wsm_derived_object.cpp
709 #code/nel/tools/3d/pipeline_max/wsm_derived_object.h
710 #code/nel/tools/3d/pipeline_max/builtin/animatable.cpp
711 #code/nel/tools/3d/pipeline_max/builtin/animatable.h
712 #code/nel/tools/3d/pipeline_max/builtin/base_object.cpp
713 #code/nel/tools/3d/pipeline_max/builtin/base_object.h
714 #code/nel/tools/3d/pipeline_max/builtin/bitmap_tex.cpp
715 #code/nel/tools/3d/pipeline_max/builtin/bitmap_tex.h
716 #code/nel/tools/3d/pipeline_max/builtin/builtin.cpp
717 #code/nel/tools/3d/pipeline_max/builtin/builtin.h
718 #code/nel/tools/3d/pipeline_max/builtin/editable_patch.cpp
719 #code/nel/tools/3d/pipeline_max/builtin/editable_patch.h
720 #code/nel/tools/3d/pipeline_max/builtin/geom_object.cpp
721 #code/nel/tools/3d/pipeline_max/builtin/geom_object.h
722 #code/nel/tools/3d/pipeline_max/builtin/i_node.cpp
723 #code/nel/tools/3d/pipeline_max/builtin/i_node.h
724 #code/nel/tools/3d/pipeline_max/builtin/modifier.cpp
725 #code/nel/tools/3d/pipeline_max/builtin/modifier.h
726 #code/nel/tools/3d/pipeline_max/builtin/mtl.cpp
727 #code/nel/tools/3d/pipeline_max/builtin/mtl.h
728 #code/nel/tools/3d/pipeline_max/builtin/mtl_base.cpp
729 #code/nel/tools/3d/pipeline_max/builtin/mtl_base.h
730 #code/nel/tools/3d/pipeline_max/builtin/multi_mtl.cpp
731 #code/nel/tools/3d/pipeline_max/builtin/multi_mtl.h
732 #code/nel/tools/3d/pipeline_max/builtin/node_impl.cpp
733 #code/nel/tools/3d/pipeline_max/builtin/node_impl.h
734 #code/nel/tools/3d/pipeline_max/builtin/object.cpp
735 #code/nel/tools/3d/pipeline_max/builtin/object.h
736 #code/nel/tools/3d/pipeline_max/builtin/param_block.cpp
737 #code/nel/tools/3d/pipeline_max/builtin/param_block.h
738 #code/nel/tools/3d/pipeline_max/builtin/param_block_2.cpp
739 #code/nel/tools/3d/pipeline_max/builtin/param_block_2.h
740 #code/nel/tools/3d/pipeline_max/builtin/patch_object.cpp
741 #code/nel/tools/3d/pipeline_max/builtin/patch_object.h
742 #code/nel/tools/3d/pipeline_max/builtin/poly_object.cpp
743 #code/nel/tools/3d/pipeline_max/builtin/poly_object.h
744 #code/nel/tools/3d/pipeline_max/builtin/reference_maker.cpp
745 #code/nel/tools/3d/pipeline_max/builtin/reference_maker.h
746 #code/nel/tools/3d/pipeline_max/builtin/reference_target.cpp
747 #code/nel/tools/3d/pipeline_max/builtin/reference_target.h
748 #code/nel/tools/3d/pipeline_max/builtin/root_node.cpp
749 #code/nel/tools/3d/pipeline_max/builtin/root_node.h
750 #code/nel/tools/3d/pipeline_max/builtin/scene_impl.cpp
751 #code/nel/tools/3d/pipeline_max/builtin/scene_impl.h
752 #code/nel/tools/3d/pipeline_max/builtin/std_mat.cpp
753 #code/nel/tools/3d/pipeline_max/builtin/std_mat.h
754 #code/nel/tools/3d/pipeline_max/builtin/std_mat_2.cpp
755 #code/nel/tools/3d/pipeline_max/builtin/std_mat_2.h
756 #code/nel/tools/3d/pipeline_max/builtin/super_class_unknown.cpp
757 #code/nel/tools/3d/pipeline_max/builtin/super_class_unknown.h
758 #code/nel/tools/3d/pipeline_max/builtin/texmap.cpp
759 #code/nel/tools/3d/pipeline_max/builtin/texmap.h
760 #code/nel/tools/3d/pipeline_max/builtin/track_view_node.cpp
761 #code/nel/tools/3d/pipeline_max/builtin/track_view_node.h
762 #code/nel/tools/3d/pipeline_max/builtin/tri_object.cpp
763 #code/nel/tools/3d/pipeline_max/builtin/tri_object.h
764 #code/nel/tools/3d/pipeline_max/builtin/storage/app_data.cpp
765 #code/nel/tools/3d/pipeline_max/builtin/storage/app_data.h
766 #code/nel/tools/3d/pipeline_max/builtin/storage/geom_buffers.cpp
767 #code/nel/tools/3d/pipeline_max/builtin/storage/geom_buffers.h
768 #code/nel/tools/3d/pipeline_max/epoly/editable_poly.cpp
769 #code/nel/tools/3d/pipeline_max/epoly/editable_poly.h
770 #code/nel/tools/3d/pipeline_max/epoly/epoly.cpp
771 #code/nel/tools/3d/pipeline_max/epoly/epoly.h
772 #code/nel/tools/3d/pipeline_max/update1/editable_mesh.cpp
773 #code/nel/tools/3d/pipeline_max/update1/editable_mesh.h
774 #code/nel/tools/3d/pipeline_max/update1/update1.cpp
775 #code/nel/tools/3d/pipeline_max/update1/update1.h
776 #code/nel/tools/3d/pipeline_max_dump/class_directory_3_2010.c
777 #code/nel/tools/3d/pipeline_max_dump/class_directory_3_3.c
778 #code/nel/tools/3d/pipeline_max_dump/config_2010.c
779 #code/nel/tools/3d/pipeline_max_dump/config_3.c
780 #code/nel/tools/3d/pipeline_max_dump/main.cpp
781 #code/nel/tools/3d/pipeline_max_dump/scene_2010.c
782 #code/nel/tools/3d/pipeline_max_rewrite_assets/main.cpp
783 #code/nel/tools/3d/plugin_max/nel_3dsmax_shared/resource.h
784 #code/nel/tools/3d/plugin_max/nel_export/nel_export_lightmap_v2.cpp
785 #code/nel/tools/3d/plugin_max/nel_export/resource.h
786 #code/nel/tools/3d/plugin_max/nel_patch_converter/nel_patch_converter.h
787 #code/nel/tools/3d/plugin_max/nel_patch_edit/editpat.h
788 #code/nel/tools/3d/plugin_max/nel_patch_edit/np.cpp
789 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_edit_patch_mod.cpp
790 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_editpops.cpp
791 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_add_patches.cpp
792 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_attach.cpp
793 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_bevel.cpp
794 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_del.cpp
795 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_detach.cpp
796 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_extrude.cpp
797 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_material.cpp
798 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_remember.cpp
799 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_selection.cpp
800 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_subdivide.cpp
801 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_surface.cpp
802 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_epm_tess.cpp
803 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_gui_bind.cpp
804 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_main.cpp
805 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_mods.cpp
806 #code/nel/tools/3d/plugin_max/nel_patch_edit/np_rollup.cpp
807 #code/nel/tools/3d/plugin_max/nel_patch_edit/stdafx.cpp
808 #code/nel/tools/3d/plugin_max/nel_patch_paint/DllEntry.cpp
809 #code/nel/tools/3d/plugin_max/nel_patch_paint/nel_patch_paint.h
810 #code/nel/tools/3d/plugin_max/nel_patch_paint/paint.cpp
811 #code/nel/tools/3d/plugin_max/nel_patch_paint/paint_main.cpp
812 #code/nel/tools/3d/plugin_max/nel_patch_paint/paint_pops.cpp
813 #code/nel/tools/3d/plugin_max/nel_patch_paint/paint_rollup.cpp
814 #code/nel/tools/3d/plugin_max/nel_patch_paint/paint_ui.cpp
815 #code/nel/tools/3d/plugin_max/nel_patch_paint/paint_ui.h
816 #code/nel/tools/3d/plugin_max/nel_patch_paint/paint_undo.cpp
817 #code/nel/tools/3d/plugin_max/nel_patch_paint/paint_vcolor.cpp
818 #code/nel/tools/3d/plugin_max/nel_patch_paint/paint_vcolor.h
819 #code/nel/tools/3d/plugin_max/nel_patch_paint/stdafx.cpp
820 #code/nel/tools/3d/plugin_max/nel_patch_paint/stdafx.h
821 #code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/Paint.cpp
822 #code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/dllmain.cpp
823 #code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/vertex_tree_paint.cpp
824 #code/nel/tools/3d/plugin_max/nel_vertex_tree_paint/vertex_tree_paint.h
825 #code/nel/tools/3d/shared_widgets/command_log.cpp
826 #code/nel/tools/3d/shared_widgets/command_log.h
827 #code/nel/tools/3d/shared_widgets/common.h
828 #code/nel/tools/3d/tga_resize/main.cpp
829 #code/nel/tools/3d/tile_edit_qt/items_edit_dlg.cpp
830 #code/nel/tools/3d/tile_edit_qt/main.cpp
831 #code/nel/tools/3d/tile_edit_qt/tile_widget.cpp
832 #code/nel/tools/3d/tile_edit_qt/tiles_model.h
833 #code/nel/tools/3d/unbuild_interface/unbuild_interface.cpp
834 #code/nel/tools/logic/logic_editor_dll/Condition.cpp
835 #code/nel/tools/logic/logic_editor_dll/ConditionPage.cpp
836 #code/nel/tools/logic/logic_editor_dll/ConditionsView.cpp
837 #code/nel/tools/logic/logic_editor_dll/Counter.cpp
838 #code/nel/tools/logic/logic_editor_dll/CounterPage.cpp
839 #code/nel/tools/logic/logic_editor_dll/EditorFormView.cpp
840 #code/nel/tools/logic/logic_editor_dll/MainFrm.cpp
841 #code/nel/tools/logic/logic_editor_dll/MainFrm.h
842 #code/nel/tools/logic/logic_editor_dll/ResizablePage.cpp
843 #code/nel/tools/logic/logic_editor_dll/State.cpp
844 #code/nel/tools/logic/logic_editor_dll/StatePage.cpp
845 #code/nel/tools/logic/logic_editor_dll/StatesView.cpp
846 #code/nel/tools/logic/logic_editor_dll/StdAfx.h
847 #code/nel/tools/logic/logic_editor_dll/VariablePage.cpp
848 #code/nel/tools/logic/logic_editor_dll/logic_editor.cpp
849 #code/nel/tools/logic/logic_editor_dll/logic_editor.h
850 #code/nel/tools/logic/logic_editor_dll/logic_editorDoc.cpp
851 #code/nel/tools/logic/logic_editor_dll/logic_editorDoc.h
852 #code/nel/tools/logic/logic_editor_exe/logic_editor_exe.cpp
853 #code/nel/tools/misc/bnp_make_qt/main.cpp
854 #code/nel/tools/misc/bnp_make_qt/main.h
855 #code/nel/tools/misc/bnp_make_qt/mainwindow.cpp
856 #code/nel/tools/misc/bnp_make_qt/mainwindow.h
857 #code/nel/tools/misc/data_mirror/StdAfx.h
858 #code/nel/tools/misc/message_box_qt/main.cpp
859 #code/nel/tools/misc/words_dic_qt/main.cpp
860 #code/nel/tools/misc/words_dic_qt/words_dicDlg.cpp
861 #code/nel/tools/sound/source_sounds_builder/SoundPage.cpp
862 #code/nel/tools/sound/source_sounds_builder/source_sounds_builderDlg.cpp
863 #code/nelns/login_system/nel_launcher_qt/nel_launcher_dlg.cpp
864 #code/nelns/login_system/nel_launcher_windows_ext/BarTabsWnd.h
865 #code/nelns/login_system/nel_launcher_windows_ext/Configuration.cpp
866 #code/nelns/login_system/nel_launcher_windows_ext/nel_launcher.cpp
867 #code/ryzom/client/src/interface_v3/lua_ihm_ryzom.h
868 #code/ryzom/client/src/interface_v3/view_pointer_ryzom.h
869 #code/ryzom/common/src/game_share/crypt_sha512.cpp
870 #code/ryzom/common/src/game_share/welcome_service_itf.h
871 #code/ryzom/tools/client/client_patcher/main.cpp
872 #code/ryzom/tools/client/ryzom_installer/src/profilesmodel.cpp
873 #code/ryzom/tools/client/ryzom_installer/src/profilesmodel.h
874 #code/ryzom/tools/client/ryzom_installer/src/qzip.cpp
875 #code/ryzom/tools/client/ryzom_installer/src/qzipreader.h
876 #code/ryzom/tools/client/ryzom_installer/src/qzipwriter.h
877 #code/ryzom/tools/leveldesign/georges_editor_qt/src/completer_line_edit.cpp
878 #code/ryzom/tools/leveldesign/georges_editor_qt/src/completer_line_edit.h
879 #code/ryzom/tools/leveldesign/georges_editor_qt/src/configuration.cpp
880 #code/ryzom/tools/leveldesign/georges_editor_qt/src/configuration.h
881 #code/ryzom/tools/leveldesign/georges_editor_qt/src/entity.cpp
882 #code/ryzom/tools/leveldesign/georges_editor_qt/src/entity.h
883 #code/ryzom/tools/leveldesign/georges_editor_qt/src/filesystem_model.cpp
884 #code/ryzom/tools/leveldesign/georges_editor_qt/src/filesystem_model.h
885 #code/ryzom/tools/leveldesign/georges_editor_qt/src/formdelegate.cpp
886 #code/ryzom/tools/leveldesign/georges_editor_qt/src/formdelegate.h
887 #code/ryzom/tools/leveldesign/georges_editor_qt/src/formitem.cpp
888 #code/ryzom/tools/leveldesign/georges_editor_qt/src/formitem.h
889 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georges.cpp
890 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georges.h
891 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georges_dirtree_dialog.cpp
892 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georges_dirtree_dialog.h
893 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georges_splash.cpp
894 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georges_splash.h
895 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georges_treeview_dialog.cpp
896 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georges_treeview_dialog.h
897 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_model.cpp
898 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_model.h
899 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_proxy_model.cpp
900 #code/ryzom/tools/leveldesign/georges_editor_qt/src/georgesform_proxy_model.h
901 #code/ryzom/tools/leveldesign/georges_editor_qt/src/log_dialog.cpp
902 #code/ryzom/tools/leveldesign/georges_editor_qt/src/log_dialog.h
903 #code/ryzom/tools/leveldesign/georges_editor_qt/src/main.cpp
904 #code/ryzom/tools/leveldesign/georges_editor_qt/src/main_window.cpp
905 #code/ryzom/tools/leveldesign/georges_editor_qt/src/main_window.h
906 #code/ryzom/tools/leveldesign/georges_editor_qt/src/modules.cpp
907 #code/ryzom/tools/leveldesign/georges_editor_qt/src/modules.h
908 #code/ryzom/tools/leveldesign/georges_editor_qt/src/new_dialog.cpp
909 #code/ryzom/tools/leveldesign/georges_editor_qt/src/new_dialog.h
910 #code/ryzom/tools/leveldesign/georges_editor_qt/src/objectviewer_dialog.cpp
911 #code/ryzom/tools/leveldesign/georges_editor_qt/src/objectviewer_dialog.h
912 #code/ryzom/tools/leveldesign/georges_editor_qt/src/progress_dialog.cpp
913 #code/ryzom/tools/leveldesign/georges_editor_qt/src/progress_dialog.h
914 #code/ryzom/tools/leveldesign/georges_editor_qt/src/qt_displayer.cpp
915 #code/ryzom/tools/leveldesign/georges_editor_qt/src/qt_displayer.h
916 #code/ryzom/tools/leveldesign/georges_editor_qt/src/settings_dialog.cpp
917 #code/ryzom/tools/leveldesign/georges_editor_qt/src/settings_dialog.h
918 #code/ryzom/tools/leveldesign/georges_editor_qt/src/stdpch.cpp
919 #code/ryzom/tools/leveldesign/georges_editor_qt/src/stdpch.h
920 #code/ryzom/tools/leveldesign/mission_compiler_fe/Resource.h
921 #code/ryzom/tools/leveldesign/world_editor/world_editor/resource.h
922 #code/ryzom/tools/xml_packer/xml_packer.cpp
923 #code/studio/src/description.h
924 #code/studio/src/plugins/core/qtwin.cpp
925 #code/studio/src/plugins/core/qtwin.h
926 #code/studio/src/plugins/example/example_plugin.cpp
927 #code/studio/src/plugins/example/example_plugin.h
928 #code/studio/src/plugins/gui_editor/action_list.cpp
929 #code/studio/src/plugins/gui_editor/action_list.h
930 #code/studio/src/plugins/gui_editor/add_widget_widget.cpp
931 #code/studio/src/plugins/gui_editor/add_widget_widget.h
932 #code/studio/src/plugins/log/log_plugin.h
933 #code/studio/src/plugins/log/qt_displayer.h
934 #code/studio/src/plugins/mission_compiler/mission_compiler_main_window.cpp
935 #code/studio/src/plugins/mission_compiler/mission_compiler_main_window.h
936 #code/studio/src/plugins/mission_compiler/mission_compiler_plugin.cpp
937 #code/studio/src/plugins/mission_compiler/mission_compiler_plugin.h
938 #code/studio/src/plugins/mission_compiler/mission_compiler_plugin_constants.h
939 #code/studio/src/plugins/mission_compiler/validation_file.cpp
940 #code/studio/src/plugins/mission_compiler/validation_file.h
941 #code/studio/src/plugins/object_viewer/graphics_viewport.cpp
942 #code/studio/src/plugins/object_viewer/graphics_viewport.h
943 #code/studio/src/plugins/object_viewer/main_window.cpp
944 #code/studio/src/plugins/object_viewer/main_window.h
945 #code/studio/src/plugins/object_viewer/modules.cpp
946 #code/studio/src/plugins/object_viewer/modules.h
947 #code/studio/src/plugins/object_viewer/object_viewer.cpp
948 #code/studio/src/plugins/object_viewer/object_viewer.h
949 #code/studio/src/plugins/object_viewer/object_viewer_plugin.cpp
950 #code/studio/src/plugins/object_viewer/object_viewer_plugin.h
951 #code/studio/src/plugins/object_viewer/stdpch.cpp
952 #code/studio/src/plugins/object_viewer/stdpch.h
953 #code/studio/src/plugins/object_viewer/particle_system/attrib_widget.cpp
954 #code/studio/src/plugins/object_viewer/particle_system/attrib_widget.h
955 #code/studio/src/plugins/object_viewer/particle_system/auto_lod_dialog.cpp
956 #code/studio/src/plugins/object_viewer/particle_system/auto_lod_dialog.h
957 #code/studio/src/plugins/object_viewer/particle_system/basic_edit_widget.cpp
958 #code/studio/src/plugins/object_viewer/particle_system/basic_edit_widget.h
959 #code/studio/src/plugins/object_viewer/particle_system/bin_op_dialog.cpp
960 #code/studio/src/plugins/object_viewer/particle_system/bin_op_dialog.h
961 #code/studio/src/plugins/object_viewer/particle_system/constraint_mesh_widget.cpp
962 #code/studio/src/plugins/object_viewer/particle_system/constraint_mesh_widget.h
963 #code/studio/src/plugins/object_viewer/particle_system/curve_dialog.cpp
964 #code/studio/src/plugins/object_viewer/particle_system/curve_dialog.h
965 #code/studio/src/plugins/object_viewer/particle_system/direction_widget.cpp
966 #code/studio/src/plugins/object_viewer/particle_system/direction_widget.h
967 #code/studio/src/plugins/object_viewer/particle_system/emitter_page.cpp
968 #code/studio/src/plugins/object_viewer/particle_system/emitter_page.h
969 #code/studio/src/plugins/object_viewer/particle_system/follow_path_dialog.cpp
970 #code/studio/src/plugins/object_viewer/particle_system/follow_path_dialog.h
971 #code/studio/src/plugins/object_viewer/particle_system/located_bindable_page.cpp
972 #code/studio/src/plugins/object_viewer/particle_system/located_bindable_page.h
973 #code/studio/src/plugins/object_viewer/particle_system/located_page.cpp
974 #code/studio/src/plugins/object_viewer/particle_system/located_page.h
975 #code/studio/src/plugins/object_viewer/particle_system/mesh_widget.cpp
976 #code/studio/src/plugins/object_viewer/particle_system/mesh_widget.h
977 #code/studio/src/plugins/object_viewer/particle_system/morph_mesh_dialog.cpp
978 #code/studio/src/plugins/object_viewer/particle_system/morph_mesh_dialog.h
979 #code/studio/src/plugins/object_viewer/particle_system/multi_tex_dialog.cpp
980 #code/studio/src/plugins/object_viewer/particle_system/multi_tex_dialog.h
981 #code/studio/src/plugins/object_viewer/particle_system/particle_control_dialog.cpp
982 #code/studio/src/plugins/object_viewer/particle_system/particle_control_dialog.h
983 #code/studio/src/plugins/object_viewer/particle_system/particle_editor.cpp
984 #code/studio/src/plugins/object_viewer/particle_system/particle_editor.h
985 #code/studio/src/plugins/object_viewer/particle_system/particle_force_page.cpp
986 #code/studio/src/plugins/object_viewer/particle_system/particle_force_page.h
987 #code/studio/src/plugins/object_viewer/particle_system/particle_light_page.cpp
988 #code/studio/src/plugins/object_viewer/particle_system/particle_light_page.h
989 #code/studio/src/plugins/object_viewer/particle_system/particle_link_skeleton_dialog.cpp
990 #code/studio/src/plugins/object_viewer/particle_system/particle_link_skeleton_dialog.h
991 #code/studio/src/plugins/object_viewer/particle_system/particle_property_dialog.cpp
992 #code/studio/src/plugins/object_viewer/particle_system/particle_property_dialog.h
993 #code/studio/src/plugins/object_viewer/particle_system/particle_sound_page.cpp
994 #code/studio/src/plugins/object_viewer/particle_system/particle_sound_page.h
995 #code/studio/src/plugins/object_viewer/particle_system/particle_system_page.cpp
996 #code/studio/src/plugins/object_viewer/particle_system/particle_system_page.h
997 #code/studio/src/plugins/object_viewer/particle_system/particle_texture_anim_widget.cpp
998 #code/studio/src/plugins/object_viewer/particle_system/particle_texture_anim_widget.h
999 #code/studio/src/plugins/object_viewer/particle_system/particle_texture_widget.cpp
1000 #code/studio/src/plugins/object_viewer/particle_system/particle_texture_widget.h
1001 #code/studio/src/plugins/object_viewer/particle_system/particle_tree_model.cpp
1002 #code/studio/src/plugins/object_viewer/particle_system/particle_tree_model.h
1003 #code/studio/src/plugins/object_viewer/particle_system/particle_workspace_dialog.cpp
1004 #code/studio/src/plugins/object_viewer/particle_system/particle_workspace_dialog.h
1005 #code/studio/src/plugins/object_viewer/particle_system/particle_workspace_page.cpp
1006 #code/studio/src/plugins/object_viewer/particle_system/particle_workspace_page.h
1007 #code/studio/src/plugins/object_viewer/particle_system/particle_zone_page.cpp
1008 #code/studio/src/plugins/object_viewer/particle_system/particle_zone_page.h
1009 #code/studio/src/plugins/object_viewer/particle_system/ps_mover_page.cpp
1010 #code/studio/src/plugins/object_viewer/particle_system/ps_mover_page.h
1011 #code/studio/src/plugins/object_viewer/particle_system/spinner_dialog.cpp
1012 #code/studio/src/plugins/object_viewer/particle_system/spinner_dialog.h
1013 #code/studio/src/plugins/object_viewer/particle_system/tail_particle_widget.cpp
1014 #code/studio/src/plugins/object_viewer/particle_system/tail_particle_widget.h
1015 #code/studio/src/plugins/object_viewer/particle_system/value_blender_dialog.cpp
1016 #code/studio/src/plugins/object_viewer/particle_system/value_blender_dialog.h
1017 #code/studio/src/plugins/object_viewer/particle_system/value_from_emitter_dialog.cpp
1018 #code/studio/src/plugins/object_viewer/particle_system/value_from_emitter_dialog.h
1019 #code/studio/src/plugins/object_viewer/scene/animation_dialog.cpp
1020 #code/studio/src/plugins/object_viewer/scene/animation_dialog.h
1021 #code/studio/src/plugins/object_viewer/scene/animation_set_dialog.cpp
1022 #code/studio/src/plugins/object_viewer/scene/animation_set_dialog.h
1023 #code/studio/src/plugins/object_viewer/scene/camera_control.cpp
1024 #code/studio/src/plugins/object_viewer/scene/camera_control.h
1025 #code/studio/src/plugins/object_viewer/scene/day_night_dialog.cpp
1026 #code/studio/src/plugins/object_viewer/scene/day_night_dialog.h
1027 #code/studio/src/plugins/object_viewer/scene/entity.cpp
1028 #code/studio/src/plugins/object_viewer/scene/entity.h
1029 #code/studio/src/plugins/object_viewer/scene/global_wind_dialog.cpp
1030 #code/studio/src/plugins/object_viewer/scene/global_wind_dialog.h
1031 #code/studio/src/plugins/object_viewer/scene/setup_fog_dialog.cpp
1032 #code/studio/src/plugins/object_viewer/scene/setup_fog_dialog.h
1033 #code/studio/src/plugins/object_viewer/scene/skeleton_scale_dialog.cpp
1034 #code/studio/src/plugins/object_viewer/scene/skeleton_scale_dialog.h
1035 #code/studio/src/plugins/object_viewer/scene/skeleton_tree_model.cpp
1036 #code/studio/src/plugins/object_viewer/scene/skeleton_tree_model.h
1037 #code/studio/src/plugins/object_viewer/scene/slot_manager_dialog.cpp
1038 #code/studio/src/plugins/object_viewer/scene/slot_manager_dialog.h
1039 #code/studio/src/plugins/object_viewer/scene/sun_color_dialog.cpp
1040 #code/studio/src/plugins/object_viewer/scene/sun_color_dialog.h
1041 #code/studio/src/plugins/object_viewer/scene/tune_mrm_dialog.cpp
1042 #code/studio/src/plugins/object_viewer/scene/tune_mrm_dialog.h
1043 #code/studio/src/plugins/object_viewer/scene/tune_timer_dialog.cpp
1044 #code/studio/src/plugins/object_viewer/scene/tune_timer_dialog.h
1045 #code/studio/src/plugins/object_viewer/scene/water_pool_dialog.cpp
1046 #code/studio/src/plugins/object_viewer/scene/water_pool_dialog.h
1047 #code/studio/src/plugins/object_viewer/vegetable/vegetable_appearance_page.cpp
1048 #code/studio/src/plugins/object_viewer/vegetable/vegetable_appearance_page.h
1049 #code/studio/src/plugins/object_viewer/vegetable/vegetable_density_page.cpp
1050 #code/studio/src/plugins/object_viewer/vegetable/vegetable_density_page.h
1051 #code/studio/src/plugins/object_viewer/vegetable/vegetable_dialog.cpp
1052 #code/studio/src/plugins/object_viewer/vegetable/vegetable_dialog.h
1053 #code/studio/src/plugins/object_viewer/vegetable/vegetable_editor.cpp
1054 #code/studio/src/plugins/object_viewer/vegetable/vegetable_editor.h
1055 #code/studio/src/plugins/object_viewer/vegetable/vegetable_landscape_page.cpp
1056 #code/studio/src/plugins/object_viewer/vegetable/vegetable_landscape_page.h
1057 #code/studio/src/plugins/object_viewer/vegetable/vegetable_node.cpp
1058 #code/studio/src/plugins/object_viewer/vegetable/vegetable_node.h
1059 #code/studio/src/plugins/object_viewer/vegetable/vegetable_noise_value_widget.cpp
1060 #code/studio/src/plugins/object_viewer/vegetable/vegetable_noise_value_widget.h
1061 #code/studio/src/plugins/object_viewer/vegetable/vegetable_rotate_page.cpp
1062 #code/studio/src/plugins/object_viewer/vegetable/vegetable_rotate_page.h
1063 #code/studio/src/plugins/object_viewer/vegetable/vegetable_scale_page.cpp
1064 #code/studio/src/plugins/object_viewer/vegetable/vegetable_scale_page.h
1065 #code/studio/src/plugins/object_viewer/widgets/color_edit_widget.cpp
1066 #code/studio/src/plugins/object_viewer/widgets/color_edit_widget.h
1067 #code/studio/src/plugins/object_viewer/widgets/edit_range_widget.cpp
1068 #code/studio/src/plugins/object_viewer/widgets/edit_range_widget.h
1069 #code/studio/src/plugins/translation_manager/ftp_selection.h
1070 #code/studio/src/plugins/zone_painter/painter_dock_widget.cpp
1071 #code/studio/src/plugins/zone_painter/painter_dock_widget.h
1072 #code/studio/src/plugins/zone_painter/zone_painter_main_window.cpp
1073 #code/studio/src/plugins/zone_painter/zone_painter_main_window.h
1074 #code/studio/src/plugins/zone_painter/zone_painter_plugin.cpp
1075 #code/studio/src/plugins/zone_painter/zone_painter_plugin.h