From 1dad57d47614546240061fd942d1ff8e6e54eb64 Mon Sep 17 00:00:00 2001 From: Alex Richardson Date: Wed, 28 Jul 2021 15:16:30 +0100 Subject: Handle git remotes that aren't called origin in _repository_name() I was seeing `error: No such remote 'origin'` in the cmake output. This commit avoids hardcoding `origin` as the upstream URL and instead uses the `git rev-parse @{u}` to get the configured upstream. As a follow-up we may want to check if this should be executed by default, but for now this fixes a warning that I'm seeing with various projects. --- kde-modules/KDECMakeSettings.cmake | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'kde-modules/KDECMakeSettings.cmake') diff --git a/kde-modules/KDECMakeSettings.cmake b/kde-modules/KDECMakeSettings.cmake index 251f7cff..319a8932 100644 --- a/kde-modules/KDECMakeSettings.cmake +++ b/kde-modules/KDECMakeSettings.cmake @@ -297,14 +297,24 @@ endif() # Download translations function(_repository_name reponame dir) - execute_process(COMMAND git remote get-url --all origin - OUTPUT_VARIABLE giturl + execute_process(COMMAND git rev-parse --symbolic-full-name @{u} + OUTPUT_VARIABLE upstream_ref RESULT_VARIABLE exitCode WORKING_DIRECTORY "${dir}") + string(REGEX REPLACE "refs/remotes/([^/]+)/.*" "\\1" gitorigin "${upstream_ref}") + if(exitCode EQUAL 0) + message(DEBUG "Git upstream inferred as ${gitorigin}, upstream ref was ${upstream_ref}") + execute_process(COMMAND git remote get-url --all "${gitorigin}" + OUTPUT_VARIABLE giturl + RESULT_VARIABLE exitCode + WORKING_DIRECTORY "${dir}") + endif() if(exitCode EQUAL 0) + message(DEBUG "Git URL inferred as ${giturl}") string(REGEX MATCHALL ".+kde\\.org[:\\/]([-A-Za-z0-9\\/]+)(.git)?\\s*" "" ${giturl}) set(${reponame} ${CMAKE_MATCH_1}) + message(DEBUG "Repository inferred as ${${reponame}}") endif() if(NOT ${reponame}) -- cgit v1.2.1