# HG changeset patch # User Dmitry Neverov # Date 1316419357 -14400 # Node ID 6667765025c65844e57eedf12b3fbc7a7ecc1b9f # Parent 0f5d1baa2e2cbff2740b49dc903ec7f9727736df# Parent 568ce42b1e9df2c948e9cfc0816a64037ee82a28 Merge branch Eluru-6.5.x diff -r 0f5d1baa2e2c -r 6667765025c6 mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java --- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java Mon Sep 19 11:31:58 2011 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java Mon Sep 19 12:02:37 2011 +0400 @@ -187,8 +187,10 @@ String escapedURI = uri.toASCIIString(); int from = "http://".length(); int to = escapedURI.indexOf("somewhere.com") - 1; - return escapedURI.substring(from, to); - } catch (URISyntaxException e) { + String escapedUserInfo = escapedURI.substring(from, to); + escapedUserInfo = escapedUserInfo.replaceAll("&", "%26"); + return escapedUserInfo; + } catch (URISyntaxException e) { assert false; } return userInfo; diff -r 0f5d1baa2e2c -r 6667765025c6 mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SettingsTest.java --- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SettingsTest.java Mon Sep 19 11:31:58 2011 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SettingsTest.java Mon Sep 19 12:02:37 2011 +0400 @@ -109,6 +109,13 @@ assertTrue(settings.isUncompressedTransfer()); } + //TW-18262 + public void ampersand_in_password() { + VcsRootImpl vcsRoot = createVcsRoot("http://some.org/path", "user", "m&n"); + Settings settings = createSettings(vcsRoot); + assertEquals("http://user:m%26n@some.org/path", settings.getRepositoryUrl()); + } + private VcsRootImpl createVcsRoot(String url) { return createVcsRoot(url, "user", "pwd"); }