if (existing.getSourceFile().equals(added.getSourceFile())) { if (existing.getTargetFile().equals(added.getTargetFile())) { LOG.debug("Removing duplicate action `move " + existing.getSourceFile() + " to " + existing.getTargetFile() + "`"); LOG.warn("Confusing set of changes. Requested move the same file (" + added.getSourceFile() + ") to both " + existing.getTargetFile() + " and " + added.getTargetFile()); return KEEP_BOTH_CONTINUE; LOG.info("Move request for " + added.getSourceFile() + " into " + added.getTargetFile() + " conflicts with existing move request from " + existing.getSourceFile() + ". Changing existing move request to a delete."); return new CurateResult(true, true, actionFactory.create(new DeleteFileAction(existing.getSourceFile(), existing.getChangelistId())), false); if (existing.getTargetFile().equals(added.getSourceFile())) { LOG.info("Consolidating move from " + existing.getSourceFile() + " to " + existing.getTargetFile() + " to " + added.getTargetFile()); actionFactory.create(new MoveFileAction(existing.getSourceFile(), added.getTargetFile(), added.getChangelistId())), null, false);
MoveFileAction ex = (MoveFileAction) existing; if (ex.getSourceFile().equals(added.getFile())) { LOG.info("Request to move file " + ex.getSourceFile() + " to " + ex.getTargetFile() + " implies that delete request for file " + ex.getSourceFile() + " is ignored."); return KEEP_EXISTING_REMOVE_ADDED_STOP; LOG.info("Changing a move of " + ex.getSourceFile() + " to " + ex.getTargetFile() + " followed by delete of " + added.getFile() + " into a single delete of the source"); null, actionFactory.create(new DeleteFileAction(ex.getSourceFile(), ex.getChangelistId())),
@NotNull @Override protected ActionAnswer<MoveFileResult> moveFile(ClientConfig config, MoveFileAction action) { // Move file is turned into 2 messages. FileActionMessage.sendEvent(new FileActionMessage.Event(config.getClientServerRef(), action.getSourceFile(), P4FileAction.MOVE_DELETE, null, action)); FileActionMessage.sendEvent(new FileActionMessage.Event(config.getClientServerRef(), action.getTargetFile(), P4FileAction.MOVE_ADD_EDIT, null, action)); return onlineExec(config, () -> server.perform(config, action) .whenCompleted((result) -> { FileActionMessage.sendEvent(new FileActionMessage.Event(config.getClientServerRef(), action.getSourceFile(), P4FileAction.MOVE_DELETE, null, action, result)); FileActionMessage.sendEvent(new FileActionMessage.Event(config.getClientServerRef(), action.getTargetFile(), P4FileAction.MOVE_ADD_EDIT, null, action, result)); }) .whenServerError((t) -> { FileActionMessage.sendEvent(new FileActionMessage.Event(config.getClientServerRef(), action.getSourceFile(), P4FileAction.MOVE_DELETE, null, action, t)); FileActionMessage.sendEvent(new FileActionMessage.Event(config.getClientServerRef(), action.getTargetFile(), P4FileAction.MOVE_ADD_EDIT, null, action, t)); }), OfflineActionAnswerImpl::new ); }
case MOVE_FILE: { MoveFileAction a = toMoveFileAction(action); P4LocalFileImpl.Builder srcBuilder = files.get(a.getSourceFile()); P4LocalFileImpl.Builder tgtBuilder = files.get(a.getTargetFile()); if (srcBuilder == null) { srcBuilder = new P4LocalFileImpl.Builder() .withLocal(a.getSourceFile()) .withHave(new P4Revision(-1)); files.put(a.getSourceFile(), srcBuilder);
MoveFileAction action = (MoveFileAction) baseType; List<IFileSpec> srcFile = FileSpecBuildUtil.escapedForFilePaths(action.getSourceFile()); List<IFileSpec> tgtFile = FileSpecBuildUtil.escapedForFilePaths(action.getTargetFile()); if (srcFile.size() != 1 || tgtFile.size() != 1) {
MoveFileAction a = (MoveFileAction) action; ret.data .putFilePath("source", a.getSourceFile()) .putFilePath("target", a.getTargetFile()) .putChangelistId("cl-id", a.getChangelistId());