if (!isset($local->entry)) { error("Local copy not found."); } $destination = $local->entry->url; if (!is_trunk($destination)) { error("This script is likely not to be appropriate for this working copy. This script can be used in:\n\ttrunk"); } $source = full($_SERVER['argv'][1]); if (!is_experimental($source)) { error("The provided source cannot be used to update this working copy. Only experimental branches can be used."); } if (has_uncommited_changes('.')) { error("Working copy has uncommited changes. Revert or commit them before merging a branch."); } $revision = (int) get_info($destination)->entry->commit['revision']; $last = find_last_merge($source, $destination); $sDest = short($destination); $sSource = short($source); if ($last !== $revision) { error("You must branchupdate {$sSource} from {$sDest} before merging."); } // Proceed to update info("Updating..."); update_working_copy('.'); // Do merge info("Merging..."); incorporate($destination, $source); important("After verifications, commit using a meaningful message for this feature."); $conflicts = get_conflicts('.'); if ($conflicts->length > 0) { $message = "Conflicts occurred during the merge. Fix the conflicts and start again.";
<?php // (c) Copyright 2002-2010 by authors of the Tiki Wiki/CMS/Groupware Project // // All Rights Reserved. See copyright.txt for details and a complete list of authors. // Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. // $Id$ require dirname(__FILE__) . '/svntools.php'; // Perform basic checks if (!isset($_SERVER['argc']) || $_SERVER['argc'] != 2) { error("Missing argument. Expecting branch to review as argument.\n\nExamples:\n\tbranches/experimental/plugin_ui"); } $source = full($_SERVER['argv'][1]); $trunk = full('trunk'); if (!is_experimental($source)) { error("This script is only valid to review experimental branches."); } $last = find_last_merge($source, $trunk); if (!$last) { error("Could not find previous merge."); } $eS = escapeshellarg($source); $eT = escapeshellarg($trunk); passthru("svn diff {$eT}@{$last} {$eS}");
important('Note: Not checking uncommitted changes. Make sure you commit the right files!'); } else { if (has_uncommited_changes('.')) { error("Working copy has uncommited changes. Revert or commit them before merging a branch."); } } // Proceed to update if ($ignore_externals) { important('Note: Updating but ignoring external libraries - only use this if you are sure this working copy is up to date.'); } else { info("Updating..."); } update_working_copy('.', $ignore_externals); $revision = (int) get_info($source)->entry->commit['revision']; // Do merge info("Merging..."); $last = find_last_merge('.', $source); if (!$last) { error("Could not find previous merge. Impossible to merge automatically."); } merge('.', $source, $last, $revision); important("After verifications, commit using `svn ci -F svn-commit.tmp`"); $conflicts = get_conflicts('.'); if ($conflicts->length > 0) { $message = "Conflicts occurred during the merge. Fix the conflicts and start again."; foreach ($conflicts as $path) { $path = $path->parentNode->getAttribute('path'); $message .= "\n\t{$path}"; } error($message); }