
Eric Niebler wrote:
Beman Dawes wrote:
Beman Dawes wrote:
Until further notice, branches/release is open for known-good merges.
"known-good" means changes that are already passing trunk regression tests, or are in files like documentation that have no effect on testing.
Apparently, some of us morons need more help with this crazy merge thing. I need to merge revisions 41419-41420 from trunk to release, so I did what seemed the most logical thing:
svn co https://svn.boost.org/svn/boost/branches/release cd release svnmerge.py merge -r 41419-41420
The svnmerge.py invocation does *nothing* ... no merge, no output, no errors. Any help?
Because I always want all my trunk changes merged into branches/release, I'm not using svnmerge.py, and am doing a tree-to-tree rather than revsion-to-revision merge. Also, I don't want to have to do multiple merges for boost-root/libs/library-name, boost-root/boost/library-name, and then also individual header files in boost-root//boost, I use a script to automate merges. See attached. The script requires environmental variable BOOST_MERGED_TO_RELEASE be a path to the current trunk, and the current branches/release also checked out, say in /boost/release. Then: cd /boost/release merge_release --dry-run filesystem will do a dry run of the merge. You can then do: merge_release filesystem for the actual merge. Then after local testing, the commit is done normally. Below is what it looked like for a merge I just did. Note the message giving the revision number, which I use in the commit message. HTH, even if it doesn't directly answer your question. --Beman D:\>cd \boost\release D:\boost\release>merge_release.py filesystem command: svn info --xml d:\boost\merged-to-release
e:\temp/merged_to_release-svn_info.xml Using d:\boost\merged-to-release revision 41517 as trunk merge point Merging boost-root/boost/ filesystem ...
command: svn merge https://svn.boost.org/svn/boost/branches/release/boost/filesy stem https://svn.boost.org/svn/boost/trunk/boost/filesystem@41517 boost/filesystem Merging boost-root/libs/ filesystem ... command: svn merge https://svn.boost.org/svn/boost/branches/release/libs/filesys tem https://svn.boost.org/svn/boost/trunk/libs/filesystem@41517 libs/filesystem U libs/filesystem/doc/index.htm U libs/filesystem/src/path.cpp A libs/filesystem/example/vc++.bat U libs/filesystem/example/simple_ls.cpp U libs/filesystem/example/file_size.cpp command: svn merge https://svn.boost.org/svn/boost/branches/release/boost/filesystem.hpp https://svn.boost.org/svn/boost/trunk/boost/filesystem.hpp@41517 boost/filesystem.hpp # merge diff between branches/release and trunk into working copy # Copyright Beman Dawes 2007 # Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # ---------------------------------------------------------------------------- # import os import sys import platform import time import ftplib # invoke the system command line processor def cmd(command): print "command:", command os.system(command) # get revision number of a path, which may be a filesystem path or URL def revision(path, results_path, test_name): rev = 0 svn_info_file = results_path + "/" + test_name + "-svn_info.xml" command = "svn info --xml " + path + " >" + svn_info_file cmd(command) f = open( svn_info_file, 'r' ) svn_info = f.read() f.close() i = svn_info.find( 'revision=' ) if i >= 0: i += 10 while svn_info[i] >= '0' and svn_info[i] <= '9': rev = rev*10 + int(svn_info[i]) i += 1 return rev # invoke svn merge def svn_merge(options, path, trunk_rev): print cmd("svn merge "+options+"https://svn.boost.org/svn/boost/branches/release/" +path+" https://svn.boost.org/svn/boost/trunk/"+path+"@"+str(trunk_rev)+" "+path) # ---------------------------------------------------------------------------- # if len(sys.argv) < 2: print "Usage: merge_release.py [options] LIBRARY-NAME" print " Does svn merge to release from trunk for any boost-root/boost" print " headers associated with the library, the boost/LIBRARY-NAME directory" print " and the libs/LIBRARY-NAME directory. Options are the svn merge options." print "Example: merge_release.py --dry-run filesystem" exit(1) if not os.path.exists("LICENSE_1_0.txt") or not os.path.exists("libs") or not os.path.exists("boost"): print "Error: This program must run from the boost-root directory" exit(1) options = "" i = 1 while i < len(sys.argv)-1: options += sys.argv[i]+" " i += 1 library_name = sys.argv[i] trunk_merged_to_release = os.environ['BOOST_MERGED_TO_RELEASE'] if len(trunk_merged_to_release) == 0: print "Error: Must set BOOST_MERGED_TO_RELEASE to trunk path" exit(1) trunk_revision = revision(trunk_merged_to_release, os.environ['TEMP'], 'merged_to_release') print "Using", trunk_merged_to_release, "revision", trunk_revision, "as trunk merge point" print "Merging boost-root/boost/", library_name, "..." svn_merge(options, "boost/" + library_name, trunk_revision) print print "Merging boost-root/libs/", library_name, "..." svn_merge(options, "libs/" + library_name, trunk_revision) #print grepcmd = "grep -E -l \"www.boost.org/libs/"+library_name+"([ /]|$)\" boost/*.h*" #print "Searching headers with", grepcmd for hdr in os.popen(grepcmd).readlines(): svn_merge(options, hdr[0:len(hdr)-1], trunk_revision)