Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4137084
Gitblame.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
Gitblame.php
View Options
<?php
/**
* Git blame report for PHP_CodeSniffer.
*
* @author Ben Selby <benmatselby@gmail.com>
* @author Greg Sherwood <gsherwood@squiz.net>
* @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
* @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
*/
namespace
PHP_CodeSniffer\Reports
;
use
PHP_CodeSniffer\Exceptions\DeepExitException
;
class
Gitblame
extends
VersionControl
{
/**
* The name of the report we want in the output
*
* @var string
*/
protected
$reportName
=
'GIT'
;
/**
* Extract the author from a blame line.
*
* @param string $line Line to parse.
*
* @return mixed string or false if impossible to recover.
*/
protected
function
getAuthor
(
$line
)
{
$blameParts
=
[];
$line
=
preg_replace
(
'|
\s
+|'
,
' '
,
$line
);
preg_match
(
'|
\(
.+[0-9]{4}-[0-9]{2}-[0-9]{2}
\s
+[0-9]+
\)
|'
,
$line
,
$blameParts
);
if
(
isset
(
$blameParts
[
0
])
===
false
)
{
return
false
;
}
$parts
=
explode
(
' '
,
$blameParts
[
0
]);
if
(
count
(
$parts
)
<
2
)
{
return
false
;
}
$parts
=
array_slice
(
$parts
,
0
,
(
count
(
$parts
)
-
2
));
$author
=
preg_replace
(
'|
\(
|'
,
''
,
implode
(
' '
,
$parts
));
return
$author
;
}
//end getAuthor()
/**
* Gets the blame output.
*
* @param string $filename File to blame.
*
* @return array
* @throws \PHP_CodeSniffer\Exceptions\DeepExitException
*/
protected
function
getBlameContent
(
$filename
)
{
$cwd
=
getcwd
();
chdir
(
dirname
(
$filename
));
$command
=
'git blame --date=short "'
.
basename
(
$filename
).
'" 2>&1'
;
$handle
=
popen
(
$command
,
'r'
);
if
(
$handle
===
false
)
{
$error
=
'ERROR: Could not execute "'
.
$command
.
'"'
.
PHP_EOL
.
PHP_EOL
;
throw
new
DeepExitException
(
$error
,
3
);
}
$rawContent
=
stream_get_contents
(
$handle
);
pclose
(
$handle
);
$blames
=
explode
(
"
\n
"
,
$rawContent
);
chdir
(
$cwd
);
return
$blames
;
}
//end getBlameContent()
}
//end class
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Wed, Aug 19, 13:59 (3 w, 4 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
20/0e/8555999b31ceb3eebdf327fbf090
Default Alt Text
Gitblame.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment