[ https://issues.apache.org/jira/browse/SCM-928?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17346321#comment-17346321 ]
Arnaud Nauwynck commented on SCM-928: ------------------------------------- "repo" tool is a tool (from google) to help working with multiple git repositories trees See source code: https://gerrit.googlesource.com/git-repo/ See doc: https://source.android.com/setup/develop ( apparently, this tool was initially done for android developpers) maven developpers use it internally to checkout all their git repositories (but it is apparently not working correctly on windows + cygwin + python 3 + ..) > scm type 'mount-repos' to support google repo tool for checkout manifest.xml > ---------------------------------------------------------------------------- > > Key: SCM-928 > URL: https://issues.apache.org/jira/browse/SCM-928 > Project: Maven SCM > Issue Type: New Feature > Components: maven-scm-provider-jgit > Reporter: Arnaud Nauwynck > Priority: Minor > Fix For: waiting-for-feedback > > > see PullRequest [https://github.com/apache/maven-scm/pull/92] > > as stated in [https://maven.apache.org/scm.html] > Checkouting maven sources can be done using google repo tool: download the > file default.xml (called manifest in google repo tool), then doing "repo init" > > {code:java} > repo init -u https://gitbox.apache.org/repos/asf/maven-sources.git > repo sync > repo start master --all > {code} > Unfortunatly, it does not work on some windows ... It requires to install > python 2.7 but not 3, and mingw but not cygwin, it calls system process for > ssh.exe but fails, and does not detect the correct pathes in cygwin, etc... > This PR contains a pure java implementation of the checkout command, that is > compatible with maven-scm api. It implements the parsing of the repo manifest > xml file, and call jgit sub-commands > You can test it by recompiling maven-scm, then typing either > {code:java} > mvn org.apache.maven.plugins:maven-scm-plugin:1.11.3-SNAPSHOT:checkout > -DconnectionUrl=scm:mount-repos:default.xml -DcheckoutDirectory=checkout{code} > or better using a new mojo that supports checkout OR update (does not clean > the checkout dir if it already exists... so you can execute several times an > update, or retry a partially failing checkout ) > {code:java} > mvn > org.apache.maven.plugins:maven-scm-plugin:1.11.3-SNAPSHOT:checkout-or-update > -DconnectionUrl=scm:mount-repos:default.xml -DcheckoutDirectory=checkout{code} > Notice that their are plenty of http 429 "Too Many Requests" will cloning > some apache gitbox repositories, so this PR also contains in a separate > commit a workaround for try-catch-retry on theses errors. > Remark 1: > It is implemented s a standard "composite design-pattern" on scm repository > api, eventhough the current implementation that parse manifest.xml > implicitely recognise jgit sub-repositories only. > By detecting other file format, it would be possible to mix git/hg/svn.. sub > repositories > Remark 2: > I named this scm type 'mount-repos' instead of 'repo' (the original name of > the google repo tool) because it looks like a mount-tab file in linux: it > mounts some sub-dirs to delegate to other (scm) filesystems api. > Remark 3: > For reason 1 & 2, it makes sense to be properly integrated as a maven-scm > provider type. It is much more general than simply getting maven own sources > code, and could be used in some complex multi-repositories builds. > Remark 4: > Currently, only the checkout and update commands are implemented. > To fully supports maven scm api, we could also implements all remaining > methods: diff/status/tag/update/edit/unedit/blame/mkdir/... -- This message was sent by Atlassian Jira (v8.3.4#803005)