> On 15 Dec 2022, at 19:22, Florian Schmaus <f...@gentoo.org> wrote:
> 
> This is a public service announcement that the recently stabilized portage 
> version will truncate you repo's git history to 1.

I wish you'd shown us in #gentoo-portage before sending this, as it's a bit 
misleading / alarmist. We were actively all speaking
at the time.

Not only to reconsider the phrasing and include some important details, but 
also to mention the rationale, which I describe
below.

If you felt the Portage team should've written a news item for it, you were 
(and still are) free to say so, and we'd
do it.

> 
> While this is a good thing for the majority of Gentoo users, it affects 
> developers that develop in a git known to portage (like me). If I understand 
> the portage maintainers vision correctly, then future portage will assume 
> full control over its configured repositories and potentially perform 
> destructive operations on them, for example "git clean" [1].
> 
... only for repositories of sync-type=git & auto-sync=yes.

The rationale for this is that most people who use sync-type=git are doing so 
because they want
a quicker sync (to complete), a more reliable one (no Manifest race condition 
issues), and to
get changes from Gentoo faster.

Whenever Portage is syncing something, our view was that we should prioritise 
successful
completion of syncs, especially given it may be performed unattended.

If git is pulling from a CDN, Portage may on one sync receive state X, but
on a subsequent sync receive state X-1. This can cause an odd state
where git wants to resolve conflicts and manual intervention is required.

This situation was often worse with sync-depth=1 and would lead
to orphaned files, hence the 'git clean' PR referenced.

The motivation behind the sync depth part was because of
disk space growing unbounded otherwise.

> I personally would prefer portage simply adjusting its behavior based on the 
> owner of the repository. That is, if it's the 'portage' user then assume full 
> control, and if it is a different user, then fall back to a preserving, 
> conservative mode of operation. Unfortunately, for me, this idea was received 
> skeptically at best in a recent discussion in #gentoo-portage.

This wouldn't work for Prefix and also FEATURES="-usersync".

--

Now, looking forward in a constructive manner, I think we can
make both camps happy here with an option to indicate
If Portage can assume the repository will be touched by something
other than Portage.

I propose a configuration option called 'volatile' (thanks
Arsen for the name suggestion) which indicates that the
repository may be changed outside of Portage by any time,
and hence no destructive operations should be carried out.

If the option is on, it also prohibits some optimisations
which require assuming the integrity of the repository.

I have a draft of these changes at https://github.com/gentoo/portage/pull/961.

(https://github.com/gentoo/portage/pull/961.patch if want to view as a raw 
patch series.0

I am undecided on whether volatile should be default on or not. In the PR
as it is, it defaults to off, which would require a news item. I may just turn 
it
on given the tone of this thread, as none of it has been very encouraging
for further work on Portage.

Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to