рдлрд╝рд╛рдЗрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдЧрддрд┐рд╡рд┐рдзрд┐

рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛрдб_рд╕реНрд╡рд░реНрдо рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ ( Google рдХреЛрдб рдкрд░ ) рдЬреИрд╕реЗ рдЙрддреНрдкрд╛рдж рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рдХрдо рд╕реЗ рдХрдо рд╣рд░ рддреАрд╕рд░реЗ рд╡реНрдпрдХреНрддрд┐ рдиреЗ рд╕рдВрднрд╡рддрдГ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЙрдЧ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рд╡реАрдбрд┐рдпреЛ рдмрдирд╛рдпрд╛ рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдФрд░ рд╣рд╛рдВ, рд╣рд░ рджреВрд╕рд░реЗ рдиреЗ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрд╛ред рдЗрди рд╕рднреА рд╡реАрдбрд┐рдпреЛ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░-рдлрд╝рд╛рдЗрд▓ рд╕рдВрдмрдВрдз рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрд╣ рдЖрд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓-рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдмрдВрдз рдХреЗ рдПрдХ рдЦрдВрдб рдореЗрдВ рдПрдХ рд▓реЙрдЧ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛, рдЕрд░реНрдерд╛рдд рдЙрддреНрдкрдиреНрди рд╡реАрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

рдмрд┐рд▓реНрд▓реА рдорд╛рдБрдЧрдиреЗ рдореЗрдВ рдХрд┐рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред
рд▓реЗрдЦ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛:рдореИрдВ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреВрдВрдЧрд╛ рдХрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓ рдкреАрдврд╝реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдЧрд┐рдЯ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореИрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред
рд╕рдорд╛рдкреНрдд рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╣рд╛рдВ рд╣реИ ред


Code_swarm рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдкрд┐

рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП code_swarm рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред Xml рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдФрд░ рдЗрд╕рдХрд╛ рдирд┐рдореНрди рд░реВрдк рд╣реИ:
  1. <? xml version ="1.0" ? > < file_events > < event date ="" author ="" filename ="" action ="" comment ="" /> </ file_events >
  2. <? xml version ="1.0" ? > < file_events > < event date ="" author ="" filename ="" action ="" comment ="" /> </ file_events >
  3. <? xml version ="1.0" ? > < file_events > < event date ="" author ="" filename ="" action ="" comment ="" /> </ file_events >
  4. <? xml version ="1.0" ? > < file_events > < event date ="" author ="" filename ="" action ="" comment ="" /> </ file_events >
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, code_swarm рдореЗрдВ, рдЖрдк рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдЖрдБрдХрдбрд╝реЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ , рдХреБрдЫ рдФрд░ рдЬрд┐рд╕ рд╡рд┐рд╖рдп рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рддреА рд╣реИ, рд╡рд╣ рд╣реИред рд╢рд╛рд╕реНрддреНрд░реАрдп рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рдХреЛрдб_рд╕реНрд╡рд░реНрдо рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдХреЛ рдЕрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдорд╛рди рд▓реЗрдВ рдХрд┐ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЬреИрд╕реЗ рд╢реЛрдЯрд╡рд░реНрдХ , рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИ, рд╡рд┐рд╖рдп рдПрдХ рдлрд╛рдЗрд▓ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдФрд░ рд╡рд┐рд╖рдп рд╡рд╣ рд░реЗрдЦрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЬреЛрдбрд╝рд╛ рдпрд╛ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдлрд░реЗрдВрдЯ рдлрд╛рдЗрд▓ рд╕реЗ рд▓реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд╣рд┐рд╕реНрд╕рд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рдлрд╛рдЗрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХрдорд┐рдЯ рднреА рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
1142998387000:John Resig<br>&ajax/ajax.js<br>new file mode 100644<br> +// AJAX Plugin<br>+// Docs Here:<br>+// http://jquery.com/docs/ajax/<br>+if ( typeof XMLHttpRequest == 'undefined' && typeof window.ActiveXObject == 'function') {<br>+var XMLHttpRequest = function() {<br>+return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') = 0) ?<br> -Microsoft.XMLHTTP : Msxml2.XMLHTTP);<br>-};<br>-} <br> +.xml = function( type, url, data, ret ) {<br>+var xml = new XMLHttpRequest();<br>+if ( xml ) {<br>+xml.open(type || GET, url, true);<br>+if ( data )<br>+xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');<br>+if ( ret )<br>+xml.onreadystatechange = function() {<br>
рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдЕрдирд▓реЛрдб рдХреА рдЧрдИ рд╣реИ:
git log -U0 --diff-filter=AMD --reverse --pretty= "%at000:%cn" -10 | \<br> grep -v "^\(-\{3\}\|+\{3\}\) " | \<br> grep -v "^[+-][ ]*$" | \<br> grep -v "^[+-]$" | \<br> grep -v "^[ ]*$" | \<br> sed -e "s/diff .* b\//\&/g" \<br> -e "s/^+[ ]\+/+/g" \<br> -e "s/^-[ ]\ + /-/g" \<br> -e "s/[ ]\+$//g" \<br> -e "s/^$//g" \<br> -e 's/\\/\\\\/g' \<br> -e "s/[\"\`<>$]//g"
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрддрд╛рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдФрд░ рдХреНрдпреЛрдВ:
  1. рд▓реЙрдЧ - рдПрдХ рд▓реЙрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ
  2. -U0 - рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ 0 рд╡реЗрдВ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдореЗрдВ рднрд┐рдиреНрди рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛрдбрд╝реЗрдВ
  3. --diff- рдлрд╝рд┐рд▓реНрдЯрд░ = рдПрдПрдордбреА - рдХреЗрд╡рд▓ рд╕реНрдЯреЗрдЯрд╕ рдП: рдПрдбреЗрдб, рдПрдо: рдЪреЗрдВрдЬреЗрдб , рдбреА: рдбрд┐рд▓реАрдЯ рдХреА рдЧрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред
  4. - рдкреВрд░реНрд╡рд╡рд░реНрддреА - рддрд┐рдерд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░рд┐рд╡рд░реНрд╕ рдЫрдБрдЯрд╛рдИред
  5. - рд╡реНрдпрд╛рдЦреНрдпрд╛ = "% at000:% cn" - рд▓реЙрдЧ рдкреНрд░рд╛рд░реВрдк % at -date, % cn - рдХрдорд┐рдЯрд░ рдирд╛рдоред
  6. -10 - рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо 10 рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрддрд╛ рд╣реИред
  7. grep рдЙрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдордирд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ 3 + рдпрд╛ - рдПрдХ рд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ, рд╕рднреА рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ, + рдпрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рднреА рд▓рд╛рдЗрдиреЗрдВред
  8. рд╕реАрдб рдХрдиреНрд╡рд░реНрдЯ рд▓рд╛рдЗрдиреЗрдВ: +/- рдХреЗ рдмрд╛рдж рд╕рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдВред
рдФрд░ рдЕрдм рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк, рдмрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрд╢реНрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреА рд▓рд╛рдЗрди-рдмрд╛рдп-рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рднрд╛рд╖рд╛ рд╣реИред рдпрд╣ рд╕рдм рдЖрдирдВрджрдордп рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдорд╛рдирдХ рд╕реЗрдб, рдХрдЯ рдФрд░ рд╕рдордп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд рд╣реА рднрдпрд╛рдирдХ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ Awk рдХреЗ рд▓рд┐рдП рд╕рдмрдХреБрдЫ рднреБрдирд╛рдпрд╛, рдЕрдЧрд░ рдореИрдВрдиреЗ рдЯреНрд░рд┐рдкрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рддреЛ рдкреАрдврд╝реА рдХреА рдЧрддрд┐ рджреЛрдЧреБрдиреА рд╣реЛ рдЧрдИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд░реНрдпрд╛рдкреНрдд рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╢рдмреНрдж рд╣реИрдВ, рдпрд╣рд╛рдВ рдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб ( рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдмрд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг ) рд╣реИ:
#!/bin/sh

generate ()   {
if   test   -t   1 ;   then
exec   > $logfile
fi

echo   -e   "<?xml version=\"1.0\"?>\n<file_events>"
echo   "generating ..."   >& 2

awk   - v   typegen = $1   '
BEGIN {
split("\b\b\b\b\b. . . . . \b- \b\b- \b\b- \b\b- \b\b- \b= = = = =", st, " ")
ist=0
_ord_init()

typehash=0
if( typegen == "ch_code") {
typehash=1
}
else if( typegen == "crypt" ) {
typehash=2
}
}

function _ord_init(low, high, i, t)
{
low = sprintf("%c", 7)
if (low == "\a") {
low = 0
high = 127
} else if (sprintf("%c", 128 + 7) == "\a") {
low = 128
high = 255
} else {
low = 0
high = 255
}

for (i = low; i <= high; i++) {
t = sprintf("%c", i)
_ord_[t] = i
}
}

function ord(str, c) {
c = substr(str, 1, 1);
return _ord_[c];
}

/^[0-9]/ {
sub(/:.*/, "");
d=$0;
next;
}
/^&/ {
sub(/&/, "");
f=$0
substr($0, 2, length($0) - 1);
next;
}
/^\+/ { a="A"; }
/^-/ { a="D"; }
/^[\+-]/ {
sub(/[\+-]/, "")
str=""
if( typehash == 1) {
for(i=1; i<length($0); i++){
str = str "" ord(substr($0, i, 1))
}
gsub(/32|16/, "/sd", str)
str = substr(str, 0, length(str)-2) "." substr(str, length(str)-1, 2);
}
else {
cmd="echo \"" $0 "\" | md5sum | cut -f1 -d \" \" | sed -e \"s@[32|16]@/sd@g;\" -e \"s/\\(..\\)\$/.\\1/\""
if ( typehash == 2 )
cmd="C:/Perl/bin/perl -e \"print crypt($ARGV[0], $ARGV[1])\" \"" $0 "\" \"1/5l58j/jk\""
cmd | getline str;
close(cmd);
}

if (str != "")
print "<event date=\""d"\" author=\""f"\" filename=\""str"\" action=\""a"\" comment=\"\"/>"

system("echo -ne \"" st[ist++] "\" >&2")
if (ist > 16) ist=0
}
'
  $gitdiff

echo   - ne   "\b\b\b\b\b\b\b\b\b\b\b\bcompleted!"   >& 2
echo   "</file_events>"
rm   $gitdiff
}

prepare_git ()   {
git   log   - U0   -- diff-filter = AMD   -- reverse   -- pretty = "%at000:%cn"   $1   |   \
grep   - v   "^\(-\{3\}\|+\{3\}\) "   |   \
grep   - v   "^[+-][ ]*$"   |   \
grep   - v   "^[+-]$"   |   \
grep   - v   "^[ ]*$"   |   \
sed   -e   "s/diff .* b\//\&/g"   \
-e   "s/^+[ ]\+/+/g"   \
-e   "s/^-[ ]\+/-/g"   \
-e   "s/[ ]\+$//g"   \
-e   "s/^$//g"   \
-e   's/\\/\\\\/g'   \
-e   "s/[\"\`<>$]//g"   >   $gitdiff
}

fileaction = "$(date +%j%H%M%s)"

typehash = md5
[   -n   "$1"   ]   &&   typehash = $1   ||   echo   -e   " "   +   \
" \n :\n"   +   \
"\t\tmd5 тАФ -\n\t\tcrypt\n\t\tch_code\nusing: $0 crypt"   >& 2
echo   " : " $typehash   >& 2

[   -n   "$2"   ]   &&   countcommit = $2   ||   echo   -e   " \n"   +   \
"git log --help\n:\t-<n>\n\t\tLimits the number of commits to show.\nusing: $0 crypt -10"   >& 2
echo   -n   " : "   >& 2
[   -n   "$2"   ]   &&   echo   $2 ' '   >& 2   ||   echo   " "   >& 2

gitdiff = $fileaction ".temp"
logfile = $fileaction "actions.xml"

prepare_git   $countcommit
generate   $typehash


рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рдХрд┐ рдЬрд╛рдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реВрдВрдЧрд╛:рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ (рд╡рд┐рд╖рдпреЛрдВ) рдХреЛ рдкрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
  1. md5 - md5sum рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдлрд┐рд░ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рд╕рдВрдЦреНрдпрд╛ 32 рдпрд╛ 16 рдХреЛ / sd рд╡рд░реНрдгреЛрдВ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрддрд┐рдо рджреЛ рд╕реЗ рдкрд╣рд▓реЗ рдбреЙрдЯ рдкреНрд░рддреАрдХ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рдкреЗрдбрд╝ рдЧреНрд░реЛрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдореЗрдВ рдмрдирд╛ рд╣реЛ
  2. рдХреНрд░рд┐рдкреНрдЯ - рдкрд░реНрд▓ рдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реА рдХреБрдВрдЬреА рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред
  3. ch_code - рдмрд╕ рд╕рднреА рд╡рд░реНрдгреЛрдВ рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рднреА 32 рдпрд╛ 16 рдХреЛ sd / рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ 2 рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗ рд╕рдХрддреА рд╣реИ:
  1. рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рдХрд╛рд░ - рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдКрдкрд░ рджрд┐рдП рдЧрдП рдорд╛рди рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рдмрд┐рдирд╛, md5 рдкреНрд░рдХрд╛рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  2. рдХрдорд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ - рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдбрд┐рдлрд░реЗрдВрд╢рд┐рдпрд▓ рдЬрдирд░реЗрд╢рди рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЧрдП рдХрдорд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛-рдЬрд╣рд╛рдБ рдкрд░ рдиреНрдпреВрдореЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реИред рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рднреА рдХрдорд┐рдЯрдореЗрдВрдЯ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдирд┐рд╖реНрдХрд░реНрд╖ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрдиреЗ рдХрд┐рд╕реА рднреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдЧрддрд┐рд╡рд┐рдзрд┐ рд▓реЙрдЧ рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
$ echo "{ } \$@" > /bin/genlogcs
рджрд░рдЕрд╕рд▓, рд╕рдм рдХреБрдЫ рдЧрддрд┐рд╡рд┐рдзрд┐ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред


Code_swarm рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рдЕрдм рд╣рдо code_swarm рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрд░реЛрдд рд╕реЗ code_swarm рдПрдХрддреНрд░ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдлрд╝рд╛рдЗрд▓ рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ ред рдЗрд╕реЗ рдЕрдкрдиреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рд░рдЦреЗрдВ рдЬрд╣рд╛рдБ code_swarm рдбрд┐рд╕реНрдЯреНрд░реЗрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде my.conf рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
#
ColorAssign1 = "DigitLetter" , ".*[0-9][az]" , 43 , 170 , 215 , 43 , 170 , 215
#
ColorAssign2 = "LetterDigit" , ".*[az][0-9]" , 255 , 134 , 51 , 255 , 134 , 51
#
ColorAssign3 = "LetterLetter" , ".*[az][az]" , 43 , 110 , 214 , 43 , 110 , 214
#
ColorAssign4 = "DigitDigit" , ".*[0-9][0-9]" , 41 , 242 , 185 , 41 , 242 , 185

Width = 1280
Height = 720
InputFile = data / my / data / actions . xml
PhysicsEngineConfigDir = physics_engine
PhysicsEngineSelection = PhysicsEngineOrderly
ParticleSpriteFile = src / particle . png
Font = Helvetica
FontSize = 16
BoldFontSize = 16
#MillisecondsPerFrame=2254085
MaxThreads = 4
Background = 0 , 0 , 0
TakeSnapshots = true
SnapshotLocation = data / my / png / cs - #####. png
DrawNamesSharp = true
DrawNamesHalos = true
DrawFilesSharp = false
DrawFilesFuzzy = true
DrawFilesJelly = false
ShowLegend = true
ShowHistory = true
ShowDate = true
ShowEdges = false
ShowDebug = false
EdgeLength = 36
EdgeDecrement = - 2
FileDecrement = - 1
PersonDecrement = - 1
FileSpeed = 7.0
PersonSpeed = 2.0
FileMass = 2.0
PersonMass = 10.0
EdgeLife = 250
FileLife = 200
PersonLife = 255
HighlightPct = 5
UseOpenGL = false
ShowUserName = true
IsInputSorted = false
рдпрд╣ рдлрд╛рдЗрд▓ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред


рдЧрддрд┐рд╡рд┐рдзрд┐ рджреГрд╢реНрдп рд╡реАрдбрд┐рдпреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рддреЛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХрд╣рд╛рдБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВ рд╕рд┐рд░реНрдл рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ code_swarm рдХреЗ рд╕рд╛рде рдХрд╣рдирд╛ рд╣реЛрдЧрд╛, рдбреЗрдЯрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рдореЗрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдпрд╣рд╛рдБ рдмрдирд╛рдИ рдЧрдИ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдмрдирд╛рдПрдБред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдВ:рдФрд░ рдЖрдкрдХреЛ 2 рдкреАрдПрдирдЬреА рдФрд░ рдкрд░рд┐рдгрд╛рдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ gen_log

рдЪреВрдВрдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ code_swarm рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдмрд▓реНрдХрд┐ gource рдореЗрдВ рднреА, рдореИрдВрдиреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЙрдЧ рдмрдирд╛рддреА рд╣реИред рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ gen_log ( рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдмрд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
#!/bin/sh
uses (){
echo -e 'using\n$0 file_codeswarm.xml'
}

generatelog (){
echo "genereting... "
state =( "\\" "|" "/" "тАФ" )
i = 0
if [ -f "$1" ]; then
result = ${1%.*} '.log'
echo -n > $result
# event
grep -e "event " $1 | \
#
# <event />
sed -e "s/^[ ]*//;s/^<event //g;s|/>$||g" | \
while read line
do
date = ""
# , 4
eval $line ;
# date,
[ -n "$date" ] && [ "`echo -n $data | wc -c`" - gt "10" ] && date = `echo $data | sed -e "s/^\(.\{10\}\).*/\1/"`
[ -n "$date" ] && echo "$date|$author|$action|$filename" >> $result
# .
echo - ne "\b${state[$i]}"
(( i += 1 ))
[[ $i - eq 5 ]] && i = 0
done
echo - ne "\bcompleted!"
else
echo -e "file log code_swarm not exsits!\n$1"
fi
}

[ -n "$1" ] && generatelog $1 || uses
рдпрд╣ рд▓рд┐рдкрд┐ рдЙрдкрдпреЛрдЧреА рдирд┐рд╖реНрдХрд╛рд╕рди рдХрд╛рд░реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдпрд╣ рдкрд╛рда рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдкреБрдЯ рд▓рд╛рдЗрди рдореЗрдВ рдирд┐рдореНрди рд░реВрдк рд╣реИ:
date ="1142998387000" author ="ajax/ajax.js" filename ="c9/sd/sd9db4/sd/sd/sdb945/sdb89a/sd/sd7/sd/sdfbfdf.04" action ="A" comment =""
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░реЗрдЧрд╛ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 5 рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рддрд╛рд░реАрдЦ , рд▓реЗрдЦрдХ , рдлрд╛рдЗрд▓рдирд╛рдо , рдПрдХреНрд╢рди , рдХрдореЗрдВрдЯ (рдзрдиреНрдпрд╡рд╛рдж рдмреНрд▓рд┐рдЬрд╝рдиреЗрдЬрд╝ ) рд╣реЛрдЧрд╛ред рдЗрди рдЪрд░ рдХреЛ рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдк рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ:
date|author|action|filename
рд╕рдЪ рд╣реИ, gource рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рд░реВрдк рдлрд╝рд╛рдЗрд▓ {gource_home} /data/gource.style рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдиред рдмрдмрдЯ

рдЕрдм рд╣рдо рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рдЖрдк рдЬрд┐рди рдЧрддрд┐рд╡рд┐рдзрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬреЗрдиреЛрд▓реЙрдЧреНрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ, рдЙрд╕реЗ рдЖрдк {code_swarm_home} /data/my/data/actions.xml рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдбрд╛рд▓реЗрдВрдЧреЗред
рдпрд╣рд╛рдВ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА ( рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдмрд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг ) рд╣реИ:
call sh gen_log ./data/actions.xml

call sh sort_log ./data/actions.log > data\gource.log

pushd png
del *.png
popd

pushd ..\..
call run.bat data\my\my.config
popd

pushd png
call "..\tools\nt\mencoder" mf://*.png -mf fps=19:type=png -ovc x264 -x264encopts pass=1:bitrate=1000 -oac copy -audiofile "..\data\audio.wav" -o "..\results\result.avi"
popd

pushd "tools\gource"
call gource.exe --hide filenames,dirnames --user-scale 2 --output-framerate 25 --stop-position 1 --highlight-all-users --seconds-per-day 1 --output-ppm-stream "..\..\results\resultgource.ppm" "..\..\data\gource.log"
popd

pushd "tools\nt"
call ffmpeg -y -b 9000K -f image2pipe -vcodec ppm -i "..\..\results\resultgource.ppm" -fpre "..\ll.ffpreset" -i "..\..\results\resultgource.ppm" -vcodec libx264 "..\..\results\resultgource.avi"

call mencoder "..\..\results\resultgource.avi" -ovc x264 -x264encopts pass=1:bitrate=10000 -ofps 19 -speed 2 -o "..\..\results\resultgource.fps"

call mencoder "..\..\results\resultgource.fps" -ovc x264 -x264encopts pass=1:bitrate=10000 -oac copy -audiofile "..\..\data\audio.wav" -o "..\..\results\resultgource.avi"
popd

del results\resultgource.ppm
del results\resultgource.fps
del data\actions.log
рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддреА рд╣реИ:
  1. рдЗрд╕реЗ рдХреНрд░рдордмрджреНрдз рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдк рдХрд░реЗрдВ -k1 -t "|" , рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рд╣рдо рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рджреВрд╕рд░реА рдлрд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рд╢рдкрде рд▓реЗрддрд╛ рд╣реИред рд╕реЙрд░реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЧреЙрд░реНрдб рдХреЗрд╡рд▓ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  2. рдЙрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде code_swarm рдЪрд▓рд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ my.config рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдирддреАрдЬрддрди, code_swarm рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ png рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рддрд╛ рд╣реИ
  3. рд╣рдо mngoder рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ png рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕реА рд╕рдордп рд╣рдо рдПрдХ рд╕рд╛рдЙрдВрдб рдЯреНрд░реИрдХ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВ, рд╡реАрдбрд┐рдпреЛ рдХреА рдЕрд╡рдзрд┐ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ -mf рдПрдлрдкреАрдПрд╕ = 19: рдЯрд╛рдЗрдк = png рдХреЗ рд╕рд╛рде рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ 19 рдпрд╣ рдкреАрдПрдирдЬреА рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╕реЗрдХрдВрдб рдореЗрдВ рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдиреБрдкрд╛рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
  4. рддрдм gource рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ ppm рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреБрдЫ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рджрд┐рдП рдЧрдП рдЕрдкрд▓реЛрдб рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред
  5. рдлрд┐рд░ рд╣рдо рдЗрд╕ ppm рдлрд╛рдЗрд▓ рдХреЛ ffmpeg рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХреЛ avi рдлрд╛рдЗрд▓ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝реА рдФрд░ рд▓рдВрдмреА рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╣рдо рдЙрд╕реА 19 рдПрдлрдкреАрдПрд╕ рдкрд░ рдореЗрдиреНрдХреЛрдбрд░ рдХреА рдорджрдж рд╕реЗ рддреЗрдЬреА рд▓рд╛рддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдЙрдВрдб рдЯреНрд░реИрдХ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ mencoder рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ 10 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХреА рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИред
рдореИрдВрдиреЗ рд╢реЛрдЯрд╛рдЗрдорд╡рд░реНрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рд░реВрдкрд╛рдВрддрд░рдг рджреЗрдЦрд╛ред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬреЛ рдЖрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдерд╛ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ {code_swarm_home} / data / my / results) рд╣реИ, рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реНрдб рдЧрддрд┐рд╡рд┐рдзрд┐ рд╡рд╛рд▓реЗ рджреЛ рд╡реАрдбрд┐рдпреЛред


рдирд┐рд╖реНрдкрд╛рджрди рдкрд░рд┐рдгрд╛рдо, md5 рдкреАрдврд╝реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде

рдпрд╣рд╛рдБ рдореЗрд░реЗ рдкрд░рд┐рдгрд╛рдо рдЬреЙрдХрд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╣реИрдВред

code_swarm



рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ (рдореЙрдбрд▓ "рдЖрдХрд░реНрд╖рдг"):рдпрд╣рд╛рдБ, рд╕рдмрд╕реЗ рдЪрдордХреАрд▓реА рд╡рд╕реНрддреБрдПрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рд╣реИрдВ рдЬреЛ рдЕрдХреНрд╕рд░ js рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рдкрди рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП md5sum рд╕рдорд╛рди рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ md5sum рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдореЗрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡рд╕реНрддреБрдирд┐рд╖реНрда рдЪрд┐рддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ ch_code generation type рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

gource



рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ (рдордзреБрдордХреНрдЦреА рдФрд░ рдЫрддреНрддреЗ рдХрд╛ рдореЙрдбрд▓):рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрд╕реНрд╡реАрд░ рдПрдХ рднрдЧреНрди рдХреЗ рд╕рдорд╛рди рдирд┐рдХрд▓реЗрдЧреАред рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рдЦрд╛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рддрд░рд╣ рд╣реИ, рдкреЗрдбрд╝ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрддреНрддреА рдПрдХ рдлрд╛рдЗрд▓ рд╣реИред


рдкрд░рд┐рдгрд╛рдо

рдпрд╣ рдЖрд▓реЗрдЦ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ code_swarm рдФрд░ gource рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдХрд┐рд╕реА рднреА рдЖрдБрдХрдбрд╝реЗ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рд╕рдордп рдЪрд░ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рдЖрдБрдХрдбрд╝реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИред
рдпрд╣ рд╕рдм, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рдЦреЗрд▓ рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдХрдо рд╕реЗ рдХрдо рдпрд╣реА рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпреЗ рдмрд╛рддреЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдХрд╛рдо рдореЗрдВ рд╡рд┐рд╡рд┐рдзрддрд╛ рд▓рд╛рддреА рд╣реИрдВред
рдореЗрд░реА рд╢рд▓рдЬрдо рдХрд╛ рдХреНрд▓реЛрди рдмрдирд╛рдУ
$ git clone git://github.com/artzub/code_swarm-gource-my-conf.git test
рдФрд░ рдЕрдкрдиреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред


рд╕рд╛рд╣рд┐рддреНрдп

рдЕрдкрдбреЗрдЯ: рд╣рд░ рдХреЛрдИ рдЪреБрдк рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб_рд╕реНрд╡рд░реНрдо рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдЬреЗрдирд░реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ, рдпрд╛ рдПрдХ рдЯрд╛рдЗрдкреЛ, рдЬрд┐рд╕реЗ рдореИрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╣рдирд╛ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ / ^ + / рдореЗрдВ, рдХреЗ рдмрд╛рдж рд╕реЗ рддреНрд░реБрдЯрд┐ рдЗрд╕ рддрд░рд╣ рдмрдЪ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП / ^ \ + / ред рдЕрдЬреАрдм рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдбреАрдмреИрди рдЕрд╡реЗрдХ рд╢рд╛рдкрд┐рдд рдХреЗ рддрд╣рдд рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛! =)

Source: https://habr.com/ru/post/In114630/


All Articles