You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Stephen Connolly <st...@gmail.com> on 2018/04/01 11:54:57 UTC

Re: ScmProvider.list()

On Fri 30 Mar 2018 at 10:20, Michael Osipov <mi...@apache.org> wrote:

> Am 2018-03-30 um 10:47 schrieb Basin Ilya:
> > Hi.
> > We need your opinion on the following topic. While Svn and Cvs providers
> perform the list() operation remotely and don't need a checkout directory,
> Git and some others
> > simply list the local files (generally, because their SCMs don't provide
> a remote list method). Arguments passed to the list() method also have
> different meanings for those
> > providers.
> >
> >
> > We should specify in the ScmProvider.list() javadoc that if the SCM does
> not support remote listing, then the method should just fail and also
> modify the existing
> > ListCommand implementations.
>
> My opinion on this is that the ListCommand says remote repos. If some
> SCM provider implements it wrong, it either has to be dropped or
> corrected. I don't like the idea to checkout or clone to list files.
>
> The Git provider has been implemented incorrectly from the beginning. I
> checked some other SCMs and they don't implement it at all.
>
> This needs to be fixed in 2.0.0.


It depends, git being distributed, if you have the local checkout, you can
list exactly without needing to go remote.

But perhaps the thing here is to enhance the api to provide for both cases.

At the minimum, git could do an ls-remote and then list from local once the
revision is confirmed present (which would meet a goal of being a “read
only” operation)


>
> Michael
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
> --
Sent from my phone

Re: ScmProvider.list()

Posted by Michael Osipov <mi...@apache.org>.
Am 2018-04-11 um 12:23 schrieb Basin Ilya:
> 
> 
> On 02.04.2018 10:47, Stephen Connolly wrote:
>> On Sun 1 Apr 2018 at 22:12, Michael Osipov <mi...@apache.org> wrote:
>>
>>> Am 2018-04-01 um 23:01 schrieb Stephen Connolly:
>>>> On Sun 1 Apr 2018 at 17:21, Michael Osipov <mi...@apache.org> wrote:
>>>>
>>>>> Am 2018-04-01 um 13:54 schrieb Stephen Connolly:
>>>>>> On Fri 30 Mar 2018 at 10:20, Michael Osipov <mi...@apache.org>
>>> wrote:
>>>>>>> Am 2018-03-30 um 10:47 schrieb Basin Ilya:
>>>>>>>> Hi.
>>>>>>>> We need your opinion on the following topic. While Svn and Cvs
>>>>> providers
>>>>>>> perform the list() operation remotely and don't need a checkout
>>>>> directory,
>>>>>>> Git and some others
>>>>>>>> simply list the local files (generally, because their SCMs don't
>>>>> provide
>>>>>>> a remote list method). Arguments passed to the list() method also have
>>>>>>> different meanings for those
>>>>>>>> providers.
>>>>>>>>
>>>>>>>>
>>>>>>>> We should specify in the ScmProvider.list() javadoc that if the SCM
>>>>> does
>>>>>>> not support remote listing, then the method should just fail and also
>>>>>>> modify the existing
>>>>>>>> ListCommand implementations.
>>>>>>> My opinion on this is that the ListCommand says remote repos. If some
>>>>>>> SCM provider implements it wrong, it either has to be dropped or
>>>>>>> corrected. I don't like the idea to checkout or clone to list files.
>>>>>>>
>>>>>>> The Git provider has been implemented incorrectly from the beginning.
>>> I
>>>>>>> checked some other SCMs and they don't implement it at all.
>>>>>>>
>>>>>>> This needs to be fixed in 2.0.0.
>>>>>>
>>>>>> It depends, git being distributed, if you have the local checkout, you
>>>>> can
>>>>>> list exactly without needing to go remote.
>>>>> No, the docs say remote list. Not local list.
>>>>>
>>>>>> But perhaps the thing here is to enhance the api to provide for both
>>>>> cases.
>>>>>
>>>>> Likely, but you will end up in a split situation because not every SCM
>>>>> will implement your usercase.
>>>>>
>>>>>> At the minimum, git could do an ls-remote and then list from local once
>>>>> the
>>>>>> revision is confirmed present (which would meet a goal of being a “read
>>>>>> only” operation)
>>>>> ls-remote does *not* list any files remotely, it lists remote refs.
>>>>
>>>> And if we have the remote ref local then *because refs are immutable* we
>>>> can list the files from local.
>>>>
>>>> I think the only issue is the lack of a call to ls-remote
>>> I do not understand what you are trying to say. How is the output of
>>> ls-remote/remote refs relateed to the remote file listing?
>>> Even if you have the current branch, you still cannot list the files
>>> because you don't know wether your local branch is uptodate with remote.
>>
>> That is what ls-remote tells you. It tells you the revisions of every
>> branch and tag in the remote (or you can just ask for one branch)
>>
>> Then if the revision is in the .git database you can list the files
> 
> Okay. Here's how I see this: the list() method should not require a local checkout directory, but ls-files requires at least a bare repo. As a compromise we could have a set of persistent bare git repositories, shared by multiple Scm clients, just like makepkg from Archlinux does.
> 
> However, I have no idea how to do the same with Mercurial and other similar SCMs. This is why I'd prefer to push the efforts and responsibility to the users of ScmClient. Let them try list() and if it's not supported, then let them do checkout and list files in a directory. This would be much simpler.

+1. We can't satisfy all SCMs with the same API.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: ScmProvider.list()

Posted by Basin Ilya <ba...@gmail.com>.

On 02.04.2018 10:47, Stephen Connolly wrote:
> On Sun 1 Apr 2018 at 22:12, Michael Osipov <mi...@apache.org> wrote:
>
>> Am 2018-04-01 um 23:01 schrieb Stephen Connolly:
>>> On Sun 1 Apr 2018 at 17:21, Michael Osipov <mi...@apache.org> wrote:
>>>
>>>> Am 2018-04-01 um 13:54 schrieb Stephen Connolly:
>>>>> On Fri 30 Mar 2018 at 10:20, Michael Osipov <mi...@apache.org>
>> wrote:
>>>>>> Am 2018-03-30 um 10:47 schrieb Basin Ilya:
>>>>>>> Hi.
>>>>>>> We need your opinion on the following topic. While Svn and Cvs
>>>> providers
>>>>>> perform the list() operation remotely and don't need a checkout
>>>> directory,
>>>>>> Git and some others
>>>>>>> simply list the local files (generally, because their SCMs don't
>>>> provide
>>>>>> a remote list method). Arguments passed to the list() method also have
>>>>>> different meanings for those
>>>>>>> providers.
>>>>>>>
>>>>>>>
>>>>>>> We should specify in the ScmProvider.list() javadoc that if the SCM
>>>> does
>>>>>> not support remote listing, then the method should just fail and also
>>>>>> modify the existing
>>>>>>> ListCommand implementations.
>>>>>> My opinion on this is that the ListCommand says remote repos. If some
>>>>>> SCM provider implements it wrong, it either has to be dropped or
>>>>>> corrected. I don't like the idea to checkout or clone to list files.
>>>>>>
>>>>>> The Git provider has been implemented incorrectly from the beginning.
>> I
>>>>>> checked some other SCMs and they don't implement it at all.
>>>>>>
>>>>>> This needs to be fixed in 2.0.0.
>>>>>
>>>>> It depends, git being distributed, if you have the local checkout, you
>>>> can
>>>>> list exactly without needing to go remote.
>>>> No, the docs say remote list. Not local list.
>>>>
>>>>> But perhaps the thing here is to enhance the api to provide for both
>>>> cases.
>>>>
>>>> Likely, but you will end up in a split situation because not every SCM
>>>> will implement your usercase.
>>>>
>>>>> At the minimum, git could do an ls-remote and then list from local once
>>>> the
>>>>> revision is confirmed present (which would meet a goal of being a “read
>>>>> only” operation)
>>>> ls-remote does *not* list any files remotely, it lists remote refs.
>>>
>>> And if we have the remote ref local then *because refs are immutable* we
>>> can list the files from local.
>>>
>>> I think the only issue is the lack of a call to ls-remote
>> I do not understand what you are trying to say. How is the output of
>> ls-remote/remote refs relateed to the remote file listing?
>> Even if you have the current branch, you still cannot list the files
>> because you don't know wether your local branch is uptodate with remote.
>
> That is what ls-remote tells you. It tells you the revisions of every
> branch and tag in the remote (or you can just ask for one branch)
>
> Then if the revision is in the .git database you can list the files

Okay. Here's how I see this: the list() method should not require a local checkout directory, but ls-files requires at least a bare repo. As a compromise we could have a set of persistent bare git repositories, shared by multiple Scm clients, just like makepkg from Archlinux does.

However, I have no idea how to do the same with Mercurial and other similar SCMs. This is why I'd prefer to push the efforts and responsibility to the users of ScmClient. Let them try list() and if it's not supported, then let them do checkout and list files in a directory. This would be much simpler.


Re: ScmProvider.list()

Posted by Stephen Connolly <st...@gmail.com>.
On Sun 1 Apr 2018 at 22:12, Michael Osipov <mi...@apache.org> wrote:

> Am 2018-04-01 um 23:01 schrieb Stephen Connolly:
> > On Sun 1 Apr 2018 at 17:21, Michael Osipov <mi...@apache.org> wrote:
> >
> >> Am 2018-04-01 um 13:54 schrieb Stephen Connolly:
> >>> On Fri 30 Mar 2018 at 10:20, Michael Osipov <mi...@apache.org>
> wrote:
> >>>
> >>>> Am 2018-03-30 um 10:47 schrieb Basin Ilya:
> >>>>> Hi.
> >>>>> We need your opinion on the following topic. While Svn and Cvs
> >> providers
> >>>> perform the list() operation remotely and don't need a checkout
> >> directory,
> >>>> Git and some others
> >>>>> simply list the local files (generally, because their SCMs don't
> >> provide
> >>>> a remote list method). Arguments passed to the list() method also have
> >>>> different meanings for those
> >>>>> providers.
> >>>>>
> >>>>>
> >>>>> We should specify in the ScmProvider.list() javadoc that if the SCM
> >> does
> >>>> not support remote listing, then the method should just fail and also
> >>>> modify the existing
> >>>>> ListCommand implementations.
> >>>>
> >>>> My opinion on this is that the ListCommand says remote repos. If some
> >>>> SCM provider implements it wrong, it either has to be dropped or
> >>>> corrected. I don't like the idea to checkout or clone to list files.
> >>>>
> >>>> The Git provider has been implemented incorrectly from the beginning.
> I
> >>>> checked some other SCMs and they don't implement it at all.
> >>>>
> >>>> This needs to be fixed in 2.0.0.
> >>>
> >>>
> >>> It depends, git being distributed, if you have the local checkout, you
> >> can
> >>> list exactly without needing to go remote.
> >>
> >> No, the docs say remote list. Not local list.
> >>
> >>> But perhaps the thing here is to enhance the api to provide for both
> >> cases.
> >>
> >> Likely, but you will end up in a split situation because not every SCM
> >> will implement your usercase.
> >>
> >>> At the minimum, git could do an ls-remote and then list from local once
> >> the
> >>> revision is confirmed present (which would meet a goal of being a “read
> >>> only” operation)
> >>
> >> ls-remote does *not* list any files remotely, it lists remote refs.
> >
> >
> > And if we have the remote ref local then *because refs are immutable* we
> > can list the files from local.
> >
> > I think the only issue is the lack of a call to ls-remote
>
> I do not understand what you are trying to say. How is the output of
> ls-remote/remote refs relateed to the remote file listing?
> Even if you have the current branch, you still cannot list the files
> because you don't know wether your local branch is uptodate with remote.


That is what ls-remote tells you. It tells you the revisions of every
branch and tag in the remote (or you can just ask for one branch)

Then if the revision is in the .git database you can list the files


>
> Michael
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
> --
Sent from my phone

Re: ScmProvider.list()

Posted by Michael Osipov <mi...@apache.org>.
Am 2018-04-01 um 23:01 schrieb Stephen Connolly:
> On Sun 1 Apr 2018 at 17:21, Michael Osipov <mi...@apache.org> wrote:
> 
>> Am 2018-04-01 um 13:54 schrieb Stephen Connolly:
>>> On Fri 30 Mar 2018 at 10:20, Michael Osipov <mi...@apache.org> wrote:
>>>
>>>> Am 2018-03-30 um 10:47 schrieb Basin Ilya:
>>>>> Hi.
>>>>> We need your opinion on the following topic. While Svn and Cvs
>> providers
>>>> perform the list() operation remotely and don't need a checkout
>> directory,
>>>> Git and some others
>>>>> simply list the local files (generally, because their SCMs don't
>> provide
>>>> a remote list method). Arguments passed to the list() method also have
>>>> different meanings for those
>>>>> providers.
>>>>>
>>>>>
>>>>> We should specify in the ScmProvider.list() javadoc that if the SCM
>> does
>>>> not support remote listing, then the method should just fail and also
>>>> modify the existing
>>>>> ListCommand implementations.
>>>>
>>>> My opinion on this is that the ListCommand says remote repos. If some
>>>> SCM provider implements it wrong, it either has to be dropped or
>>>> corrected. I don't like the idea to checkout or clone to list files.
>>>>
>>>> The Git provider has been implemented incorrectly from the beginning. I
>>>> checked some other SCMs and they don't implement it at all.
>>>>
>>>> This needs to be fixed in 2.0.0.
>>>
>>>
>>> It depends, git being distributed, if you have the local checkout, you
>> can
>>> list exactly without needing to go remote.
>>
>> No, the docs say remote list. Not local list.
>>
>>> But perhaps the thing here is to enhance the api to provide for both
>> cases.
>>
>> Likely, but you will end up in a split situation because not every SCM
>> will implement your usercase.
>>
>>> At the minimum, git could do an ls-remote and then list from local once
>> the
>>> revision is confirmed present (which would meet a goal of being a “read
>>> only” operation)
>>
>> ls-remote does *not* list any files remotely, it lists remote refs.
> 
> 
> And if we have the remote ref local then *because refs are immutable* we
> can list the files from local.
> 
> I think the only issue is the lack of a call to ls-remote

I do not understand what you are trying to say. How is the output of 
ls-remote/remote refs relateed to the remote file listing?
Even if you have the current branch, you still cannot list the files 
because you don't know wether your local branch is uptodate with remote.

Michael


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: ScmProvider.list()

Posted by Michael Osipov <mi...@apache.org>.
Am 2018-04-01 um 13:54 schrieb Stephen Connolly:
> On Fri 30 Mar 2018 at 10:20, Michael Osipov <mi...@apache.org> wrote:
> 
>> Am 2018-03-30 um 10:47 schrieb Basin Ilya:
>>> Hi.
>>> We need your opinion on the following topic. While Svn and Cvs providers
>> perform the list() operation remotely and don't need a checkout directory,
>> Git and some others
>>> simply list the local files (generally, because their SCMs don't provide
>> a remote list method). Arguments passed to the list() method also have
>> different meanings for those
>>> providers.
>>>
>>>
>>> We should specify in the ScmProvider.list() javadoc that if the SCM does
>> not support remote listing, then the method should just fail and also
>> modify the existing
>>> ListCommand implementations.
>>
>> My opinion on this is that the ListCommand says remote repos. If some
>> SCM provider implements it wrong, it either has to be dropped or
>> corrected. I don't like the idea to checkout or clone to list files.
>>
>> The Git provider has been implemented incorrectly from the beginning. I
>> checked some other SCMs and they don't implement it at all.
>>
>> This needs to be fixed in 2.0.0.
> 
> 
> It depends, git being distributed, if you have the local checkout, you can
> list exactly without needing to go remote.

No, the docs say remote list. Not local list.

> But perhaps the thing here is to enhance the api to provide for both cases.

Likely, but you will end up in a split situation because not every SCM 
will implement your usercase.

> At the minimum, git could do an ls-remote and then list from local once the
> revision is confirmed present (which would meet a goal of being a “read
> only” operation)

ls-remote does *not* list any files remotely, it lists remote refs.

Michael


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org