From bdeca9f4590a8a86c1fe6da9ac416d507fcc9b8e Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Tue, 18 Apr 2017 16:00:09 +0200 Subject: [PATCH 01/15] Updates docker dev setup to latest images --- docker-compose.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 76167457..99b983b0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,11 @@ -# For development at http://svn/, assuming local scripts build and libs install +# For development at http://svn/, assuming local scripts build and libs install, and hosts file record for svn +# Image builds see https://github.com/Reposoft/docker-svn # Create repo: docker-compose exec svn repocreate test -o daemon # Install libs: http://svn/repos-web/lib/smarty/install.php version: '2.1' services: svn: - image: solsson/rweb-httpd@sha256:f69fc496a781e6cdcd8156e6a2c14b33377ef6b2b8538cdc6b570e47cb89adc8 + image: solsson/rweb-httpd@sha256:4a0661e12da2ef4cc5dfbff08213a28b628bd522c85607e26e3425e30310821b expose: - "80" ports: @@ -15,7 +16,7 @@ services: volumes: - .:/opt/rweb rweb: - image: solsson/rweb@sha256:4531be10995942642442a4efa73762dd9e11828a8457a98c2a15f673fbfa93d4 + image: solsson/rweb@sha256:c39b35eb6dc65c1baa165eb6635f16375354328a7edd481927ad12db4a89b6fc expose: - "9000" links: From de23d24db6cd1088c4f8ddc38381de55227207e2 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Tue, 18 Apr 2017 20:44:29 +0200 Subject: [PATCH 02/15] Bumps version to 1.7 as we'll make a potentially destabilizing change --- README.md | 5 +++++ build.sh | 2 +- repos-web/conf/repos.properties.php | 2 +- repos-web/edit/upload/index.php | 14 +------------- repos-web/index_en.html | 2 +- repos-web/version/index.php | 2 +- 6 files changed, 10 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 6ef19fb0..85d1dfce 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,11 @@ ## Changelog +### 1.7.0 + + * Adds normalization of file upload name (https://github.com/Reposoft/rweb/pull/14) + * Drops support for svn <1.5 + ### 1.6.0 * Recommends PHP 7 diff --git a/build.sh b/build.sh index 13c43ab1..b29a68e4 100755 --- a/build.sh +++ b/build.sh @@ -1,5 +1,5 @@ #!/bin/bash -VERSION=1.6.2 +VERSION=1.7.0 rm -Rf target mkdir target cp -r repos-plugins target/ diff --git a/repos-web/conf/repos.properties.php b/repos-web/conf/repos.properties.php index 0045bd06..7435fd31 100644 --- a/repos-web/conf/repos.properties.php +++ b/repos-web/conf/repos.properties.php @@ -17,7 +17,7 @@ * @see Presentation * @package conf */ -define('REPOS_VERSION','1.6'); +define('REPOS_VERSION','1.7'); // ----- global settings ----- diff --git a/repos-web/edit/upload/index.php b/repos-web/edit/upload/index.php index d586fd33..538e33a1 100755 --- a/repos-web/edit/upload/index.php +++ b/repos-web/edit/upload/index.php @@ -125,19 +125,7 @@ function processFile($upload) { $sparse->addArgPath($dir . $filename); if ($sparse->execNoDisplay()) trigger_error('Failed to get target file from repository.', E_USER_ERROR); } else { - // warn because this operation may have serious performance impact - error_log('svn depth=empty checkout for file upload failed -- temp working copy will contain all folder immediates'); - // fallback: svn 1.4 and older - $checkout = new SvnEdit('checkout'); - $checkout->addArgOption('--non-recursive'); - if ($fromrev) $checkout->addArgOption('-r', $fromrev, false); - $checkout->addArgUrl($repoFolder); - $checkout->addArgPath($dir); - $checkout->exec(); - if (!$checkout->isSuccessful()) { - $presentation->showError("Could not read current version of file " - .$upload->getTargetUrl().". ".$checkout->getResult()); - } + trigger_error('Failed to create working copy', E_USER_ERROR); } // for PHP operations like file_exist below, we need to use an encoded path on windows // while the subversion commands use $dir.$filename and the setlocale in Command class diff --git a/repos-web/index_en.html b/repos-web/index_en.html index 72883e78..b3e3f4fa 100644 --- a/repos-web/index_en.html +++ b/repos-web/index_en.html @@ -67,7 +67,7 @@

Server settings

diff --git a/repos-web/version/index.php b/repos-web/version/index.php index 40125e9b..ca42d66f 100644 --- a/repos-web/version/index.php +++ b/repos-web/version/index.php @@ -8,7 +8,7 @@ $v = array(); # tag replaced by build script -$v['releaseversion'] = '1.6'; +$v['releaseversion'] = '1.7'; # info from svn if the application is checked out $v['system'] = array(); From 5b264b6d902d64c522e0cd538de5817adbfc27f5 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Tue, 18 Apr 2017 21:02:10 +0200 Subject: [PATCH 03/15] Uses the intl extension to normalize upload filename... the only input we have that is derived from client's FS (due to the uploadform javascript) --- repos-web/conf/repos.properties.php | 8 ++++++++ repos-web/edit/upload/index.php | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/repos-web/conf/repos.properties.php b/repos-web/conf/repos.properties.php index 7435fd31..67fce8ba 100644 --- a/repos-web/conf/repos.properties.php +++ b/repos-web/conf/repos.properties.php @@ -625,6 +625,14 @@ function xmlEncodePath($path) { return str_replace('&', '&', $path); } +/** + * Try to avoid https://issues.apache.org/jira/browse/SVN-2464 regardless of client platform + */ +function reposNormalizePath($path) { + if (Normalizer::isNormalized($path)) return $path; + return Normalizer::normalize($path); +} + // ----- internal functions ----- function _getStackTrace() { diff --git a/repos-web/edit/upload/index.php b/repos-web/edit/upload/index.php index 538e33a1..47c8dca3 100755 --- a/repos-web/edit/upload/index.php +++ b/repos-web/edit/upload/index.php @@ -299,7 +299,7 @@ function isCreate() { function getName() { if ($this->isCreate()) { Validation::expect('name'); - return $_POST['name']; + return reposNormalizePath($_POST['name']); } return getPathName(getTarget()); } From d95fa53f3accb5dd0d87240e5d4b9437dacb515f Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Tue, 18 Apr 2017 21:37:31 +0200 Subject: [PATCH 04/15] Upgrades to rweb image with intl extension --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 99b983b0..f4759f23 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: volumes: - .:/opt/rweb rweb: - image: solsson/rweb@sha256:c39b35eb6dc65c1baa165eb6635f16375354328a7edd481927ad12db4a89b6fc + image: solsson/rweb@sha256:af472c0e4895a98d92f2dfaaf54dd2b2a7f511e5e5315a310d131184072f35b4 expose: - "9000" links: From d1a1f5bc2976e82663dc440564aa963cbde64bd1 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Wed, 19 Apr 2017 07:29:07 +0200 Subject: [PATCH 05/15] PHP 7.1.4 --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index f4759f23..e7a5a4c5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: volumes: - .:/opt/rweb rweb: - image: solsson/rweb@sha256:af472c0e4895a98d92f2dfaaf54dd2b2a7f511e5e5315a310d131184072f35b4 + image: solsson/rweb@sha256:637f22c928c3e993c9d1122e9e11fa63d3fe2c3f0f562dcd46385f43f936235c expose: - "9000" links: From 9f0f10cec87038cafe0a3e0a130a94fc20f8a865 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Wed, 19 Apr 2017 20:49:14 +0200 Subject: [PATCH 06/15] Revert "PHP 7.1.4" as it was based on the wrong variant, cli or something This reverts commit d1a1f5bc2976e82663dc440564aa963cbde64bd1. --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index e7a5a4c5..f4759f23 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: volumes: - .:/opt/rweb rweb: - image: solsson/rweb@sha256:637f22c928c3e993c9d1122e9e11fa63d3fe2c3f0f562dcd46385f43f936235c + image: solsson/rweb@sha256:af472c0e4895a98d92f2dfaaf54dd2b2a7f511e5e5315a310d131184072f35b4 expose: - "9000" links: From bb416b89e3767f62daa22d7e3abf02fabe3b5154 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Wed, 19 Apr 2017 21:38:12 +0200 Subject: [PATCH 07/15] PHP 7.0.18 --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index f4759f23..3681a84d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: volumes: - .:/opt/rweb rweb: - image: solsson/rweb@sha256:af472c0e4895a98d92f2dfaaf54dd2b2a7f511e5e5315a310d131184072f35b4 + image: solsson/rweb@sha256:48953047d03913a56be1b3fc90850ac8aec6308e579ed8fa5abe0b85118d9717 expose: - "9000" links: From f7b2956d41a8b5d54bf66a198f7aa39c97090069 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Wed, 19 Apr 2017 21:53:28 +0200 Subject: [PATCH 08/15] Fixes 'Only variables should be passed by reference' --- repos-web/edit/delete/index.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/repos-web/edit/delete/index.php b/repos-web/edit/delete/index.php index 864a2ec6..85262eee 100644 --- a/repos-web/edit/delete/index.php +++ b/repos-web/edit/delete/index.php @@ -28,6 +28,7 @@ function delete($message) { $edit->addArgUrl(getTargetUrl()); $edit->addArgRevpropsFromPost(); $edit->exec(); - displayEdit(Presentation::background(), dirname(rtrim(getTargetUrl(),'/')), false); + $template = Presentation::background(); + displayEdit($template, dirname(rtrim(getTargetUrl(),'/')), false); } ?> \ No newline at end of file From 095283e06e2178f4e984ec556363c0118b18a9e3 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Thu, 20 Apr 2017 06:22:37 +0200 Subject: [PATCH 09/15] PHP 7.1.4, -fpm this time --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 3681a84d..6820d9f8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: volumes: - .:/opt/rweb rweb: - image: solsson/rweb@sha256:48953047d03913a56be1b3fc90850ac8aec6308e579ed8fa5abe0b85118d9717 + image: solsson/rweb@sha256:63de4e9d4469ef3dc05d88793fbbcb52329bdf3c21f35928cca8685b43f7f9b5 expose: - "9000" links: From f86e8baf57f6c3b4e791787e53adad6dd60160c5 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Thu, 20 Apr 2017 06:23:23 +0200 Subject: [PATCH 10/15] Work around https://bugs.php.net/bug.php?id=69489 --- repos-web/conf/System.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repos-web/conf/System.class.php b/repos-web/conf/System.class.php index 082d9d77..91536391 100644 --- a/repos-web/conf/System.class.php +++ b/repos-web/conf/System.class.php @@ -501,7 +501,7 @@ function _getSystemTemp() { $type = 'tempnam'; // suggest a directory that does not exist, so that tempnam uses system temp dir $doesnotexist = 'dontexist'.rand(); - $tmpfile = tempnam($doesnotexist, 'emptytempfile'); + $tmpfile = @tempnam($doesnotexist, 'emptytempfile'); if (strpos($tmpfile, $doesnotexist)!==false) trigger_error("Could not get system temp, got: ".$tmpfile, E_USER_ERROR); if (!file_exists($tmpfile)) trigger_error("Failed to create temp file using $type", E_USER_ERROR); $tempdir = dirname($tmpfile); From a705c48f43863b08a9415daadc544cd2fce21ffa Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Thu, 20 Apr 2017 08:12:42 +0200 Subject: [PATCH 11/15] Reduces complecity of tmp lookup when in docker --- README.md | 2 ++ docker-compose.yml | 2 +- repos-web/conf/System.class.php | 5 ++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 85d1dfce..1cd07a41 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ * Adds normalization of file upload name (https://github.com/Reposoft/rweb/pull/14) * Drops support for svn <1.5 + * Adds support for a REPOS_TEMP variable to specify tmp dir + - Performance of the backing volume matters in edit operations due to temporary WCs ### 1.6.0 diff --git a/docker-compose.yml b/docker-compose.yml index 6820d9f8..ca6809de 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: volumes: - .:/opt/rweb rweb: - image: solsson/rweb@sha256:63de4e9d4469ef3dc05d88793fbbcb52329bdf3c21f35928cca8685b43f7f9b5 + image: solsson/rweb@sha256:9690296ec8c59cef6a65e7a5bdb7fe77bbd8edc5cdd07b3bccc294c2cb6f02e2 expose: - "9000" links: diff --git a/repos-web/conf/System.class.php b/repos-web/conf/System.class.php index 91536391..c73b4567 100644 --- a/repos-web/conf/System.class.php +++ b/repos-web/conf/System.class.php @@ -484,7 +484,10 @@ function _getSystemTemp() { static $tempfolder = null; if (!is_null($tempfolder)) return $tempfolder; $type = ''; - if (getenv('TMP')) { + if (getenv('REPOS_TEMP')) { + $type = 'REPOS_TEMP'; + $tempdir = getenv('REPOS_TEMP'); + } elseif (getenv('TMP')) { $type = 'TMP'; $tempdir = getenv('TMP'); } elseif (getenv('TMPDIR')) { From d55ccb2d50271f202790e5981525931d8f2db3c5 Mon Sep 17 00:00:00 2001 From: Staffan Olsson Date: Thu, 20 Apr 2017 08:13:54 +0200 Subject: [PATCH 12/15] Bumps a few more version numbers to 1.7 --- package.json | 2 +- repos-web/view/repos.xsl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b4b46805..5defbaf8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rweb", - "version": "1.6.0", + "version": "1.7.0", "description": "Repos Web REST API and simple UI for version control", "author": "Repos Mjukvara AB", "license": "CC-BY-NC-4.0", diff --git a/repos-web/view/repos.xsl b/repos-web/view/repos.xsl index 9d3ed655..3a061707 100644 --- a/repos-web/view/repos.xsl +++ b/repos-web/view/repos.xsl @@ -177,7 +177,7 @@