svn commit: r1151015 - /subversion/trunk/subversion/tests/cmdline/info_tests.py
Author: stsp Date: Tue Jul 26 08:24:17 2011 New Revision: 1151015 URL: http://svn.apache.org/viewvc?rev=1151015&view=rev Log: * subversion/tests/cmdline/info_tests.py (info_show_exclude): Fix indentation and put the expected error string into a variable instead of spelling it out twice. No functional change. Patch by: Noorul Islam K M Modified: subversion/trunk/subversion/tests/cmdline/info_tests.py Modified: subversion/trunk/subversion/tests/cmdline/info_tests.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/info_tests.py?rev=1151015&r1=1151014&r2=1151015&view=diff == --- subversion/trunk/subversion/tests/cmdline/info_tests.py (original) +++ subversion/trunk/subversion/tests/cmdline/info_tests.py Tue Jul 26 08:24:17 2011 @@ -449,8 +449,8 @@ def info_show_exclude(sbox): expected_info = [{ 'Path' : '.*%siota' % re.escape(os.sep), - 'Repository Root' : sbox.repo_url, - 'Repository UUID' : wc_uuid, + 'Repository Root' : sbox.repo_url, + 'Repository UUID' : wc_uuid, }] svntest.main.run_svn(None, 'up', '--set-depth', 'exclude', iota) svntest.actions.run_and_verify_info(expected_info, iota) @@ -469,19 +469,16 @@ def info_show_exclude(sbox): sbox.simple_rm('iota') sbox.simple_commit() + + expected_error = 'svn: E29: Could not display info for all targets.*' # Expect error on iota (status = not-present) - svntest.actions.run_and_verify_svn(None, [], - 'svn: E29: Could not display info for all targets.*', -'info', iota) + svntest.actions.run_and_verify_svn(None, [], expected_error, 'info', iota) sbox.simple_update() # Expect error on iota (unversioned) - svntest.actions.run_and_verify_svn(None, [], - 'svn: E29: Could not display info for all targets.*', -'info', iota) - + svntest.actions.run_and_verify_svn(None, [], expected_error, 'info', iota) # Run the tests
svn commit: r1151020 - /subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py
Author: philip Date: Tue Jul 26 08:46:58 2011 New Revision: 1151020 URL: http://svn.apache.org/viewvc?rev=1151020&view=rev Log: New test for 'svnadmin lslocks' and 'svnadmin rmlocks'. * subversion/tests/cmdline/svnadmin_tests.py (test_lslocks_and_rmlocks): New test. (test_list): Add new test. Patch by: Noorul Islam K M Modified: subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py Modified: subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py?rev=1151020&r1=1151019&r2=1151020&view=diff == --- subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py (original) +++ subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py Tue Jul 26 08:46:58 2011 @@ -26,6 +26,7 @@ # General modules import os +import re import shutil import sys @@ -33,6 +34,7 @@ import sys import svntest from svntest.verify import SVNExpectedStdout, SVNExpectedStderr from svntest.verify import SVNUnexpectedStderr +from svntest.verify import UnorderedOutput from svntest.main import SVN_PROP_MERGEINFO # (abbreviation) @@ -1381,6 +1383,86 @@ def verify_non_utf8_paths(sbox): 'STDERR', expected_stderr, errput): raise svntest.Failure +def test_lslocks_and_rmlocks(sbox): + "test 'svnadmin lslocks' and 'svnadmin rmlocks'" + + sbox.build(create_wc=False) + iota_url = sbox.repo_url + '/iota' + lambda_url = sbox.repo_url + '/A/B/lambda' + + exit_code, output, errput = svntest.main.run_svnadmin("lslocks", +sbox.repo_dir) + + if exit_code or errput or output: +raise svntest.Failure("Error: 'lslocks' failed") + + expected_output = UnorderedOutput( +["'A/B/lambda' locked by user 'jrandom'.\n", + "'iota' locked by user 'jrandom'.\n"]) + + # Lock iota and A/B/lambda using svn client + svntest.actions.run_and_verify_svn(None, expected_output, + [], "lock", "-m", "Locking files", + iota_url, lambda_url) + + expected_output = svntest.verify.UnorderedRegexOutput([ + "Path: /A/B/lambda", + "UUID Token: opaquelocktoken", + "Owner: jrandom", + "Created:", + "Expires:", + "Comment \(1 line\):", + "Locking files", + "Path: /iota", + "UUID Token: opaquelocktoken.*", + "\n", # empty line + ]) + + # List all locks + exit_code, output, errput = svntest.main.run_svnadmin("lslocks", +sbox.repo_dir) + + if errput: +raise SVNUnexpectedStderr(errput) + + svntest.verify.compare_and_display_lines('message', 'label', + expected_output, output) + svntest.verify.verify_exit_code(None, exit_code, 0) + + # List lock in path /A + exit_code, output, errput = svntest.main.run_svnadmin("lslocks", +sbox.repo_dir, +"A") + if errput: +raise SVNUnexpectedStderr(errput) + + expected_output = svntest.verify.UnorderedRegexOutput([ +"Path: /A/B/lambda", +"UUID Token: opaquelocktoken", +"Owner: jrandom", +"Created:", +"Expires:", +"Comment \(1 line\):", +"Locking files", +"\n", # empty line +]) + + svntest.verify.compare_and_display_lines('message', 'label', + expected_output, output) + svntest.verify.verify_exit_code(None, exit_code, 0) + + # Remove locks + exit_code, output, errput = svntest.main.run_svnadmin("rmlocks", +sbox.repo_dir, +"iota", +"A/B/lambda") + expected_output = UnorderedOutput(["Removed lock on '/iota'.\n", + "Removed lock on '/A/B/lambda'.\n"]) + + svntest.verify.verify_outputs( +"Unexpected output while running 'svnadmin rmlocks'.", +output, [], expected_output, None) + # Run the tests @@ -1410,6 +1492,7 @@ test_list = [ None, hotcopy_symlink, load_bad_props, verify_non_utf8_paths, + test_lslocks_and_rmlocks, ] if __name__ == '__main__':
svn commit: r1151028 - /subversion/site/publish/docs/release-notes/1.7.html
Author: danielsh Date: Tue Jul 26 09:04:10 2011 New Revision: 1151028 URL: http://svn.apache.org/viewvc?rev=1151028&view=rev Log: * docs/release-notes/1.7.html (revprop-packing): Update a link. Modified: subversion/site/publish/docs/release-notes/1.7.html Modified: subversion/site/publish/docs/release-notes/1.7.html URL: http://svn.apache.org/viewvc/subversion/site/publish/docs/release-notes/1.7.html?rev=1151028&r1=1151027&r2=1151028&view=diff == --- subversion/site/publish/docs/release-notes/1.7.html (original) +++ subversion/site/publish/docs/release-notes/1.7.html Tue Jul 26 09:04:10 2011 @@ -360,7 +360,7 @@ svnadmin: E160043: Found format '5', onl We reiterate that this lack of upgrade path is within the latitude of -our policy for pre-releases. We may +our policy for pre-releases. We may provide in the future a script to downgrade a repository in-place to the format supported by both 1.6 and 1.7. (We will welcome contributions of such a script.)
svn commit: r1151036 - /subversion/trunk/subversion/po/de.po
Author: stsp Date: Tue Jul 26 09:26:41 2011 New Revision: 1151036 URL: http://svn.apache.org/viewvc?rev=1151036&view=rev Log: * subversion/po/de.po: Fix an error in the German translation of the help text of 'svn export'. The text was implying that unversioned files were exported under some condititions, which isn't a proper translation of the original meaning (such files are never exported). Found by: Ulrich Eckhardt http://svn.haxx.se/users/archive-2011-07/0403.shtml Modified: subversion/trunk/subversion/po/de.po Modified: subversion/trunk/subversion/po/de.po URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/po/de.po?rev=1151036&r1=1151035&r2=1151036&view=diff == --- subversion/trunk/subversion/po/de.po [UTF-8] (original) +++ subversion/trunk/subversion/po/de.po [UTF-8] Tue Jul 26 09:26:41 2011 @@ -8506,7 +8506,7 @@ msgstr "" " sonst REV. Ohne Angabe von PFAD2 wird der letzte Abschnitt von PFAD1\n" " als lokaler Verzeichnisname verwendet. Ohne Angabe von REV werden alle\n" " lokalen Ă„nderungen beibehalten. Objekte, die sich nicht unter\n" -" Versionskontrolle befinden, werden in diesem Fall auch nicht kopiert.\n" +" Versionskontrolle befinden, werden nicht kopiert.\n" "\n" " PEGREV gibt an, in welcher Revision das Ziel zuerst gesucht wird.\n"
svn commit: r1151037 - in /subversion/branches/1.7.x: ./ subversion/po/de.po
Author: stsp Date: Tue Jul 26 09:28:37 2011 New Revision: 1151037 URL: http://svn.apache.org/viewvc?rev=1151037&view=rev Log: On the 1.7.x branch, merge r1151036 from trunk (obvious fix). Modified: subversion/branches/1.7.x/ (props changed) subversion/branches/1.7.x/subversion/po/de.po Propchange: subversion/branches/1.7.x/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Jul 26 09:28:37 2011 @@ -54,4 +54,4 @@ /subversion/branches/tree-conflicts:868291-873154 /subversion/branches/tree-conflicts-notify:873926-874008 /subversion/branches/uris-as-urls:1060426-1064427 -/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147309,1148071,1148131,1148374,1148424,1148566,1148588,1148853,1148877,1148882,1148936,1149105,1149141,1149160,1149228,1149240,1149572,1149675 +/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147309,1148071,1148131,1148374,1148424,1148566,1148588,1148853,1148877,1148882,1148936,1149105,1149141,1149160,1149228,1149240,1149572,1149675,1151036 Modified: subversion/branches/1.7.x/subversion/po/de.po URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/po/de.po?rev=1151037&r1=1151036&r2=1151037&view=diff == --- subversion/branches/1.7.x/subversion/po/de.po [UTF-8] (original) +++ subversion/branches/1.7.x/subversion/po/de.po [UTF-8] Tue Jul 26 09:28:37 2011 @@ -8506,7 +8506,7 @@ msgstr "" " sonst REV. Ohne Angabe von PFAD2 wird der letzte Abschnitt von PFAD1\n" " als lokaler Verzeichnisname verwendet. Ohne Angabe von REV werden alle\n" " lokalen Ă„nderungen beibehalten. Objekte, die sich nicht unter\n" -" Versionskontrolle befinden, werden in diesem Fall auch nicht kopiert.\n" +" Versionskontrolle befinden, werden nicht kopiert.\n" "\n" " PEGREV gibt an, in welcher Revision das Ziel zuerst gesucht wird.\n"
svn commit: r1151038 - in /subversion/branches/1.6.x: ./ subversion/po/de.po
Author: stsp Date: Tue Jul 26 09:29:47 2011 New Revision: 1151038 URL: http://svn.apache.org/viewvc?rev=1151038&view=rev Log: On the 1.6.x branch, merge r1151036 from trunk (obvious fix). Modified: subversion/branches/1.6.x/ (props changed) subversion/branches/1.6.x/subversion/po/de.po Propchange: subversion/branches/1.6.x/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Jul 26 09:29:47 2011 @@ -119,4 +119,4 @@ /subversion/branches/tc_url_rev:874351-874483 /subversion/branches/tree-conflicts:868291-873154 /subversion/branches/tree-conflicts-notify:873926-874008 -/subversion/trunk:875965,875968,876004,876012,876017,876019,876022,876024,876032,876041-876042,876048,876051,876055-876056,876059,876083,876091,876097,876101,876104,876109,876123-876125,876129,876132,876138,876160,876167,876175,876180,876185,876205,876223-876225,876230,876233,876245,876252,876256,876283,876287,876312,876326-876327,876330,876366,876372,876374,876376,876383,876386,876442,876456-876457,876462-876464,876467,876469,876480,876486,876495-876497,876516-876518,876524,876526,876583,876601,876614-876615,876628,876633,876641,876645,876659,876687,876689,876705,876715,876726,876760,876763,876794,876804,876815-876816,876821,876825,876837,876840-876841,876843,876849,876857-876858,876862,876873,876890,876897,876905,876908,876925,876931,876934,876948-876949,876953,876987,876993,877011,877014,877016,877028-877029,877038,877119,877127,877146,877157,877191,877195,877203,877211,877230,877234,877237,877243,877249,877259,877261,877304,877319,877407,877437,877441-877442,877453,87745 9,877472,877544,877553,877565,877568,877573,877593,877595,877597,877601,877612,877665,877667,877681,877692,877696,877701,877720,877730,877784,877793,877797,877809,877814-877815,877819,877821,877842,877848,877853,877867,877869,877873,877901,877909,877916,877931,877942,877953,877964,877968,877970,877981-877982,878005,878013,878015,878020,878046,878053,878062,878074,878080,878089,878091,878093,878095,878127,878129,878131,878142,878173-878176,878216,878240,878242,878255,878269,878272,878279,878296-878297,878303,878321,878335,878338,878341,878343,878353,878364,878367-878368,878385,878399,878423,878426,878447,878462,878484,878491,878498,878532,878590,878595,878607,878625-878627,878646,878659,878673,878682-878683,878690-878691,878693,878723,878760-878761,878873,878875,878877,878879,878905,878910-878911,878915-878916,878924-878925,878946,878949,878955,878960,878970,878981,879001,879033,879056,879074,879076,879081-879082,879093,879105,879126,879148,879170,879198-879199,879201,879271, 879293,879357,879375-879376,879403,879631,879635-879636,879688,879709-879711,879747,879902,879916,879954,879961,879966,879971,880027,880082,880095,880105,880146,880162,880226,880274-880275,880370,880450,880461,880474,880525-880526,880552,881905,884842,886164,886197,888715,888979,889081,889840,891672,892050,892085,895514,895653,896522,896915,898048,898963,899826,899828,900797,901304,901752,902093,902467,904301,904394,904594,905303,905326,906256,906305,906587,907644,908980-908981,917523,917640,918211,922516,923389,923391,926151,926167,927323,927328,931209,931211,931392,931568,932942,933299,934599,934603,935631,935992,935996,937610,939000,939002,939375-939376,944635,945350,946355,946767,947006,948512,948916,949307,950931,950933,951753,952992,953317,955369,957507,958024,959004,959760,961055,961970,962377-962378,964167,964349,964767,965405,965469,965508,979045,979429,980811,981449,981921,984565,984928,984931,991534,992114,996884,997026,997070,997457,997466,997471,997474,138,1 60,1000607,1000612,1001009,1002094,1005446,1022675,1024269,1027957,1028084,1028108,1028125,1031165,1031186,1032808,1033166,1033290,1033665,1033685,1033921,1034557,1035745,1036429,1036534,1036978,1037762,1038792,1039040,1041438,1041638,1051632,1051638,1051733,1051744-1051745,1051751,1051761,1051763,1051775,1051778,1051968,1051978,1051988,1052029,1052041,1052068,1053185,1053208,1053233,1053499,1053984,1058269,1058722,1063572-1063573,1063592,1063870,1063946,1064839,1066249,1066270,1066276,1068988,1070912,1071239,1071307,1072084,1072953,1074572,1076730,1076759,1076826,1078954,1081255,1084575,1084581,1084764,1084962,1084978,1086222,1094692,1095654,1098608,1102803,1103665,1104309,1125983,1125998,1126007,1126810,1130303,1130448 +/subversion/trunk:875965,875968,876004,876012,876017,876019,876022,876024,876032,876041-876042,876048,876051,876055-876056,876059,876083,876091,876097,876101,876104,876109,876123-876125,876129,876132,876138,876160,876167,876175,876180,876185,876205,876223-876225,876230,876233,876245,876252,876256,876283,876287,876312,876326-876327,876330,876366,876372,876374,876376,876383,876386,876442,876456-876457,876462-876464,876467,876469,876480,876486,876495-876497,876516-876518,876524,876526,876583,876601,876614-876615,876628,876633,876641,876645,876659,876687,876689,876705,876715,876726,876760,876763,876794,876804,876815-
svn commit: r1151039 - /subversion/branches/1.7.x/STATUS
Author: philip Date: Tue Jul 26 09:31:48 2011 New Revision: 1151039 URL: http://svn.apache.org/viewvc?rev=1151039&view=rev Log: * STATUS: Propose issue 3972. Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1151039&r1=1151038&r2=1151039&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Tue Jul 26 09:31:48 2011 @@ -191,6 +191,13 @@ Candidate changes: Votes: +1: rhuijben, danielsh + * r1150812 + Issue 3972, spurious revert notification on symlinks + Justification: + A regression from 1.6. + Votes: + +1: philip + Veto-blocked changes: =
svn commit: r1151041 - /subversion/branches/1.7.x/STATUS
Author: stsp Date: Tue Jul 26 09:37:27 2011 New Revision: 1151041 URL: http://svn.apache.org/viewvc?rev=1151041&view=rev Log: * STATUS: Vote for r1150812. Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1151041&r1=1151040&r2=1151041&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Tue Jul 26 09:37:27 2011 @@ -196,7 +196,7 @@ Candidate changes: Justification: A regression from 1.6. Votes: - +1: philip + +1: philip, stsp Veto-blocked changes: =
svn commit: r1151044 - /subversion/trunk/subversion/libsvn_wc/info.c
Author: stsp Date: Tue Jul 26 09:45:40 2011 New Revision: 1151044 URL: http://svn.apache.org/viewvc?rev=1151044&view=rev Log: * subversion/libsvn_wc/info.c (build_info_for_entry): Remove obsolete comment line. The code pertaining to this was removed in r1132455. Patch by: Noorul Islam K M Modified: subversion/trunk/subversion/libsvn_wc/info.c Modified: subversion/trunk/subversion/libsvn_wc/info.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/info.c?rev=1151044&r1=1151043&r2=1151044&view=diff == --- subversion/trunk/subversion/libsvn_wc/info.c (original) +++ subversion/trunk/subversion/libsvn_wc/info.c Tue Jul 26 09:45:40 2011 @@ -285,8 +285,6 @@ build_info_for_node(svn_wc__info2_t **in tmpinfo->lock->creation_date = lock->date; } - /* ### Temporary hacks to keep our test suite happy: */ - *info = tmpinfo; return SVN_NO_ERROR; }
svn commit: r1151053 - in /subversion/trunk/subversion/libsvn_subr: auth.c gpg_agent.c
Author: stsp Date: Tue Jul 26 10:19:55 2011 New Revision: 1151053 URL: http://svn.apache.org/viewvc?rev=1151053&view=rev Log: * subversion/libsvn_subr/auth.c, subversion/libsvn_subr/gpg_agent.c: As per our coding style guidelines, change "space-before-paren" formatting to "no-space-before-paren". No functional change. Modified: subversion/trunk/subversion/libsvn_subr/auth.c subversion/trunk/subversion/libsvn_subr/gpg_agent.c Modified: subversion/trunk/subversion/libsvn_subr/auth.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/auth.c?rev=1151053&r1=1151052&r2=1151053&view=diff == --- subversion/trunk/subversion/libsvn_subr/auth.c (original) +++ subversion/trunk/subversion/libsvn_subr/auth.c Tue Jul 26 10:19:55 2011 @@ -382,11 +382,10 @@ svn_auth_ssl_server_cert_info_dup } svn_error_t * -svn_auth_get_platform_specific_provider - (svn_auth_provider_object_t **provider, - const char *provider_name, - const char *provider_type, - apr_pool_t *pool) +svn_auth_get_platform_specific_provider(svn_auth_provider_object_t **provider, +const char *provider_name, +const char *provider_type, +apr_pool_t *pool) { *provider = NULL; @@ -490,10 +489,9 @@ svn_auth_get_platform_specific_provider } svn_error_t * -svn_auth_get_platform_specific_client_providers - (apr_array_header_t **providers, - svn_config_t *config, - apr_pool_t *pool) +svn_auth_get_platform_specific_client_providers(apr_array_header_t **providers, +svn_config_t *config, +apr_pool_t *pool) { svn_auth_provider_object_t *provider; const char *password_stores_config_option; Modified: subversion/trunk/subversion/libsvn_subr/gpg_agent.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/gpg_agent.c?rev=1151053&r1=1151052&r2=1151053&view=diff == --- subversion/trunk/subversion/libsvn_subr/gpg_agent.c (original) +++ subversion/trunk/subversion/libsvn_subr/gpg_agent.c Tue Jul 26 10:19:55 2011 @@ -371,13 +371,12 @@ simple_gpg_agent_first_creds(void **cred const char *realmstring, apr_pool_t *pool) { - return svn_auth__simple_first_creds_helper - (credentials, -iter_baton, provider_baton, -parameters, realmstring, -password_get_gpg_agent, -SVN_AUTH__GPG_AGENT_PASSWORD_TYPE, -pool); + return svn_auth__simple_first_creds_helper(credentials, + iter_baton, provider_baton, + parameters, realmstring, + password_get_gpg_agent, + SVN_AUTH__GPG_AGENT_PASSWORD_TYPE, + pool); } @@ -390,13 +389,12 @@ simple_gpg_agent_save_creds(svn_boolean_ const char *realmstring, apr_pool_t *pool) { - return svn_auth__simple_save_creds_helper - (saved, credentials, -provider_baton, parameters, -realmstring, -password_set_gpg_agent, -SVN_AUTH__GPG_AGENT_PASSWORD_TYPE, -pool); + return svn_auth__simple_save_creds_helper(saved, credentials, +provider_baton, parameters, +realmstring, +password_set_gpg_agent, +SVN_AUTH__GPG_AGENT_PASSWORD_TYPE, +pool); } @@ -410,9 +408,8 @@ static const svn_auth_provider_t gpg_age /* Public API */ void -svn_auth_get_gpg_agent_simple_provider - (svn_auth_provider_object_t **provider, - apr_pool_t *pool) +svn_auth_get_gpg_agent_simple_provider(svn_auth_provider_object_t **provider, + apr_pool_t *pool) { svn_auth_provider_object_t *po = apr_pcalloc(pool, sizeof(*po));
svn commit: r1151055 - /subversion/trunk/build/generator/gen_win.py
Author: rhuijben Date: Tue Jul 26 10:21:39 2011 New Revision: 1151055 URL: http://svn.apache.org/viewvc?rev=1151055&view=rev Log: * build/generator/gen_win.py (get_win_libs, write_serf_project_file): Following up on r1148043 (and a fix in serf) dynamically generate serf library names based on the serf version. Modified: subversion/trunk/build/generator/gen_win.py Modified: subversion/trunk/build/generator/gen_win.py URL: http://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_win.py?rev=1151055&r1=1151054&r2=1151055&view=diff == --- subversion/trunk/build/generator/gen_win.py (original) +++ subversion/trunk/build/generator/gen_win.py Tue Jul 26 10:21:39 2011 @@ -1022,7 +1022,7 @@ class WinGeneratorBase(GeneratorBase): if self.serf_lib: if self.serf_ver_maj != 0: -serflib = 'serf-1.lib' +serflib = 'serf-%d.lib' % self.serf_ver_maj else: serflib = 'serf.lib' @@ -1182,7 +1182,7 @@ class WinGeneratorBase(GeneratorBase): serf_path = os.path.abspath(self.serf_path) if self.serf_ver_maj != 0: - serflib = 'serf-1.lib' + serflib = 'serf-%d.lib' % self.serf_ver_maj else: serflib = 'serf.lib'
svn commit: r1151068 - /subversion/trunk/subversion/libsvn_subr/cmdline.c
Author: stsp Date: Tue Jul 26 12:09:32 2011 New Revision: 1151068 URL: http://svn.apache.org/viewvc?rev=1151068&view=rev Log: * subversion/libsvn_subr/cmdline.c (svn_cmdline_create_auth_baton): Convert 'space-before-paren' formatting to 'no-space-before-paren' as per our coding style guidelines. Modified: subversion/trunk/subversion/libsvn_subr/cmdline.c Modified: subversion/trunk/subversion/libsvn_subr/cmdline.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/cmdline.c?rev=1151068&r1=1151067&r2=1151068&view=diff == --- subversion/trunk/subversion/libsvn_subr/cmdline.c (original) +++ subversion/trunk/subversion/libsvn_subr/cmdline.c Tue Jul 26 12:09:32 2011 @@ -459,8 +459,8 @@ svn_cmdline_create_auth_baton(svn_auth_b apr_array_header_t *providers; /* Populate the registered providers with the platform-specific providers */ - SVN_ERR(svn_auth_get_platform_specific_client_providers -(&providers, cfg, pool)); + SVN_ERR(svn_auth_get_platform_specific_client_providers(&providers, + cfg, pool)); /* If we have a cancellation function, cram it and the stuff it needs into the prompt baton. */
svn commit: r1151069 - /subversion/trunk/subversion/libsvn_subr/gpg_agent.c
Author: stsp Date: Tue Jul 26 12:11:05 2011 New Revision: 1151069 URL: http://svn.apache.org/viewvc?rev=1151069&view=rev Log: * subversion/libsvn_subr/gpg_agent.c: Add a comment that explains how this auth cache provider operates, including security considerations. Modified: subversion/trunk/subversion/libsvn_subr/gpg_agent.c Modified: subversion/trunk/subversion/libsvn_subr/gpg_agent.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/gpg_agent.c?rev=1151069&r1=1151068&r2=1151069&view=diff == --- subversion/trunk/subversion/libsvn_subr/gpg_agent.c (original) +++ subversion/trunk/subversion/libsvn_subr/gpg_agent.c Tue Jul 26 12:11:05 2011 @@ -23,6 +23,36 @@ /* */ +/* This auth provider stores a plaintext password in memory managed by + * a running gpg-agent. In contrast to other password store providers + * it does not save the password to disk. + * + * Prompting is performed by the gpg-agent using a "pinentry" program + * which needs to be installed separately. There are several pinentry + * implementations with different front-ends (e.g. qt, gtk, ncurses). + * + * The gpg-agent will let the password time out after a while, + * or immediately when it receives the SIGHUP signal. + * When the password has timed out it will automatically prompt the + * user for the password again. This is transparent to Subversion. + * + * SECURITY CONSIDERATIONS: + * + * Communication to the agent happens over a UNIX socket, which is located + * in a directory which only the user running Subversion can access. + * However, any program the user runs could access this socket and get + * the Subversion password if the program knows the "cache ID" Subversion + * uses for the password. + * The cache ID is very easy to obtain for programs running as the same user. + * Subversion uses the MD5 of the realmstring as cache ID, and these checksums + * are also used as filenames within ~/.subversion/auth/svn.simple. + * Unlike GNOME Keyring or KDE Wallet, the user is not prompted for + * permission if another program attempts to access the password. + * + * Therefore, while the gpg-agent is running and has the password cached, + * this provider is no more secure than a file storing the password in + * plaintext. + */ /*** Includes. ***/
svn commit: r1151073 - /subversion/trunk/subversion/libsvn_subr/gpg_agent.c
Author: stsp Date: Tue Jul 26 12:25:27 2011 New Revision: 1151073 URL: http://svn.apache.org/viewvc?rev=1151073&view=rev Log: * subversion/libsvn_subr/gpg_agent.c (password_set_gpg_agent): Fix typo in comment. (simple_gpg_agent_first_creds): Add docstring. simple_gpg_agent_save_creds): Change docstring. The old docstring was wrong because this provider does not encrypt anything. Modified: subversion/trunk/subversion/libsvn_subr/gpg_agent.c Modified: subversion/trunk/subversion/libsvn_subr/gpg_agent.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/gpg_agent.c?rev=1151073&r1=1151072&r2=1151073&view=diff == --- subversion/trunk/subversion/libsvn_subr/gpg_agent.c (original) +++ subversion/trunk/subversion/libsvn_subr/gpg_agent.c Tue Jul 26 12:25:27 2011 @@ -254,7 +254,7 @@ password_get_gpg_agent(const char **pass close(sd); return FALSE; } - /* The agent will terminate its reponse with "OK". */ + /* The agent will terminate its response with "OK". */ if (!receive_from_gpg_agent(sd, buffer, BUFFER_SIZE)) { close(sd); @@ -393,6 +393,7 @@ password_set_gpg_agent(apr_hash_t *creds } +/* An implementation of svn_auth_provider_t::first_credentials() */ static svn_error_t * simple_gpg_agent_first_creds(void **credentials, void **iter_baton, @@ -410,7 +411,7 @@ simple_gpg_agent_first_creds(void **cred } -/* Save encrypted credentials to the simple provider's cache. */ +/* An implementation of svn_auth_provider_t::save_credentials() */ static svn_error_t * simple_gpg_agent_save_creds(svn_boolean_t *saved, void *credentials,
svn propchange: r1150870 - svn:log
Author: stsp Revision: 1150870 Modified property: svn:log Modified: svn:log at Tue Jul 26 12:30:13 2011 -- --- svn:log (original) +++ svn:log Tue Jul 26 12:30:13 2011 @@ -1,5 +1,5 @@ * subversion/libsvn_auth_gpg_agent/gpg_agent.c (password_get_gpg_agent): Write the correct number of bytes to the socket when sending the GET_PASSPHRASE command. We used to send one - (random) byte too much, which the agent will interpret as the first + byte too much (a '\0'), which the agent will interpret as the first byte of the next command we send.
svn propchange: r1150728 - svn:log
Author: stsp Revision: 1150728 Modified property: svn:log Modified: svn:log at Tue Jul 26 12:31:33 2011 -- --- svn:log (original) +++ svn:log Tue Jul 26 12:31:33 2011 @@ -5,9 +5,9 @@ Change the password prompt to match the command line client and allow it to be internationalised. Also make the pinentry program ask for the password twice. -It is not easy for users to get rid of an invalid password once it is -in the agent's cache (the easiest way is probably to kill the agent). -Asking for the password twice makes such mistakes less likely. +Users must send SIGHUP to the agent to get rid of an invalid password once +it is in the agent's cache, which also invalidates any other chached +passphrases. Asking for the password twice makes such mistakes less likely. * subversion/libsvn_auth_gpg_agent/gpg_agent.c (escape_blanks): New helper functions to escape blanks in GPG-Agent
svn propchange: r1150841 - svn:log
Author: stsp Revision: 1150841 Modified property: svn:log Modified: svn:log at Tue Jul 26 12:34:58 2011 -- --- svn:log (original) +++ svn:log Tue Jul 26 12:34:58 2011 @@ -1,7 +1,7 @@ * subversion/libsvn_auth_gpg_agent/gpg_agent.c (password_get_gpg_agent): We can pass the full BUFFER_SIZE to receive_from_gpg_agent() and send_option() because they will - NUL-terminate. (Historically these were arguments to recv() and - send() which do not.) + NUL-terminate. (Historically these were arguments to recv() which + which does not NUL-terminate.) Found by: danielsh
svn commit: r1151100 - /subversion/site/publish/packages.html
Author: cmpilato Date: Tue Jul 26 14:00:13 2011 New Revision: 1151100 URL: http://svn.apache.org/viewvc?rev=1151100&view=rev Log: * site/publish/packages.html Add a reverse link to the Download Source Code page. Modified: subversion/site/publish/packages.html Modified: subversion/site/publish/packages.html URL: http://svn.apache.org/viewvc/subversion/site/publish/packages.html?rev=1151100&r1=1151099&r2=1151100&view=diff == --- subversion/site/publish/packages.html (original) +++ subversion/site/publish/packages.html Tue Jul 26 14:00:13 2011 @@ -51,10 +51,11 @@ mailing list. Note that binary packages usually come out about a week after the - corresponding source release. Please don't post to the mailing - lists asking when a binary package for a given platform will be - ready. The packagers already know when new source releases come - out, and work as fast as they can to make binaries available. + corresponding source release. Please + don't post to the mailing lists asking when a binary package for a + given platform will be ready. The packagers already know when new + source releases come out, and work as fast as they can to make + binaries available. AIX
svn commit: r1151157 - /subversion/branches/1.7.x/STATUS
Author: cmpilato Date: Tue Jul 26 16:23:23 2011 New Revision: 1151157 URL: http://svn.apache.org/viewvc?rev=1151157&view=rev Log: Vote for the r1147882 group, and clarify Bert's vote (per IRC). Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1151157&r1=1151156&r2=1151157&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Tue Jul 26 16:23:23 2011 @@ -42,27 +42,6 @@ Candidate changes: Votes: +0: danielsh - * r1147882, r1149343, r1149371, r1149372, r1149377, r1149398, r1149701, r1149713 - Validate consumer-supplied tokens in libsvn_fs. (This specifically applies - to the output of pre-lock hook scripts.) - Justification: - Input validations are good; arbitrary lock tokens are bad, and can result - in user-visible errors. - Notes: - r1147882 is reverted by r1149343. - r1149343 reverts r1147882 and adds new code, which r1149371 rewrites. - r1149371 is the change. - r1149372 improves an error message. - r1149377 is a typo fix. - r1149398 fixes the bindings. - r1149701 marks the test XFail for serf - r1149713 correctly reports lock warnings and removes the XFail - Votes: - +1: danielsh - +1: cmpilato (without r1149701, r1149713) - +1: rhuijben (Without r1149701, r1149713 the behavior differs between the - different ra layers and the tests fail on serf) - * r1147540, r1147541 Remove unused variables in build system. Justification: @@ -212,3 +191,22 @@ Veto-blocked changes: Approved changes: = + + * r1147882, r1149343, r1149371, r1149372, r1149377, r1149398, r1149701, r1149713 + Validate consumer-supplied tokens in libsvn_fs. (This specifically applies + to the output of pre-lock hook scripts.) + Justification: + Input validations are good; arbitrary lock tokens are bad, and can result + in user-visible errors. + Notes: + r1147882 is reverted by r1149343. + r1149343 reverts r1147882 and adds new code, which r1149371 rewrites. + r1149371 is the change. + r1149372 improves an error message. + r1149377 is a typo fix. + r1149398 fixes the bindings. + r1149701 marks the test XFail for serf + r1149713 correctly reports lock warnings and removes the XFail + Votes: + +1: danielsh, cmpilato, rhuijben +
svn commit: r1151160 - /subversion/branches/1.7.x/STATUS
Author: cmpilato Date: Tue Jul 26 16:29:02 2011 New Revision: 1151160 URL: http://svn.apache.org/viewvc?rev=1151160&view=rev Log: Vote for the r1150302, approving. Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1151160&r1=1151159&r2=1151160&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Tue Jul 26 16:29:02 2011 @@ -106,15 +106,6 @@ Candidate changes: Votes: +1: rhuijben - * r1150302 - Avoid closing fs txns multiple times. - Justification: - We should follow our own api documentation. - Notes: - This error is invisible to users without the r1150254 group. - Votes: - +1: rhuijben, danielsh - * r1150327 Report not finding txn roots produce a 404 error in mod_dav_svn. Justification: @@ -210,3 +201,11 @@ Approved changes: Votes: +1: danielsh, cmpilato, rhuijben + * r1150302 + Avoid closing fs txns multiple times. + Justification: + We should follow our own api documentation. + Notes: + This error is invisible to users without the r1150254 group. + Votes: + +1: rhuijben, danielsh, cmpilato
svn commit: r1151161 - /subversion/branches/1.7.x/STATUS
Author: cmpilato Date: Tue Jul 26 16:38:20 2011 New Revision: 1151161 URL: http://svn.apache.org/viewvc?rev=1151161&view=rev Log: Shorten a long line. Yawn. Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1151161&r1=1151160&r2=1151161&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Tue Jul 26 16:38:20 2011 @@ -138,7 +138,7 @@ Candidate changes: on a server. And locks (the needle file) should be released as soon as possible. Notes: - rhuijben: This problem triggered my weekend search for locked files. problems + rhuijben: This bug triggered my weekend search for locked files problems. Votes: +1: rhuijben +0: danielsh (we shouldn't depend on libsvn_client fixes to avoid
svn commit: r1151165 - in /subversion/branches/1.7.x: ./ STATUS subversion/bindings/swig/perl/native/t/8lock.t subversion/include/svn_error.h subversion/libsvn_fs/fs-loader.c subversion/libsvn_repos/h
Author: hwright Date: Tue Jul 26 16:48:50 2011 New Revision: 1151165 URL: http://svn.apache.org/viewvc?rev=1151165&view=rev Log: Merge r1147882, r1149343, r1149371, r1149372, r1149377, r1149398, r1149701, r1149713 from trunk: * r1147882, r1149343, r1149371, r1149372, r1149377, r1149398, r1149701, r1149713 Validate consumer-supplied tokens in libsvn_fs. (This specifically applies to the output of pre-lock hook scripts.) Justification: Input validations are good; arbitrary lock tokens are bad, and can result in user-visible errors. Notes: r1147882 is reverted by r1149343. r1149343 reverts r1147882 and adds new code, which r1149371 rewrites. r1149371 is the change. r1149372 improves an error message. r1149377 is a typo fix. r1149398 fixes the bindings. r1149701 marks the test XFail for serf r1149713 correctly reports lock warnings and removes the XFail Votes: +1: danielsh, cmpilato, rhuijben Modified: subversion/branches/1.7.x/ (props changed) subversion/branches/1.7.x/STATUS subversion/branches/1.7.x/subversion/bindings/swig/perl/native/t/8lock.t subversion/branches/1.7.x/subversion/include/svn_error.h subversion/branches/1.7.x/subversion/libsvn_fs/fs-loader.c subversion/branches/1.7.x/subversion/libsvn_repos/hooks.c subversion/branches/1.7.x/subversion/tests/cmdline/lock_tests.py Propchange: subversion/branches/1.7.x/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Jul 26 16:48:50 2011 @@ -54,4 +54,4 @@ /subversion/branches/tree-conflicts:868291-873154 /subversion/branches/tree-conflicts-notify:873926-874008 /subversion/branches/uris-as-urls:1060426-1064427 -/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147309,1148071,1148131,1148374,1148424,1148566,1148588,1148853,1148877,1148882,1148936,1149105,1149141,1149160,1149228,1149240,1149572,1149675,1151036 +/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147309,1147882,1148071,1148131,1148374,1148424,1148566,1148588,1148853,1148877,1148882,1148936,1149105,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149572,1149675,1149701,1149713,1151036 Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1151165&r1=1151164&r2=1151165&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Tue Jul 26 16:48:50 2011 @@ -183,24 +183,6 @@ Veto-blocked changes: Approved changes: = - * r1147882, r1149343, r1149371, r1149372, r1149377, r1149398, r1149701, r1149713 - Validate consumer-supplied tokens in libsvn_fs. (This specifically applies - to the output of pre-lock hook scripts.) - Justification: - Input validations are good; arbitrary lock tokens are bad, and can result - in user-visible errors. - Notes: - r1147882 is reverted by r1149343. - r1149343 reverts r1147882 and adds new code, which r1149371 rewrites. - r1149371 is the change. - r1149372 improves an error message. - r1149377 is a typo fix. - r1149398 fixes the bindings. - r1149701 marks the test XFail for serf - r1149713 correctly reports lock warnings and removes the XFail - Votes: - +1: danielsh, cmpilato, rhuijben - * r1150302 Avoid closing fs txns multiple times. Justification: Modified: subversion/branches/1.7.x/subversion/bindings/swig/perl/native/t/8lock.t URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/bindings/swig/perl/native/t/8lock.t?rev=1151165&r1=1151164&r2=1151165&view=diff == --- subversion/branches/1.7.x/subversion/bindings/swig/perl/native/t/8lock.t (original) +++ subversion/branches/1.7.x/subversion/bindings/swig/perl/native/t/8lock.t Tue Jul 26 16:48:50 2011 @@ -54,10 +54,12 @@ print $stream 'orz'; } $txn->commit; -$fs->lock('/testfile', 'hate software', 'we hate software', 0, 0, $fs->youngest_rev, 0); +my $token = "opaquelocktoken:notauuid-$$"; + +$fs->lock('/testfile', $token, 'we hate software', 0, 0, $fs->youngest_rev, 0); ok(my $lock = $fs->get_lock('/testfile')); -is($lock->token, 'hate software'); +is($lock->token, $token); is($lock->owner, 'foo'); $acc = SVN::Fs::create_access('fnord'); @@ -65,7 +67,7 @@ is($acc->get_username, 'fnord'); $fs->set_access($acc); eval { -$fs->lock('/testfile', 'hate software', 'we hate software', 0, 0, $fs->youngest_rev, 0); +$fs->lock('/testfile', $token, 'we hate software', 0, 0, $fs->youngest_rev, 0); }; like($@, qr/already locked/); Modified: subver
svn commit: r1151166 - in /subversion/trunk/subversion: include/private/svn_wc_private.h libsvn_wc/adm_ops.c libsvn_wc/copy.c libsvn_wc/update_editor.c libsvn_wc/wc-queries.sql libsvn_wc/wc_db.c libsv
Author: stsp Date: Tue Jul 26 16:51:23 2011 New Revision: 1151166 URL: http://svn.apache.org/viewvc?rev=1151166&view=rev Log: Record moved-to information at the delete-half of a move. * subversion/include/private/svn_wc_private.h (svn_wc__delete_internal): Declare. * subversion/libsvn_wc/adm_ops.c (svn_wc__delete_internal): New. This is like svn_wc_delete4() but has one additional parameter MOVED_TO_ABSPATH. If not NULL, this indicates that the delete is the delete-half of a move. (svn_wc_delete4): Reimplement as a wrapper around svn_wc__delete_internal(). * subversion/libsvn_wc/wc-queries.sql (STMT_INSERT_DELETE_FROM_NODE_RECURSIVE): Adjust to only insert children of the node being deleted. (STMT_INSERT_DELETE_NODE): New. This statement deletes a single node, and allows populating the moved_to column in NODES. * subversion/libsvn_wc/copy.c (svn_wc_move): Call svn_wc__delete_internal() with a MOVED_TO_ABSPATH instead of calling svn_wc_delete4(). * subversion/libsvn_wc/wc_db.c (op_delete_baton_t): Add new field MOVED_TO_RELPATH. (op_delete_txn): Use STMT_INSERT_DELETE_NODE to delete LOCAL_ABSPATH itself, and possibly mark LOCAL_ABSPATH has having been moved elsewhere. Use STMT_INSERT_DELETE_FROM_NODE_RECURSIVE to delete children of LOCAL_ABSPATH (before, this statement was also used to delete LOCAL_ABSPATH itself). (svn_wc__db_op_delete): New parameter MOVED_TO_ABSPATH. Convert this to a relpath and put that into the op_delete baton. (scan_deletion_txn): Update a comment that referred to the BASE_NODE table. This is now called NODES_BASE in the query this code is evaluating. * subversion/libsvn_wc/wc_db.h (svn_wc__db_op_delete): Add MOVED_TO_ABSPATH parameter and update docstring. * subversion/tests/libsvn_wc/op-depth-test.c, subversion/libsvn_wc/update_editor.c (do_delete, add_directory): Adjust calls to svn_wc__db_op_delete(). Modified: subversion/trunk/subversion/include/private/svn_wc_private.h subversion/trunk/subversion/libsvn_wc/adm_ops.c subversion/trunk/subversion/libsvn_wc/copy.c subversion/trunk/subversion/libsvn_wc/update_editor.c subversion/trunk/subversion/libsvn_wc/wc-queries.sql subversion/trunk/subversion/libsvn_wc/wc_db.c subversion/trunk/subversion/libsvn_wc/wc_db.h subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c Modified: subversion/trunk/subversion/include/private/svn_wc_private.h URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_wc_private.h?rev=1151166&r1=1151165&r2=1151166&view=diff == --- subversion/trunk/subversion/include/private/svn_wc_private.h (original) +++ subversion/trunk/subversion/include/private/svn_wc_private.h Tue Jul 26 16:51:23 2011 @@ -1096,6 +1096,21 @@ svn_wc__get_info(svn_wc_context_t *wc_ct void *cancel_baton, apr_pool_t *scratch_pool); +/* Internal version of svn_wc_delete4(). It has one additional parameter, + * MOVED_TO_ABSPATH. If not NULL, this parameter indicates that the + * delete operation is the delete-half of a move. */ +svn_error_t * +svn_wc__delete_internal(svn_wc_context_t *wc_ctx, +const char *local_abspath, +svn_boolean_t keep_local, +svn_boolean_t delete_unversioned_target, +const char *moved_to_abspath, +svn_cancel_func_t cancel_func, +void *cancel_baton, +svn_wc_notify_func2_t notify_func, +void *notify_baton, +apr_pool_t *scratch_pool); + #ifdef __cplusplus } #endif /* __cplusplus */ Modified: subversion/trunk/subversion/libsvn_wc/adm_ops.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_ops.c?rev=1151166&r1=1151165&r2=1151166&view=diff == --- subversion/trunk/subversion/libsvn_wc/adm_ops.c (original) +++ subversion/trunk/subversion/libsvn_wc/adm_ops.c Tue Jul 26 16:51:23 2011 @@ -595,15 +595,16 @@ erase_unversioned_from_wc(const char *pa svn_error_t * -svn_wc_delete4(svn_wc_context_t *wc_ctx, - const char *local_abspath, - svn_boolean_t keep_local, - svn_boolean_t delete_unversioned_target, - svn_cancel_func_t cancel_func, - void *cancel_baton, - svn_wc_notify_func2_t notify_func, - void *notify_baton, - apr_pool_t *scratch_pool) +svn_wc__delete_internal(svn_wc_context_t *wc_ctx, +const char *local_abspath, +svn_boolean_t keep_local, +svn_boolean_t delete_unversioned_target, +const char *moved_to_abspath, +svn_cancel_func_t cancel_fu
svn commit: r1151169 - /subversion/branches/1.7.x/STATUS
Author: hwright Date: Tue Jul 26 16:53:18 2011 New Revision: 1151169 URL: http://svn.apache.org/viewvc?rev=1151169&view=rev Log: * STATUS: Add a note to the r1150302 group. Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1151169&r1=1151168&r2=1151169&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Tue Jul 26 16:53:18 2011 @@ -188,6 +188,7 @@ Approved changes: Justification: We should follow our own api documentation. Notes: - This error is invisible to users without the r1150254 group. + This error is invisible to users without the r1150254 group (upon which + this revision depends for a clean merge). Votes: +1: rhuijben, danielsh, cmpilato
svn commit: r1151177 - in /subversion/trunk/subversion/libsvn_ra_serf: ra_serf.h serf.c update.c util.c
Author: ivan Date: Tue Jul 26 17:14:10 2011 New Revision: 1151177 URL: http://svn.apache.org/viewvc?rev=1151177&view=rev Log: Fix two bugs in ra_serf when connecting to HTTPS repository hosted on non-standard port. 1. ra_serf complains that server certificate doesn't match hostname. 2. XML parsing failed: (400 Bad Request) error when working with SNI enabled server. http://svn.haxx.se/users/archive-2011-07/0404.shtml * subversion/libsvn_ra_serf/ra_serf.h (svn_ra_serf__connection_t): Rename HOSTINFO to HOSTNAME. * subversion/libsvn_ra_serf/serf.c (svn_ra_serf__open): Store hostname in connection object, not hostinfo. * subversion/libsvn_ra_serf/update.c (open_connection_if_needed): Update to reflect rename. * subversion/libsvn_ra_serf/util.c (ssl_server_cert): Use hostname for validating SSL certificate. (conn_setup): Pass hostname to serf_ssl_set_hostname(). Modified: subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h subversion/trunk/subversion/libsvn_ra_serf/serf.c subversion/trunk/subversion/libsvn_ra_serf/update.c subversion/trunk/subversion/libsvn_ra_serf/util.c Modified: subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h?rev=1151177&r1=1151176&r2=1151177&view=diff == --- subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h (original) +++ subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h Tue Jul 26 17:14:10 2011 @@ -74,7 +74,7 @@ typedef struct svn_ra_serf__connection_t serf_bucket_alloc_t *bkt_alloc; /* Host name */ - const char *hostinfo; + const char *hostname; /* Are we using ssl */ svn_boolean_t using_ssl; Modified: subversion/trunk/subversion/libsvn_ra_serf/serf.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/serf.c?rev=1151177&r1=1151176&r2=1151177&view=diff == --- subversion/trunk/subversion/libsvn_ra_serf/serf.c (original) +++ subversion/trunk/subversion/libsvn_ra_serf/serf.c Tue Jul 26 17:14:10 2011 @@ -402,7 +402,7 @@ svn_ra_serf__open(svn_ra_session_t *sess serf_sess->conns[0]->using_ssl = serf_sess->using_ssl; serf_sess->conns[0]->using_compression = serf_sess->using_compression; - serf_sess->conns[0]->hostinfo = url.hostinfo; + serf_sess->conns[0]->hostname = url.hostname; serf_sess->conns[0]->useragent = NULL; /* create the user agent string */ Modified: subversion/trunk/subversion/libsvn_ra_serf/update.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/update.c?rev=1151177&r1=1151176&r2=1151177&view=diff == --- subversion/trunk/subversion/libsvn_ra_serf/update.c (original) +++ subversion/trunk/subversion/libsvn_ra_serf/update.c Tue Jul 26 17:14:10 2011 @@ -2214,7 +2214,7 @@ open_connection_if_needed(svn_ra_serf__s sess->conns[cur] = apr_palloc(sess->pool, sizeof(*sess->conns[cur])); sess->conns[cur]->bkt_alloc = serf_bucket_allocator_create(sess->pool, NULL, NULL); - sess->conns[cur]->hostinfo = sess->conns[0]->hostinfo; + sess->conns[cur]->hostname = sess->conns[0]->hostname; sess->conns[cur]->using_ssl = sess->conns[0]->using_ssl; sess->conns[cur]->using_compression = sess->conns[0]->using_compression; sess->conns[cur]->useragent = sess->conns[0]->useragent; Modified: subversion/trunk/subversion/libsvn_ra_serf/util.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/util.c?rev=1151177&r1=1151176&r2=1151177&view=diff == --- subversion/trunk/subversion/libsvn_ra_serf/util.c (original) +++ subversion/trunk/subversion/libsvn_ra_serf/util.c Tue Jul 26 17:14:10 2011 @@ -302,7 +302,7 @@ ssl_server_cert(void *baton, int failure int i; for (i = 0; i < san->nelts; i++) { char *s = APR_ARRAY_IDX(san, i, char*); - if (apr_fnmatch(s, conn->hostinfo, + if (apr_fnmatch(s, conn->hostname, APR_FNM_PERIOD) == APR_SUCCESS) { found_matching_hostname = 1; cert_info.hostname = s; @@ -314,7 +314,7 @@ ssl_server_cert(void *baton, int failure /* Match server certificate CN with the hostname of the server */ if (!found_matching_hostname && cert_info.hostname) { - if (apr_fnmatch(cert_info.hostname, conn->hostinfo, + if (apr_fnmatch(cert_info.hostname, conn->hostname, APR_FNM_PERIOD) == APR_FNM_NOMATCH) { svn_failures |= SVN_AUTH_SSL_CNMISMATCH; @@ -428,7 +428,7 @@ conn_setup(apr_socket_t *sock, conn->ssl_context = serf_bucket_ssl_encrypt_context_get(*read_bkt); #if SER
svn commit: r1151179 - /subversion/branches/1.7.x/STATUS
Author: ivan Date: Tue Jul 26 17:21:27 2011 New Revision: 1151179 URL: http://svn.apache.org/viewvc?rev=1151179&view=rev Log: * STATUS: Nominate r1151177. Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1151179&r1=1151178&r2=1151179&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Tue Jul 26 17:21:27 2011 @@ -168,6 +168,19 @@ Candidate changes: Votes: +1: philip, stsp +* r1151177 + Fix two bugs in ra_serf when connecting to HTTPS repository hosted on + non-standard port. + 1. ra_serf complains that server certificate doesn't match hostname. + 2. XML parsing failed: (400 Bad Request) error when working with SNI + enabled server. + http://svn.haxx.se/users/archive-2011-07/0404.shtml + Justification: + Users are unable to use repositories over HTTPS protocol hosted on + non-standard TCP port. + Votes: + +1: ivan + Veto-blocked changes: =
svn commit: r1151183 - /subversion/branches/1.7.x/STATUS
Author: rhuijben Date: Tue Jul 26 17:28:58 2011 New Revision: 1151183 URL: http://svn.apache.org/viewvc?rev=1151183&view=rev Log: * STATUS: Cast vote. Modified: subversion/branches/1.7.x/STATUS Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1151183&r1=1151182&r2=1151183&view=diff == --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Tue Jul 26 17:28:58 2011 @@ -179,7 +179,7 @@ Candidate changes: Users are unable to use repositories over HTTPS protocol hosted on non-standard TCP port. Votes: - +1: ivan + +1: ivan, rhuijben Veto-blocked changes: =
svn commit: r1151239 - /subversion/trunk/tools/dist/collect_sigs.py
Author: hwright Date: Tue Jul 26 20:51:14 2011 New Revision: 1151239 URL: http://svn.apache.org/viewvc?rev=1151239&view=rev Log: * tools/dist/collect_sigs.py (save_valid_sig): Due to security concerns on the target box, don't attempt to autocopy the signatures as they are collected. Modified: subversion/trunk/tools/dist/collect_sigs.py Modified: subversion/trunk/tools/dist/collect_sigs.py URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/collect_sigs.py?rev=1151239&r1=1151238&r2=1151239&view=diff == --- subversion/trunk/tools/dist/collect_sigs.py (original) +++ subversion/trunk/tools/dist/collect_sigs.py Tue Jul 26 20:51:14 2011 @@ -199,24 +199,6 @@ def save_valid_sig(db, filename, keyid, generate_asc_files(config.sigdir) - # Attempt to copy the results to a remote location - try: -import paramiko - -client = paramiko.SSHClient() -client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) -client.connect(config.ssh['host'], username = config.ssh['user'], - key_filename = config.ssh['key']) -sftp = client.open_sftp() - -sftp.put(os.path.join(config.sigdir, filename + '.asc'), - os.path.join(config.ssh['dir'], config.version, 'deploy', - filename + '.asc')) -client.close() - except: -# Ignore any errors -pass - def verify_sig_for_file(signature, filename): args = ['gpg', '--logger-fd', '1', '--no-tty', '--status-fd', '2', '--verify', '-',
svn commit: r1151244 - /subversion/trunk/tools/dist/release.py
Author: hwright Date: Tue Jul 26 21:04:41 2011 New Revision: 1151244 URL: http://svn.apache.org/viewvc?rev=1151244&view=rev Log: release.py: Add a couple of defaults in the parser, rather than a subcommand handler. * tools/dist/release.py (post_candidates): Use the provided args directly. (main): Provide default values for a couple of arguments here. Modified: subversion/trunk/tools/dist/release.py Modified: subversion/trunk/tools/dist/release.py URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/release.py?rev=1151244&r1=1151243&r2=1151244&view=diff == --- subversion/trunk/tools/dist/release.py (original) +++ subversion/trunk/tools/dist/release.py Tue Jul 26 21:04:41 2011 @@ -442,19 +442,8 @@ def roll_tarballs(args): def post_candidates(args): 'Post the generated tarballs to web-accessible directory.' -if args.target: -target = args.target -else: -target = os.path.join(os.getenv('HOME'), 'public_html', 'svn', - str(args.version)) - -if args.code_name: -dirname = args.code_name -else: -dirname = 'deploy' - -if not os.path.exists(target): -os.makedirs(target) +if not os.path.exists(args.target): +os.makedirs(args.target) data = { 'version' : str(args.version), 'revnum' : args.revnum, @@ -472,12 +461,13 @@ def post_candidates(args): template = ezt.Template() template.parse(get_tmplfile(template_filename).read()) -template.generate(open(os.path.join(target, 'index.html'), 'w'), data) +template.generate(open(os.path.join(args.target, 'index.html'), 'w'), data) -logging.info('Moving tarballs to %s' % os.path.join(target, dirname)) -if os.path.exists(os.path.join(target, dirname)): -shutil.rmtree(os.path.join(target, dirname)) -shutil.copytree(get_deploydir(args.base_dir), os.path.join(target, dirname)) +logging.info('Moving tarballs to %s' % os.path.join(args.target, dirname)) +if os.path.exists(os.path.join(args.target, dirname)): +shutil.rmtree(os.path.join(args.target, dirname)) +shutil.copytree(get_deploydir(args.base_dir), +os.path.join(args.target, dirname)) #-- @@ -624,10 +614,13 @@ def main(): subparser.add_argument('revnum', type=int, help='''The revision number to base the release on.''') subparser.add_argument('--target', -help='''The full path to the destination.''') +help='''The full path to the destination.''', +default=os.path.join(os.getenv('HOME'), 'public_html', + 'svn', str(args.version))) subparser.add_argument('--code-name', help='''A whimsical name for the release, used only for -naming the download directory.''') +naming the download directory.''', +default='deploy') # The clean-dist subcommand subparser = subparsers.add_parser('clean-dist',
svn commit: r1151247 - /subversion/trunk/tools/dist/release.py
Author: hwright Date: Tue Jul 26 21:07:53 2011 New Revision: 1151247 URL: http://svn.apache.org/viewvc?rev=1151247&view=rev Log: * sigh * Revert r1151244. (One of the defaults used the value of another param, which causes problems.) Modified: subversion/trunk/tools/dist/release.py Modified: subversion/trunk/tools/dist/release.py URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/release.py?rev=1151247&r1=1151246&r2=1151247&view=diff == --- subversion/trunk/tools/dist/release.py (original) +++ subversion/trunk/tools/dist/release.py Tue Jul 26 21:07:53 2011 @@ -442,8 +442,19 @@ def roll_tarballs(args): def post_candidates(args): 'Post the generated tarballs to web-accessible directory.' -if not os.path.exists(args.target): -os.makedirs(args.target) +if args.target: +target = args.target +else: +target = os.path.join(os.getenv('HOME'), 'public_html', 'svn', + str(args.version)) + +if args.code_name: +dirname = args.code_name +else: +dirname = 'deploy' + +if not os.path.exists(target): +os.makedirs(target) data = { 'version' : str(args.version), 'revnum' : args.revnum, @@ -461,13 +472,12 @@ def post_candidates(args): template = ezt.Template() template.parse(get_tmplfile(template_filename).read()) -template.generate(open(os.path.join(args.target, 'index.html'), 'w'), data) +template.generate(open(os.path.join(target, 'index.html'), 'w'), data) -logging.info('Moving tarballs to %s' % os.path.join(args.target, dirname)) -if os.path.exists(os.path.join(args.target, dirname)): -shutil.rmtree(os.path.join(args.target, dirname)) -shutil.copytree(get_deploydir(args.base_dir), -os.path.join(args.target, dirname)) +logging.info('Moving tarballs to %s' % os.path.join(target, dirname)) +if os.path.exists(os.path.join(target, dirname)): +shutil.rmtree(os.path.join(target, dirname)) +shutil.copytree(get_deploydir(args.base_dir), os.path.join(target, dirname)) #-- @@ -614,13 +624,10 @@ def main(): subparser.add_argument('revnum', type=int, help='''The revision number to base the release on.''') subparser.add_argument('--target', -help='''The full path to the destination.''', -default=os.path.join(os.getenv('HOME'), 'public_html', - 'svn', str(args.version))) +help='''The full path to the destination.''') subparser.add_argument('--code-name', help='''A whimsical name for the release, used only for -naming the download directory.''', -default='deploy') +naming the download directory.''') # The clean-dist subcommand subparser = subparsers.add_parser('clean-dist',
svn propchange: r1151244 - svn:log
Author: hwright Revision: 1151244 Modified property: svn:log Modified: svn:log at Tue Jul 26 21:08:16 2011 -- --- svn:log (original) +++ svn:log Tue Jul 26 21:08:16 2011 @@ -4,3 +4,5 @@ subcommand handler. * tools/dist/release.py (post_candidates): Use the provided args directly. (main): Provide default values for a couple of arguments here. + +[ reverted in r1151247 ]
svn commit: r1151254 - in /subversion/trunk/tools/dist: getsigs.py release.py
Author: hwright Date: Tue Jul 26 21:18:17 2011 New Revision: 1151254 URL: http://svn.apache.org/viewvc?rev=1151254&view=rev Log: release.py: Move the signature checking capability into release.py. This will be revamped shortly. * tools/dist/release.py (grab_sig_ids, generate_output, check_sigs): New. (main): Add a parser for the check-sigs target. * tools/dist/getsigs.py: Remove. Removed: subversion/trunk/tools/dist/getsigs.py Modified: subversion/trunk/tools/dist/release.py Modified: subversion/trunk/tools/dist/release.py URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/release.py?rev=1151254&r1=1151253&r2=1151254&view=diff == --- subversion/trunk/tools/dist/release.py (original) +++ subversion/trunk/tools/dist/release.py Tue Jul 26 21:18:17 2011 @@ -571,6 +571,77 @@ def write_announcement(args): #-- +# Validate the signatures for a release + +key_start = '-BEGIN PGP SIGNATURE-\n' +sig_pattern = re.compile(r'^gpg: Signature made .*? using \w+ key ID (\w+)') +fp_pattern = re.compile(r'^pub\s+(\w+\/\w+)[^\n]*\n\s+Key\sfingerprint\s=((\s+[0-9A-F]{4}){10})\nuid\s+([^<\(]+)\s') + +def grab_sig_ids(args): +if args.target: +target = args.target +else: +target = os.path.join(os.getenv('HOME'), 'public_html', 'svn', + str(args.version), 'deploy') + +good_sigs = {} + +for filename in glob.glob(os.path.join(target, 'subversion-*.asc')): +shutil.copyfile(filename, '%s.bak' % filename) +text = open(filename).read() +keys = text.split(key_start) + +for key in keys[1:]: +open(filename, 'w').write(key_start + key) +gpg = subprocess.Popen(['gpg', '--logger-fd', '1', +'--verify', filename], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + +rc = gpg.wait() +output = gpg.stdout.read() +if rc: +# gpg choked, die with an error +print(output) +sys.stderr.write("BAD SIGNATURE in %s\n" % filename) +shutil.move('%s.bak' % filename, filename) +sys.exit(1) + +for line in output.split('\n'): +match = sig_pattern.match(line) +if match: +key_id = match.groups()[0] +good_sigs[key_id] = True + +shutil.move('%s.bak' % filename, filename) + +return good_sigs + +def generate_output(good_sigs): +for id in good_sigs.keys(): +gpg = subprocess.Popen(['gpg', '--fingerprint', id], + stdout=subprocess.PIPE, stderr=subprocess.STDOUT) +rc = gpg.wait() +gpg_output = gpg.stdout.read() +if rc: +print(gpg_output) +sys.stderr.write("UNABLE TO GET FINGERPRINT FOR %s" % id) +sys.exit(1) + +gpg_output = "\n".join([ l for l in gpg_output.splitlines() + if l[0:7] != 'Warning' ]) + +fp = fp_pattern.match(gpg_output).groups() +print(" %s [%s] with fingerprint:" % (fp[3], fp[0])) +print(" %s" % fp[1]) + +def check_sigs(args): +'Check the signatures for the release.' + +generate_output(grab_sig_ids(args)) + + +#-- # Main entry point for argument parsing and handling def main(): @@ -654,6 +725,17 @@ def main(): subparser.add_argument('version', type=Version, help='''The release label, such as '1.7.0-alpha1'.''') +# The check sigs subcommand +subparser = subparsers.add_parser('check-sigs', +help='''Output to stdout the signatures collected for this +release''') +subparser.set_defaults(func=check_sigs) +subparser.add_argument('version', type=Version, +help='''The release label, such as '1.7.0-alpha1'.''') +subparser.add_argument('--target', +help='''The full path to the destination used in +'post-candiates'..''') + # A meta-target subparser = subparsers.add_parser('clean', help='''The same as the '--clean' switch, but as a
svn commit: r1151260 - /subversion/trunk/subversion/libsvn_wc/adm_ops.c
Author: stsp Date: Tue Jul 26 21:45:36 2011 New Revision: 1151260 URL: http://svn.apache.org/viewvc?rev=1151260&view=rev Log: Rename the new_revert_* functions to just revert_*. It is confusing to have functions called new_something when the old implementation is already obsolete (as of r1088811). * subversion/libsvn_wc/adm_ops.c (new_revert_internal, new_revert_changelist, new_revert_partial): Rename to ... (revert_internal, revert_changelist, revert_partial): ... these, respectively. (svn_wc_revert4): Update caller. Modified: subversion/trunk/subversion/libsvn_wc/adm_ops.c Modified: subversion/trunk/subversion/libsvn_wc/adm_ops.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_ops.c?rev=1151260&r1=1151259&r2=1151260&view=diff == --- subversion/trunk/subversion/libsvn_wc/adm_ops.c (original) +++ subversion/trunk/subversion/libsvn_wc/adm_ops.c Tue Jul 26 21:45:36 2011 @@ -1602,15 +1602,15 @@ revert_restore(svn_wc__db_t *db, /* Revert tree LOCAL_ABSPATH to depth DEPTH and notify for all reverts. */ static svn_error_t * -new_revert_internal(svn_wc__db_t *db, -const char *local_abspath, -svn_depth_t depth, -svn_boolean_t use_commit_times, -svn_cancel_func_t cancel_func, -void *cancel_baton, -svn_wc_notify_func2_t notify_func, -void *notify_baton, -apr_pool_t *scratch_pool) +revert_internal(svn_wc__db_t *db, +const char *local_abspath, +svn_depth_t depth, +svn_boolean_t use_commit_times, +svn_cancel_func_t cancel_func, +void *cancel_baton, +svn_wc_notify_func2_t notify_func, +void *notify_baton, +apr_pool_t *scratch_pool) { svn_error_t *err; @@ -1652,16 +1652,16 @@ new_revert_internal(svn_wc__db_t *db, /* Revert files in LOCAL_ABSPATH to depth DEPTH that match CHANGELIST_HASH and notify for all reverts. */ static svn_error_t * -new_revert_changelist(svn_wc__db_t *db, - const char *local_abspath, - svn_depth_t depth, - svn_boolean_t use_commit_times, - apr_hash_t *changelist_hash, - svn_cancel_func_t cancel_func, - void *cancel_baton, - svn_wc_notify_func2_t notify_func, - void *notify_baton, - apr_pool_t *scratch_pool) +revert_changelist(svn_wc__db_t *db, + const char *local_abspath, + svn_depth_t depth, + svn_boolean_t use_commit_times, + apr_hash_t *changelist_hash, + svn_cancel_func_t cancel_func, + void *cancel_baton, + svn_wc_notify_func2_t notify_func, + void *notify_baton, + apr_pool_t *scratch_pool) { apr_pool_t *iterpool; const apr_array_header_t *children; @@ -1673,11 +1673,11 @@ new_revert_changelist(svn_wc__db_t *db, /* Revert this node (depth=empty) if it matches one of the changelists. */ if (svn_wc__internal_changelist_match(db, local_abspath, changelist_hash, scratch_pool)) -SVN_ERR(new_revert_internal(db, local_abspath, -svn_depth_empty, use_commit_times, -cancel_func, cancel_baton, -notify_func, notify_baton, -scratch_pool)); +SVN_ERR(revert_internal(db, local_abspath, +svn_depth_empty, use_commit_times, +cancel_func, cancel_baton, +notify_func, notify_baton, +scratch_pool)); if (depth == svn_depth_empty) return SVN_NO_ERROR; @@ -1707,11 +1707,11 @@ new_revert_changelist(svn_wc__db_t *db, const char *), iterpool); - SVN_ERR(new_revert_changelist(db, child_abspath, depth, -use_commit_times, changelist_hash, -cancel_func, cancel_baton, -notify_func, notify_baton, -iterpool)); + SVN_ERR(revert_changelist(db, child_abspath, depth, +use_commit_times, changelist_hash, +cancel_func, cancel_baton, +notify_func, notify_baton, +iterpool)); } svn_pool_destroy(iterpool); @@ -1729,15 +1729,15 @@ new_revert_changelist(svn_wc__db_t *db, ### the non-recursive reve
svn commit: r1151270 - in /subversion/trunk/tools/dist: gnupg.py release.py
Author: hwright Date: Tue Jul 26 22:08:03 2011 New Revision: 1151270 URL: http://svn.apache.org/viewvc?rev=1151270&view=rev Log: Use gnugp.py module to interact with gpg in verifying signatures. The gpupg.py module is available under the New BSD license from the Google Code page: http://code.google.com/p/python-gnupg/ * tools/dist/release.py (grab_sig_ids): Use the module, rather than shelling out to the subprocess module. * tools/dist/gnupg.py: New. Added from http://code.google.com/p/python-gnupg/ Added: subversion/trunk/tools/dist/gnupg.py (with props) Modified: subversion/trunk/tools/dist/release.py Added: subversion/trunk/tools/dist/gnupg.py URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/gnupg.py?rev=1151270&view=auto == --- subversion/trunk/tools/dist/gnupg.py (added) +++ subversion/trunk/tools/dist/gnupg.py Tue Jul 26 22:08:03 2011 @@ -0,0 +1,983 @@ +""" A wrapper for the 'gpg' command:: + +Portions of this module are derived from A.M. Kuchling's well-designed +GPG.py, using Richard Jones' updated version 1.3, which can be found +in the pycrypto CVS repository on Sourceforge: + +http://pycrypto.cvs.sourceforge.net/viewvc/pycrypto/gpg/GPG.py + +This module is *not* forward-compatible with amk's; some of the +old interface has changed. For instance, since I've added decrypt +functionality, I elected to initialize with a 'gnupghome' argument +instead of 'keyring', so that gpg can find both the public and secret +keyrings. I've also altered some of the returned objects in order for +the caller to not have to know as much about the internals of the +result classes. + +While the rest of ISconf is released under the GPL, I am releasing +this single file under the same terms that A.M. Kuchling used for +pycrypto. + +Steve Traugott, stev...@terraluna.org +Thu Jun 23 21:27:20 PDT 2005 + +This version of the module has been modified from Steve Traugott's version +(see http://trac.t7a.org/isconf/browser/trunk/lib/python/isconf/GPG.py) by +Vinay Sajip to make use of the subprocess module (Steve's version uses os.fork() +and so does not work on Windows). Renamed to gnupg.py to avoid confusion with +the previous versions. + +Modifications Copyright (C) 2008-2011 Vinay Sajip. All rights reserved. + +A unittest harness (test_gnupg.py) has also been added. +""" +import locale + +__author__ = "Vinay Sajip" +__date__ = "$10-Apr-2011 11:40:48$" + +try: +from io import StringIO +except ImportError: +from cStringIO import StringIO + +import codecs +import locale +import logging +import os +import socket +from subprocess import Popen +from subprocess import PIPE +import sys +import threading + +try: +import logging.NullHandler as NullHandler +except ImportError: +class NullHandler(logging.Handler): +def handle(self, record): +pass +try: +unicode +_py3k = False +except NameError: +_py3k = True + +logger = logging.getLogger(__name__) +if not logger.handlers: +logger.addHandler(NullHandler()) + +def _copy_data(instream, outstream): +# Copy one stream to another +sent = 0 +if hasattr(sys.stdin, 'encoding'): +enc = sys.stdin.encoding +else: +enc = 'ascii' +while True: +data = instream.read(1024) +if len(data) == 0: +break +sent += len(data) +logger.debug("sending chunk (%d): %r", sent, data[:256]) +try: +outstream.write(data) +except UnicodeError: +outstream.write(data.encode(enc)) +except: +# Can sometimes get 'broken pipe' errors even when the data has all +# been sent +logger.exception('Error sending data') +break +try: +outstream.close() +except IOError: +logger.warning('Exception occurred while closing: ignored', exc_info=1) +logger.debug("closed output, %d bytes sent", sent) + +def _threaded_copy_data(instream, outstream): +wr = threading.Thread(target=_copy_data, args=(instream, outstream)) +wr.setDaemon(True) +logger.debug('data copier: %r, %r, %r', wr, instream, outstream) +wr.start() +return wr + +def _write_passphrase(stream, passphrase, encoding): +passphrase = '%s\n' % passphrase +passphrase = passphrase.encode(encoding) +stream.write(passphrase) +logger.debug("Wrote passphrase: %r", passphrase) + +def _is_sequence(instance): +return isinstance(instance,list) or isinstance(instance,tuple) + +def _make_binary_stream(s, encoding): +try: +if _py3k: +if isinstance(s, str): +s = s.encode(encoding) +else: +if type(s) is not str: +s = s.encode(encoding) +from io import BytesIO +rv = BytesIO(s) +except ImportError: +rv = StringIO(s) +return rv + +class GPG(object): +"Encapsulate access to the gpg executa
svn commit: r1151296 - /subversion/trunk/tools/dist/release.py
Author: hwright Date: Tue Jul 26 23:40:20 2011 New Revision: 1151296 URL: http://svn.apache.org/viewvc?rev=1151296&view=rev Log: release.py: General cleanup. * tools/dist/release.py (sig_pattern): Remove. (grab_sig_ids, generate_output): Remove. (check_sigs): Fold functionality from above into this function. Modified: subversion/trunk/tools/dist/release.py Modified: subversion/trunk/tools/dist/release.py URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/release.py?rev=1151296&r1=1151295&r2=1151296&view=diff == --- subversion/trunk/tools/dist/release.py (original) +++ subversion/trunk/tools/dist/release.py Tue Jul 26 23:40:20 2011 @@ -575,10 +575,11 @@ def write_announcement(args): # Validate the signatures for a release key_start = '-BEGIN PGP SIGNATURE-\n' -sig_pattern = re.compile(r'^gpg: Signature made .*? using \w+ key ID (\w+)') fp_pattern = re.compile(r'^pub\s+(\w+\/\w+)[^\n]*\n\s+Key\sfingerprint\s=((\s+[0-9A-F]{4}){10})\nuid\s+([^<\(]+)\s') -def grab_sig_ids(args): +def check_sigs(args): +'Check the signatures for the release.' + import gnupg gpg = gnupg.GPG() @@ -607,9 +608,6 @@ def grab_sig_ids(args): sys.stderr.write("BAD SIGNATURE for %s\n" % filename) sys.exit(1) -return good_sigs - -def generate_output(good_sigs): for id in good_sigs.keys(): gpg = subprocess.Popen(['gpg', '--fingerprint', id], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) @@ -627,11 +625,6 @@ def generate_output(good_sigs): print(" %s [%s] with fingerprint:" % (fp[3], fp[0])) print(" %s" % fp[1]) -def check_sigs(args): -'Check the signatures for the release.' - -generate_output(grab_sig_ids(args)) - #-- # Main entry point for argument parsing and handling