From patchwork Tue May 24 16:02:54 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [Consolidated, Pull, 07/12] create-pull-request: generalize the repository URL parsing Date: Tue, 24 May 2011 16:02:54 -0000 From: Saul Wold X-Patchwork-Id: 4705 Message-Id: <861c288e353e917374de938c4e5e927e116cd56c.1306219274.git.sgw@linux.intel.com> To: openembedded-core@lists.openembedded.org Cc: Darren Hart From: Darren Hart The existing REMOTE_URL and REMOTE_REPO parsing made assumptions regarding the git URL format used for the known repository types. In fact, both of these ssh URL formats are valid for all the known repositories. Specifically: ssh://git@server/repository/path git@server:repository/path Generalize the parsing to work with each of these for all push URLs matching *@*. Tested with the following URLs: ssh://git@git.pokylinux.org/poky-contrib ssh://git@git.pokylinux.org/poky-contrib.git git@git.pokylinux.org:poky-contrib git@git.pokylinux.org:poky-contrib.git Signed-off-by: Darren Hart --- scripts/create-pull-request | 29 ++++++++++++----------------- 1 files changed, 12 insertions(+), 17 deletions(-) diff --git a/scripts/create-pull-request b/scripts/create-pull-request index b808146..19b640f 100755 --- a/scripts/create-pull-request +++ b/scripts/create-pull-request @@ -97,28 +97,22 @@ while getopts "b:chi:m:o:p:r:s:u:" OPT; do exit 1 fi - # Rewrite known private URLs to public URLs + # Rewrite private URLs to public URLs # Determine the repository name for use in the WEB_URL later case "$REMOTE_URL" in - ssh://git@git.pokylinux.org*) - REMOTE_REPO=$(echo $REMOTE_URL | sed "s#.*/\(.*\)#\1#") - REMOTE_URL=${REMOTE_URL/'ssh://git@'/'git://'} + *@*) + USER_RE="[A-Za-z0-9_.@][A-Za-z0-9_.@-]*\$\?" + PROTO_RE="[a-z][a-z]*://" + GIT_RE="\(^\($PROTO_RE\)\?$USER_RE@\)\([^:/]*\)[:/]\(.*\)" + REMOTE_URL=${REMOTE_URL%.git} + REMOTE_REPO=$(echo $REMOTE_URL | sed "s#$GIT_RE#\4#") + REMOTE_URL=$(echo $REMOTE_URL | sed "s#$GIT_RE#git://\3/\4#") ;; - ssh://git@git.yoctoproject.org*) - REMOTE_REPO=$(echo $REMOTE_URL | sed "s#.*/\(.*\)#\1#") - REMOTE_URL=${REMOTE_URL/"ssh://git@"/"git://"} - ;; - *ssh://git@git.openembedded.org*) - REMOTE_REPO=$(echo $REMOTE_URL | sed "s#.*/\(.*\)#\1#") - REMOTE_URL=${REMOTE_URL/"ssh://git@"/"git://"} - ;; - git@github.com:*) - REMOTE_REPO=$(echo $REMOTE_URL | sed 's#.*:\(.*\)\(\.git\)$#\1#') - REMOTE_URL=${REMOTE_URL/"git@github.com:"/"git://github.com/"} + *) + echo "WARNING: Unrecognized remote URL: $REMOTE_URL" + echo " The pull and browse URLs will likely be incorrect" ;; esac - # The .git suffix is optional in the URL, drop in for the REPO - REMOTE_REPO=${REMOTE_REPO%.git} ;; esac done @@ -134,6 +128,7 @@ fi # Set WEB_URL from known remotes +WEB_URL="" case "$REMOTE_URL" in *git.yoctoproject.org*) WEB_URL="http://git.yoctoproject.org/cgit.cgi/$REMOTE_REPO/log/?h=$BRANCH"