From 31ffed43b7d79aa0d17e90a0a697318af5674184 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 18 May 2020 13:55:59 +0200 Subject: [PATCH] Support copy and renamed modifications for hg --- CHANGELOG.md | 1 + .../src/main/java/sonia/scm/store/JAXBDataStore.java | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index afafc0d4e6..711639ae90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Handle obscure line breaks in diff viewer ([#1129](https://github.com/scm-manager/scm-manager/pull/1129)) - Validate subversion client checksum ([#1113](https://github.com/scm-manager/scm-manager/issues/1113)) - Fix plugin manage permission ([#1135](https://github.com/scm-manager/scm-manager/pull/1135)) +- Missing copy on write in the data store ([#1155](https://github.com/scm-manager/scm-manager/pull/1155)) ## [2.0.0-rc7] - 2020-04-09 ### Added diff --git a/scm-dao-xml/src/main/java/sonia/scm/store/JAXBDataStore.java b/scm-dao-xml/src/main/java/sonia/scm/store/JAXBDataStore.java index a4181c5c8d..036fe27f9c 100644 --- a/scm-dao-xml/src/main/java/sonia/scm/store/JAXBDataStore.java +++ b/scm-dao-xml/src/main/java/sonia/scm/store/JAXBDataStore.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.store; //~--- non-JDK imports -------------------------------------------------------- @@ -84,7 +84,10 @@ public class JAXBDataStore extends FileBasedStore implements DataStore Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); - marshaller.marshal(item, file); + CopyOnWrite.withTemporaryFile( + temp -> marshaller.marshal(item, temp.toFile()), + file.toPath() + ); } catch (JAXBException ex) { throw new StoreException("could not write object with id ".concat(id),