Merge branch '1.8'
commit
d788c67547
12
CHANGELOG.md
12
CHANGELOG.md
|
@ -1,3 +1,11 @@
|
||||||
|
### [1.8.4] 2019-02-11
|
||||||
|
|
||||||
|
* Fixed long standing solver bug leading to odd solving issues in edge cases, see #7946
|
||||||
|
* Fixed HHVM support for upcoming releases
|
||||||
|
* Fixed unix proxy for binaries to be POSIX compatible instead of breaking some shells
|
||||||
|
* Fixed invalid deprecation warning for composer-plugin-api
|
||||||
|
* Fixed edge case issues with Windows junctions when working with path repositories
|
||||||
|
|
||||||
### [1.8.3] 2019-01-30
|
### [1.8.3] 2019-01-30
|
||||||
|
|
||||||
* Fixed regression when executing partial updates
|
* Fixed regression when executing partial updates
|
||||||
|
@ -729,6 +737,10 @@
|
||||||
|
|
||||||
* Initial release
|
* Initial release
|
||||||
|
|
||||||
|
[1.8.4]: https://github.com/composer/composer/compare/1.8.3...1.8.4
|
||||||
|
[1.8.3]: https://github.com/composer/composer/compare/1.8.2...1.8.3
|
||||||
|
[1.8.2]: https://github.com/composer/composer/compare/1.8.1...1.8.2
|
||||||
|
[1.8.1]: https://github.com/composer/composer/compare/1.8.0...1.8.1
|
||||||
[1.8.0]: https://github.com/composer/composer/compare/1.7.3...1.8.0
|
[1.8.0]: https://github.com/composer/composer/compare/1.7.3...1.8.0
|
||||||
[1.7.3]: https://github.com/composer/composer/compare/1.7.2...1.7.3
|
[1.7.3]: https://github.com/composer/composer/compare/1.7.2...1.7.3
|
||||||
[1.7.2]: https://github.com/composer/composer/compare/1.7.1...1.7.2
|
[1.7.2]: https://github.com/composer/composer/compare/1.7.1...1.7.2
|
||||||
|
|
|
@ -648,6 +648,15 @@ class Filesystem
|
||||||
/**
|
/**
|
||||||
* Returns whether the target directory is a Windows NTFS Junction.
|
* Returns whether the target directory is a Windows NTFS Junction.
|
||||||
*
|
*
|
||||||
|
* We test if the path is a directory and not an ordinary link, then check
|
||||||
|
* that the mode value returned from lstat (which gives the status of the
|
||||||
|
* link itself) is not a directory.
|
||||||
|
*
|
||||||
|
* This relies on the fact that PHP does not set this value because there is
|
||||||
|
* no universal file type flag for a junction or a mount point. However a
|
||||||
|
* bug in PHP can cause a random value to be returned and this could result
|
||||||
|
* in a junction not being detected: https://bugs.php.net/bug.php?id=77552
|
||||||
|
*
|
||||||
* @param string $junction Path to check.
|
* @param string $junction Path to check.
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
|
@ -659,22 +668,13 @@ class Filesystem
|
||||||
if (!is_dir($junction) || is_link($junction)) {
|
if (!is_dir($junction) || is_link($junction)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* According to MSDN at https://msdn.microsoft.com/en-us/library/14h5k7ff.aspx we can detect a junction now
|
// Important to clear all caches first
|
||||||
* using the 'mode' value from stat: "The _S_IFDIR bit is set if path specifies a directory; the _S_IFREG bit
|
|
||||||
* is set if path specifies an ordinary file or a device." We have just tested for a directory above, so if
|
|
||||||
* we have a directory that isn't one according to lstat(...) we must have a junction.
|
|
||||||
*
|
|
||||||
* #define _S_IFDIR 0x4000
|
|
||||||
* #define _S_IFREG 0x8000
|
|
||||||
*
|
|
||||||
* Stat cache should be cleared before to avoid accidentally reading wrong information from previous installs.
|
|
||||||
*/
|
|
||||||
clearstatcache(true, $junction);
|
clearstatcache(true, $junction);
|
||||||
clearstatcache(false);
|
|
||||||
$stat = lstat($junction);
|
$stat = lstat($junction);
|
||||||
|
|
||||||
return !($stat['mode'] & 0xC000);
|
// S_IFDIR is 0x4000, S_IFMT is the 0xF000 bitmask
|
||||||
|
return $stat ? 0x4000 !== ($stat['mode'] & 0xF000) : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue