[
https://issues.apache.org/jira/browse/SCM-381?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17961241#comment-17961241
]
ASF GitHub Bot commented on SCM-381:
------------------------------------
jira-importer opened a new issue, #595:
URL: https://github.com/apache/maven-scm/issues/595
**[Sergey
Zakusov](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=szakusov)**
opened
**[SCM-381](https://issues.apache.org/jira/browse/SCM-381?redirect=false)** and
commented
We propose to extend the existing API to support some remote commands - it's
a really required feature to allow work with SCMs without Working Copies.
For a start there should be done the following commands:
1. **rlist** - to list remotely repository entries;
2. **rinfo** - to get information about repository entries;
3. **rlog** - to get change log of repository entries;
4. **rcat** - to get file contents remotely.
It can be specified as a new interface extended from ScmManager:
```
public interface ScmRemoteManager extends ScmManager {
/**
* Lists remotely each element specified by <B>i_fileSet</B> in the
repository.
*
* @param i_repository the source control system to use
* @param i_fileSet the entries (files and/or directories) to list
* @param i_recursive descend recursively
* @param i_version use the version defined by the branch/tag/revision
* @return The list of entries in the repository
* @throws ScmException if the command cannot be performed
* @see ScmManager#list(ScmRepository, ScmFileSet, boolean, ScmVersion)
to work with Working Copy
*/
ListScmResult rlist(ScmRepository i_repository, ScmFileSet i_fileSet,
boolean i_recursive, ScmVersion i_version)
throws ScmException;
/**
* Retrieves information about each remote element specified by
<B>i_fileSet</B>.
*
* @param i_repository the source control system to use
* @param i_fileSet the entries (files and/or directories) to get
information
* @param i_version the branch/tag/revision to use
* @return Information about each requested entry from the repository
* @throws ScmException if the command cannot be performed
*/
InfoScmResult rinfo(ScmRepository i_repository, ScmFileSet i_fileSet,
ScmVersion i_version) throws ScmException;
/**
* Retrieves log information about each remote element specified by
<B>i_fileSet</B>.
*
* @param i_repository the source control system to use
* @param i_fileSet the entries (files and/or directories) to get
information
* @param i_startVersion the start branch/tag/revision
* @param i_endVersion the end branch/tag/revision
* @return Log information about each requested entry from the repository
* @throws ScmException if the command cannot be performed
* @see ScmManager#changeLog(ScmRepository, ScmFileSet, ScmVersion,
ScmVersion) to work with Working Copy
*/
ChangeLogScmResult rlog(ScmRepository i_repository, ScmFileSet
i_fileSet, ScmVersion i_startVersion,
ScmVersion i_endVersion) throws ScmException;
/**
* Fetches the contents and/or properties of each remote element
specified by <B>i_fileSet</B>.
*
* @param i_repository the source control system to use
* @param i_fileSet the files to get content
* @param i_version the branch/tag/revision to use
* @return Contents and/or properties of each requested file from the
repository
* @throws ScmException if the command cannot be performed
*/
CatScmResult rcat(ScmRepository i_repository, ScmFileSet i_fileSet,
ScmVersion i_version) throws ScmException;
}
```
---
**Affects:** 1.13.0
1 votes, 1 watchers
> Extend API to support remote commands like rlist, rlog
> ------------------------------------------------------
>
> Key: SCM-381
> URL: https://issues.apache.org/jira/browse/SCM-381
> Project: Maven SCM (Moved to GitHub Issues)
> Issue Type: New Feature
> Components: maven-scm-api
> Affects Versions: 1.13.0
> Reporter: Sergey Zakusov
> Priority: Major
>
> We propose to extend the existing API to support some remote commands - it's
> a really required feature to allow work with SCMs without Working Copies.
> For a start there should be done the following commands:
> # *rlist* - to list remotely repository entries;
> # *rinfo* - to get information about repository entries;
> # *rlog* - to get change log of repository entries;
> # *rcat* - to get file contents remotely.
> It can be specified as a new interface extended from ScmManager:
> {code:title=ScmRemoteManager.java|bolderStyle=solid}
> public interface ScmRemoteManager extends ScmManager {
> /**
> * Lists remotely each element specified by <B>i_fileSet</B> in the
> repository.
> *
> * @param i_repository the source control system to use
> * @param i_fileSet the entries (files and/or directories) to list
> * @param i_recursive descend recursively
> * @param i_version use the version defined by the branch/tag/revision
> * @return The list of entries in the repository
> * @throws ScmException if the command cannot be performed
> * @see ScmManager#list(ScmRepository, ScmFileSet, boolean, ScmVersion)
> to work with Working Copy
> */
> ListScmResult rlist(ScmRepository i_repository, ScmFileSet i_fileSet,
> boolean i_recursive, ScmVersion i_version)
> throws ScmException;
> /**
> * Retrieves information about each remote element specified by
> <B>i_fileSet</B>.
> *
> * @param i_repository the source control system to use
> * @param i_fileSet the entries (files and/or directories) to get
> information
> * @param i_version the branch/tag/revision to use
> * @return Information about each requested entry from the repository
> * @throws ScmException if the command cannot be performed
> */
> InfoScmResult rinfo(ScmRepository i_repository, ScmFileSet i_fileSet,
> ScmVersion i_version) throws ScmException;
> /**
> * Retrieves log information about each remote element specified by
> <B>i_fileSet</B>.
> *
> * @param i_repository the source control system to use
> * @param i_fileSet the entries (files and/or directories) to get
> information
> * @param i_startVersion the start branch/tag/revision
> * @param i_endVersion the end branch/tag/revision
> * @return Log information about each requested entry from the repository
> * @throws ScmException if the command cannot be performed
> * @see ScmManager#changeLog(ScmRepository, ScmFileSet, ScmVersion,
> ScmVersion) to work with Working Copy
> */
> ChangeLogScmResult rlog(ScmRepository i_repository, ScmFileSet i_fileSet,
> ScmVersion i_startVersion,
> ScmVersion i_endVersion) throws ScmException;
> /**
> * Fetches the contents and/or properties of each remote element
> specified by <B>i_fileSet</B>.
> *
> * @param i_repository the source control system to use
> * @param i_fileSet the files to get content
> * @param i_version the branch/tag/revision to use
> * @return Contents and/or properties of each requested file from the
> repository
> * @throws ScmException if the command cannot be performed
> */
> CatScmResult rcat(ScmRepository i_repository, ScmFileSet i_fileSet,
> ScmVersion i_version) throws ScmException;
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)