Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-08-02 Thread Daniel Gröber
Hi Samo,

On Mon, Jun 24, 2024 at 04:53:01PM +0200, Samo Pogačnik wrote:
> i prepared another candidate for the 0.4.6-1 release (
> https://salsa.debian.org/spog/git-subrepo/-/commit/f96eeedd0e96b6f2bbcc8c013909de5d5325cafe
> ), hoping it ticks all the boxes and more :)

Excellent!

I did run into some more issues during build/testing unfortunately. Some
beurocratic, some related to tests:

 - you are still missing from d/copyright :)

 - d/changelog should not contain versions that were never in Debian.
   consequently everything that isn't the "Intial release" entry also doesn't
   make sense. Not sure why I didn't catch that before.

 - tests fail in a git checkout (but not during clean sbuild it seems)

 - d/rules clean doesn't cleanup after tests

The package looks good sans tests so I'll upload that to NEW so we can keep
working on the tests in the meantime. Remeber to pull my changes from
debian/git-subrepo before you continue working :)

For the cleanup requirement see
https://www.debian.org/doc/debian-policy/ch-source.html#main-building-script-debian-rules

> clean (required)
>
>This must undo any effects that the build and binary targets may have
>had, except that it should leave alone any output files created in the
>parent directory by a run of a binary target.

Right now I have to `git reset --hard HEAD; git clean -xfd` to get rid of
all the build byproducts.

This is one of the more onerous requirements of Debian policy rooted in a
world that didn't have git yet. It's important because some people still
work on packages without git and they need a way to reset the build tree.

Looking at what remains after `quilt pop -a` I see untracked files
test/repo/* which you create with your 0005 patch. Really that should
probably be in test/tmp which upstream has already setup to be removed by
their clean target.

Other than that I see changes to upstream files:

modified   test/repo/bar/config
@@ -2,3 +2,7 @@
repositoryformatversion = 0
filemode = true
bare = true
+   logallrefupdates = true
+[user]
+   name = BarUser
+   email = bar@bar
deletedtest/repo/bar/objects/94/c86ffc745232d89f78c6f895e11e71272518db
deletedtest/repo/bar/objects/f6/2a8ff3feadf39b0a98f1a86ec6d1eb33858ee9
modified   test/repo/bar/refs/heads/master
@@ -1 +1 @@
-94c86ffc745232d89f78c6f895e11e71272518db
+e2aebf65b96f0be7595bffed8ff42cc69334f150
modified   test/repo/bar/refs/tags/A
@@ -1 +1 @@
-f62a8ff3feadf39b0a98f1a86ec6d1eb33858ee9
+f8206189232afa81e999b1b3aeb524fc4d9bae46
modified   test/repo/foo/config
@@ -2,3 +2,7 @@
repositoryformatversion = 0
filemode = true
bare = true
+   logallrefupdates = true
+[user]
+   name = FooUser
+   email = foo@foo
deletedtest/repo/foo/objects/e2/1291a1ad392a9d4c51dd9586804f1467b28afd
modified   test/repo/foo/refs/heads/master
@@ -1 +1 @@
-e21291a1ad392a9d4c51dd9586804f1467b28afd
+e51641c054bb9e0591a8a95d0789e10abb308de2
modified   test/repo/init/config
@@ -1,5 +1,8 @@
 [core]
repositoryformatversion = 0
filemode = true
-   bare = false
+   bare = true
logallrefupdates = true
+[user]
+   name = InitUser
+   email = init@init
deletedtest/repo/init/objects/32/5180321750a21cd7a4e7ecda319e557a4f6a09
deletedtest/repo/init/objects/3d/918c6901c02f43af5d31779dd5e1f9166aeb36
deletedtest/repo/init/objects/58/931fc1bd559b59c41ea738fc7ad04f9ad01bd3
deletedtest/repo/init/objects/94/7b3d714c38791e95ad6f928b48c98bb8708acd
deletedtest/repo/init/objects/c3/ee8978c4c5d84c3b7d00ba8e5906933d027882
modified   test/repo/init/refs/heads/master

In general you must not change upstream files during the Debian package
build. Sometimes this is necessary, in such cases a save+restore approach
is taken cf. dh_autoreconf. However this is not appropriate here.


Also, looking at 0005:

> diff --git a/Makefile b/Makefile
> index f84b83d..1927073 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -47,6 +47,18 @@ help:
>   @echo 'uninstall  Uninstall $(NAME)'
>   @echo 'envShow environment variables to set'
>  
> +.PHONY: genfoo
> +genfoo:
> + test/genfoo test/repo
> +
> +.PHONY: genbar
> +genbar:
> + test/genbar test/repo
> +
> +.PHONY: geninit
> +geninit:
> + test/geninit test/repo
> +
>  .git:
>   git init -b main .
>   git config user.email "you@you"
> @@ -57,6 +69,9 @@ help:
>  
>  .PHONY: test
>  test: .git
> + make genfoo
> + make genbar
> + make geninit
>   prove $(prove) $(test)

Recursive make calls are uncessary here, but you're also ignoring the
arcane convention to call $(MAKE), see
https://www.gnu.org/software/make/manual/html_node/MAKE-Variable.html.

Easy fix is to just add dependencies to the test target, like so:
 
 .PHONY: test
-test: .git
+test: .git genfoo genbar geninit
prove $(prove) $(test)

Upstream's suggestion to put it in test/setup is even better though so
that's the way to go.

> I made the PR 

Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-06-24 Thread Samo Pogačnik
Hi Daniel,

i prepared another candidate for the 0.4.6-1 release (

https://salsa.debian.org/spog/git-subrepo/-/commit/f96eeedd0e96b6f2bbcc8c013909de5d5325cafe
), hoping it ticks all the boxes and more:)

I made the PR upstream (https://github.com/ingydotnet/git-subrepo/pull/623) and
added 'Forwarded' fields with PR to all five patches. I hope that making a
separate commit for adding 'Forwarded' field to patches is ok.

The 'git-subrepo.d' subdir has been removed upon 'make install' and additional
Makefile adjustment done according to your suggestions.

Regarding internal test suite, things weren't that trivial, as the
implementation requires that the project is a git worktree. However debian
builds from a non-git tarball. I fixed that by git-initializing the project on
the fly, when needed as well as providing local git configuration for all repos
involved in tests. Another thing regarding tests was that they rely upon english
output, so tests failed in reprotest, when executed in a French environment for
example. By setting fixed locale during each test being run, it all went well.

I also went a step further regarding tests. Three test repos being used by
several tests were committed upstream as binary bare git repos, which i really
do not like. So i prepared a few scripts, which generate the same repos with the
same history upon each test suite startup.

best regards, Samo



Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-06-14 Thread Daniel Gröber
Hi Samo,

On Fri, Jun 14, 2024 at 09:55:31PM +0200, Samo Pogačnik wrote:
> Hi Daniel,
> 
> Dne 14.06.2024 (pet) ob 20:50 +0200 je Daniel Gröber napisal(a):
> > Below you're not ACK'ing some of my comments again. With email review you
> > really kind of have to say something about each comment otherwise it's
> > really hard to tell if you just missed one or not and it's easier to
> > discuss any disagreements sooner (when I have forgotten less of the context
> > :x)
> > rather than later when you send the next version.
>
> I just realized that i sent the unfinished mail instead of saving the
> draft. I am sorry. I'll add the missing replies here and thanks for the
> valuable response.

No worries, that happens :)

> > I noticed another thing, w
> > e disable the test suite for what appear to be
> > trivial reasons. I really don't like maintaining packages without a test
> > suite so this is a no-go. Please look into why it's not working and fix it
> > with more upstreamable patches if necessary.
> > 
> > From a quick look it seems removing the `git config core.autocrlf input`
> > call in test/setup already gets us quite far but the way git subrepo finds
> > its libs needs adjustment too.
> > 
> > Commit review below:
> > 
> > > From: Samo Pogačnik 
> > > 
> > > Default 'git-core' location of git-subrepo executables currently
> > 
> > +The default 'git-core' ... ?
> thanks
> 
> > 
> > > does not automatically integrate git-subrepo into git's own bash-
> > > completion. This change moves git-subrepo executables into
> > > /usr/share/git-subrepo and adds a symlink of its main executable
> > > script into /usr/bin to achieve recognition of the 'git subrepo'
> > > sub-command under the git bash-completion (through git's:
> > > --list-cmds=...,other,...).
> > > 
> > > Gbp-Pq: Name 0001-Fixed-bash-completion-integration-with-git.patch
> > > ---
> > >  Makefile | 4 +++-
> > >  1 file changed, 3 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/Makefile b/Makefile
> > > index 79898f5..3d84454 100644
> > > --- a/Makefile
> > > +++ b/Makefile
> > > @@ -17,7 +17,7 @@ SHARE = share
> > >  
> > >  # Install variables:
> > >  PREFIX ?= /usr/local
> > > -INSTALL_LIB  ?= $(DESTDIR)$(shell git --exec-path)
> > > +INSTALL_LIB  ?= $(DESTDIR)$(PREFIX)/share/$(NAME)
> > 
> > While we're fixing upstream's mess $(DESTDIR) should be interpolated in the
> > install target only so overriding the directory structure is easier.
> > 
> > The install target should look something like this, vars listed for
> > clarity:
> > 
> > ```
> > PREFIX ?= /usr/local
> > INSTALL_LIB ?= $(PREFIX)/share/$(NAME)
> > install:
> >   $(INSTALL) -d -m 0755 $(DESTDIR)$(INSTALL_LIB)/
> >   $(INSTALL) -C -m 0755 $(LIB) $(DESTDIR)$(INSTALL_LIB)/
> > ```
> > 
> > Notice the canonical use of $(INSTALL) instead of the plain command,
> > doesn't make a difference in this case but it's good Makefile hygiene.
> > 
> ACK
> 
> > With that setup we can just export the INSTALL_* vars in debian/rules to
> > override them:
> > 
> > export INSTALL_LIB=/usr/share/git-subrepo
> > export INSTALL_EXT=$(INSTALL_LIB)
> > 
> > Setting INSTALL_EXT equal to INSTALL_LIB gets rid of the git-subrepo.d as
> > I've been requesting.
> > 
> > I'm sending you the full patch "Drop unecessary subdir in usr/share" I used
> > to test this seperately, lets see if you can figure out how to apply it to
> > your repo ;)
> > 
> ACK
> 
> > You still have to add a seperate commit to make the $(DESTDIR) adjustment.
> > 
> > >  INSTALL_EXT  ?= $(INSTALL_LIB)/$(NAME).d
> > >  INSTALL_MAN1 ?= $(DESTDIR)$(PREFIX)/share/man/man1
> > >  
> > > @@ -67,6 +67,8 @@ install:
> > > install -C -m 0755 $(EXTS) $(INSTALL_EXT)/
> > > install -d -m 0755 $(INSTALL_MAN1)/
> > > install -C -m 0644 $(MAN1)/$(NAME).1 $(INSTALL_MAN1)/
> > > +   install -d -m 0755 $(DESTDIR)$(PREFIX)/bin/
> > > +   ln -s ../share/$(NAME)/$(NAME) $(DESTDIR)$(PREFIX)/bin/$(NAME)
> > 
> > Creating symlinks like this we'd usually do with dh_link(1). This would be
> > OK if you're intending to send this patch upstream?
> > 
> ACK
> 
> > > --- a/Makefile
> > > +++ b/Makefile
> > > @@ -64,7 +64,7 @@ install:
> > > install -C -m 0755 $(LIB) $(INSTALL_LIB)/
> > > sed -i 's!^SUBREPO_EXT_DIR=.*!SUBREPO_EXT_DIR=$(INSTALL_EXT)!'
> > > $(INSTALL_LIB)/$(NAME)
> > > install -d -m 0755 $(INSTALL_EXT)/
> > > -   install -C -m 0755 $(EXTS) $(INSTALL_EXT)/
> > > +   install -C -m 0644 $(EXTS) $(INSTALL_EXT)/
> > 
> > This sort of thing would usually be done in debian/rules to keep things
> > maintainable. Again if the patch is intended to go upstream it's
> > acceptable.
> > 
> ACK
> 
> > > diff --git a/lib/git-subrepo.d/help-functions.bash 
> > > b/lib/git-subrepo.d/help-
> > > functions.bash
> > > index 123bb54..6dd5c17 100644
> > > --- a/lib/git-subrepo.d/help-functions.bash
> > > +++ b/lib/git-subrepo.d/help-functions.bash
> > > @@ -1,5 +1,3 @@
> > > -#!/usr/bin/env bash
> > > -
> > >  # DO NOT EDIT. This file 

Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-06-14 Thread Samo Pogačnik
Hi Daniel,

Dne 14.06.2024 (pet) ob 20:50 +0200 je Daniel Gröber napisal(a):
> 
> Below you're not ACK'ing some of my comments again. With email review you
> really kind of have to say something about each comment otherwise it's
> really hard to tell if you just missed one or not and it's easier to
> discuss any disagreements sooner (when I have forgotten less of the context
> :x)
> rather than later when you send the next version.
> 
I just realized that i sent the unfinished mail instead of saving the draft. I
am sorry. I'll add the missing replies here and thanks for the valuable 
response.

> I noticed another thing, w
> e disable the test suite for what appear to be
> trivial reasons. I really don't like maintaining packages without a test
> suite so this is a no-go. Please look into why it's not working and fix it
> with more upstreamable patches if necessary.
> 
> From a quick look it seems removing the `git config core.autocrlf input`
> call in test/setup already gets us quite far but the way git subrepo finds
> its libs needs adjustment too.
> 
> Commit review below:
> 
> > From: Samo Pogačnik 
> > 
> > Default 'git-core' location of git-subrepo executables currently
> 
> +The default 'git-core' ... ?
thanks

> 
> > does not automatically integrate git-subrepo into git's own bash-
> > completion. This change moves git-subrepo executables into
> > /usr/share/git-subrepo and adds a symlink of its main executable
> > script into /usr/bin to achieve recognition of the 'git subrepo'
> > sub-command under the git bash-completion (through git's:
> > --list-cmds=...,other,...).
> > 
> > Gbp-Pq: Name 0001-Fixed-bash-completion-integration-with-git.patch
> > ---
> >  Makefile | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/Makefile b/Makefile
> > index 79898f5..3d84454 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -17,7 +17,7 @@ SHARE = share
> >  
> >  # Install variables:
> >  PREFIX ?= /usr/local
> > -INSTALL_LIB  ?= $(DESTDIR)$(shell git --exec-path)
> > +INSTALL_LIB  ?= $(DESTDIR)$(PREFIX)/share/$(NAME)
> 
> While we're fixing upstream's mess $(DESTDIR) should be interpolated in the
> install target only so overriding the directory structure is easier.
> 
> The install target should look something like this, vars listed for
> clarity:
> 
> ```
> PREFIX ?= /usr/local
> INSTALL_LIB ?= $(PREFIX)/share/$(NAME)
> install:
>   $(INSTALL) -d -m 0755 $(DESTDIR)$(INSTALL_LIB)/
>   $(INSTALL) -C -m 0755 $(LIB) $(DESTDIR)$(INSTALL_LIB)/
> ```
> 
> Notice the canonical use of $(INSTALL) instead of the plain command,
> doesn't make a difference in this case but it's good Makefile hygiene.
> 
ACK

> With that setup we can just export the INSTALL_* vars in debian/rules to
> override them:
> 
> export INSTALL_LIB=/usr/share/git-subrepo
> export INSTALL_EXT=$(INSTALL_LIB)
> 
> Setting INSTALL_EXT equal to INSTALL_LIB gets rid of the git-subrepo.d as
> I've been requesting.
> 
> I'm sending you the full patch "Drop unecessary subdir in usr/share" I used
> to test this seperately, lets see if you can figure out how to apply it to
> your repo ;)
> 
ACK

> You still have to add a seperate commit to make the $(DESTDIR) adjustment.
> 
> >  INSTALL_EXT  ?= $(INSTALL_LIB)/$(NAME).d
> >  INSTALL_MAN1 ?= $(DESTDIR)$(PREFIX)/share/man/man1
> >  
> > @@ -67,6 +67,8 @@ install:
> > install -C -m 0755 $(EXTS) $(INSTALL_EXT)/
> > install -d -m 0755 $(INSTALL_MAN1)/
> > install -C -m 0644 $(MAN1)/$(NAME).1 $(INSTALL_MAN1)/
> > +   install -d -m 0755 $(DESTDIR)$(PREFIX)/bin/
> > +   ln -s ../share/$(NAME)/$(NAME) $(DESTDIR)$(PREFIX)/bin/$(NAME)
> 
> Creating symlinks like this we'd usually do with dh_link(1). This would be
> OK if you're intending to send this patch upstream?
> 
ACK

> > --- a/Makefile
> > +++ b/Makefile
> > @@ -64,7 +64,7 @@ install:
> > install -C -m 0755 $(LIB) $(INSTALL_LIB)/
> > sed -i 's!^SUBREPO_EXT_DIR=.*!SUBREPO_EXT_DIR=$(INSTALL_EXT)!'
> > $(INSTALL_LIB)/$(NAME)
> > install -d -m 0755 $(INSTALL_EXT)/
> > -   install -C -m 0755 $(EXTS) $(INSTALL_EXT)/
> > +   install -C -m 0644 $(EXTS) $(INSTALL_EXT)/
> 
> This sort of thing would usually be done in debian/rules to keep things
> maintainable. Again if the patch is intended to go upstream it's
> acceptable.
> 
ACK

> > diff --git a/lib/git-subrepo.d/help-functions.bash b/lib/git-subrepo.d/help-
> > functions.bash
> > index 123bb54..6dd5c17 100644
> > --- a/lib/git-subrepo.d/help-functions.bash
> > +++ b/lib/git-subrepo.d/help-functions.bash
> > @@ -1,5 +1,3 @@
> > -#!/usr/bin/env bash
> > -
> >  # DO NOT EDIT. This file generated by pkg/bin/generate-help-functions.pl.
> 
> Should we not fix pkg/bin/generate-help-functions.pl too/instead ?
> 
> The header does say not to edit this ;)
> 
While, the released code contains both the generated code and the generators,
and it seem's that there is no need to call generators downstream, i corrected
both (see below).

> >  
> >  set -e
> > 

Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-06-14 Thread Daniel Gröber
Hi Samo,

On Fri, Jun 14, 2024 at 07:15:40PM +0200, Samo Pogačnik wrote:
> Thanks for the review. I'll do my best to include as much as i know how
> to into another 'release candidate', however it may take me a while.

Thanks for working on this :)

Recent discussion on d-devel makes me think git-subtree/subrepo have a good
chance of becoming more popular as we educate upstreams about how to
properly avoid future xz snafu. So you're doing really important work here <3

> Dne 10.06.2024 (pon) ob 22:26 +0200 je Daniel Gröber napisal(a):
> > In general you're missing the Debian patch metadata, see [DEP-3]. I hate
> > this archaic stuff I just mention it for completness. If you use gbp-pq for
> > generating the patches you can mostly ignore. I do like to use the
> > Forwarded field to note the upstream PR for the patch tho.
> > 
> > [DEP-3]: https://dep-team.pages.debian.net/deps/dep3/
> > 
> > Next time I see the patches I want to see a Forwarded field for each -- one
> > PR for all of them pleas, not spam upstream :)
> > 
> I am a bit confused. I'm not sure i want to present patches upstream while you
> (at least) have not yet accepted them. Otherwise i'd have to revise my 
> upstream
> proposal (and spam upstream) every time you find another thing i missed about
> the debian policy (which i probably will for some time). How do you see this?

That's not spamming upstream so much as just doing upstream development :)
There's nothing wrong with pushing revisions in that case. If you insist
you can send me the patches/branch for review first, but I don't see a need
for that. I was just trying to be clear about the fact that these patches
should be well motivated and single-purpose so upstream can understand
them.

If it happens that upstream and Debian policy disagree there's no problem
with sending upstream the patches they'll take and just add the rest on top
in the Debian package patch stack.

I do think we should try to always push patches upstream first to keep them
informed about what we're doing. The "spam" comment was really just me
making sure you're aware you're not expected to split each patch into it's
own PR. Don't worry about that too much.

Looking at the upstream activity I fear us being ignored may the worst
that'll happen. My hunch is that we may end up having to take over as
git-subrepo upstream. Only one way to know (send a PR) and in any case we'd
want clean commits :)

One workflow note: whatever you do you should make sure not to have Gbp-*
fields in the commits you send upstream. Getting the Debian tooling to
cooperate here can be a bit tricky. Give it a go and let me know if you
need help.

Overall what I'd try to do is commit the upstream changes[1] on top of our
debian/sid branch, build/test using the Debian tooling and once things are
working rebase onto the plain upstream branch then push that as a PR. The
problem you're going to run into is dpkg-source complaining about
unrepresented upstream changes. IIRC you can bypass that problem by only
doing binary builds (check dpkg-buildpackage.1 for how to do that) or if
all else fails temporarily switching the package to be format=3.0 (native)
instead of (quilt).

[1]: Dealing with changes that need both upstream and Debian adjustments is
probably where git-debrebase would come in handy as it (IIRC) can seperate
those a mixed upstream+Debian commit into seperate ones and then you can
easily get rid of the Debian specific stuff during the final rebase. You
can also just side-step that problem by committing such things separately
to begin with. Re-ordering is easy whenever commits are non-overlapping
after all.

> > > Dne 28.05.2024 (tor) ob 19:23 +0200 je Daniel Gröber napisal(a):
> > > > I'm not super happy with the approach of putting git-subrepo.d inside
> > > > /usr/share/git-subrepo tbh. I might be able to let it pass but it seems
> > > > lintian found another issue that needs patching anyway so you may as 
> > > > well
> > > > fix this too.
> > 
> > I'm still not seeing a change to remove git-subrepo.d. My comments don't
> > just go away by ignoring them :P
> > 
> I am sorry that you felt ignored. I simply thought i have a choice here and 
> tbh
> i still do not see what could be wrong by having sourced only scripts in a
> separate subdirectory. I'd be happy to understand your git-subrepo.d concerns
> better to be able to fully support this decision. 

No worries. You do have a choice but you should at least communicate why
you don't want to do what I suggest i.e. all review comments should be
responded to with something lik ACK or NACK+further-discussion.

It's not so much about "something wrong" as it is just a matter of having
tidy and predictable structure.

> > I noticed another thing, we disable the test suite for what appear to
> > be trivial reasons. I really don't like maintaining packages without a
> > test suite so this is a no-go. Please look into why it's not working
> > and fix it with more upstreamable patches if 

Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-06-14 Thread Samo Pogačnik
Hi Daniel,

Thanks for the review. I'll do my best to include as much as i know how to into
another 'release candidate', however it may take me a while. I also have some
additional concerns/questions below...

Dne 10.06.2024 (pon) ob 22:26 +0200 je Daniel Gröber napisal(a):
> In general you're missing the Debian patch metadata, see [DEP-3]. I hate
> this archaic stuff I just mention it for completness. If you use gbp-pq for
> generating the patches you can mostly ignore. I do like to use the
> Forwarded field to note the upstream PR for the patch tho.
> 
> [DEP-3]: https://dep-team.pages.debian.net/deps/dep3/
> 
> Next time I see the patches I want to see a Forwarded field for each -- one
> PR for all of them pleas, not spam upstream :)
> 
I am a bit confused. I'm not sure i want to present patches upstream while you
(at least) have not yet accepted them. Otherwise i'd have to revise my upstream
proposal (and spam upstream) every time you find another thing i missed about
the debian policy (which i probably will for some time). How do you see this? 

> > Dne 28.05.2024 (tor) ob 19:23 +0200 je Daniel Gröber napisal(a):
> > > I'm not super happy with the approach of putting git-subrepo.d inside
> > > /usr/share/git-subrepo tbh. I might be able to let it pass but it seems
> > > lintian found another issue that needs patching anyway so you may as well
> > > fix this too.
> 
> I'm still not seeing a change to remove git-subrepo.d. My comments don't
> just go away by ignoring them :P
> 
I am sorry that you felt ignored. I simply thought i have a choice here and tbh
i still do not see what could be wrong by having sourced only scripts in a
separate subdirectory. I'd be happy to understand your git-subrepo.d concerns
better to be able to fully support this decision. 

> I noticed another thing, w
> e disable the test suite for what appear to be
> trivial reasons. I really don't like maintaining packages without a test
> suite so this is a no-go. Please look into why it's not working and fix it
> with more upstreamable patches if necessary.
> 
> From a quick look it seems removing the `git config core.autocrlf input`
> call in test/setup already gets us quite far but the way git subrepo finds
> its libs needs adjustment too.
> 
> Commit review below:
> 
> > From: Samo Pogačnik 
> > 
> > Default 'git-core' location of git-subrepo executables currently
> 
> +The default 'git-core' ... ?
thanks
> 
> > does not automatically integrate git-subrepo into git's own bash-
> > completion. This change moves git-subrepo executables into
> > /usr/share/git-subrepo and adds a symlink of its main executable
> > script into /usr/bin to achieve recognition of the 'git subrepo'
> > sub-command under the git bash-completion (through git's:
> > --list-cmds=...,other,...).
> > 
> > Gbp-Pq: Name 0001-Fixed-bash-completion-integration-with-git.patch
> > ---
> >  Makefile | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/Makefile b/Makefile
> > index 79898f5..3d84454 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -17,7 +17,7 @@ SHARE = share
> >  
> >  # Install variables:
> >  PREFIX ?= /usr/local
> > -INSTALL_LIB  ?= $(DESTDIR)$(shell git --exec-path)
> > +INSTALL_LIB  ?= $(DESTDIR)$(PREFIX)/share/$(NAME)
> 
> While we're fixing upstream's mess $(DESTDIR) should be interpolated in the
> install target only so overriding the directory structure is easier.
> 
> The install target should look something like this, vars listed for
> clarity:
> 
> ```
> PREFIX ?= /usr/local
> INSTALL_LIB ?= $(PREFIX)/share/$(NAME)
> install:
>   $(INSTALL) -d -m 0755 $(DESTDIR)$(INSTALL_LIB)/
>   $(INSTALL) -C -m 0755 $(LIB) $(DESTDIR)$(INSTALL_LIB)/
> ```
> 
> Notice the canonical use of $(INSTALL) instead of the plain command,
> doesn't make a difference in this case but it's good Makefile hygiene.
> 
> With that setup we can just export the INSTALL_* vars in debian/rules to
> override them:
> 
> export INSTALL_LIB=/usr/share/git-subrepo
> export INSTALL_EXT=$(INSTALL_LIB)
> 
> Setting INSTALL_EXT equal to INSTALL_LIB gets rid of the git-subrepo.d as
> I've been requesting.
> 
> I'm sending you the full patch "Drop unecessary subdir in usr/share" I used
> to test this seperately, lets see if you can figure out how to apply it to
> your repo ;)
> 
> You still have to add a seperate commit to make the $(DESTDIR) adjustment.
> 
> >  INSTALL_EXT  ?= $(INSTALL_LIB)/$(NAME).d
> >  INSTALL_MAN1 ?= $(DESTDIR)$(PREFIX)/share/man/man1
> >  
> > @@ -67,6 +67,8 @@ install:
> > install -C -m 0755 $(EXTS) $(INSTALL_EXT)/
> > install -d -m 0755 $(INSTALL_MAN1)/
> > install -C -m 0644 $(MAN1)/$(NAME).1 $(INSTALL_MAN1)/
> > +   install -d -m 0755 $(DESTDIR)$(PREFIX)/bin/
> > +   ln -s ../share/$(NAME)/$(NAME) $(DESTDIR)$(PREFIX)/bin/$(NAME)
> 
> Creating symlinks like this we'd usually do with dh_link(1). This would be
> OK if you're intending to send this patch upstream?
> 
> >  
> >  # Uninstall support:
> 

Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-06-10 Thread Daniel Gröber

Hi Samo,

On Sat, Jun 01, 2024 at 10:01:53AM +0200, Samo Pogačnik wrote:
> I prepared a new 0.4.6-1 release with patched upstream regarding:
> - bash-completition integration with git
> - executable permissions on sourced-only files
> - hashbangs inside sourced-only files
>
> I've also removed old lintian-override from debian/, since it is not
> required anymore.

Thanks, commit review inline below.

In general you're missing the Debian patch metadata, see [DEP-3]. I hate
this archaic stuff I just mention it for completness. If you use gbp-pq for
generating the patches you can mostly ignore. I do like to use the
Forwarded field to note the upstream PR for the patch tho.

[DEP-3]: https://dep-team.pages.debian.net/deps/dep3/

Next time I see the patches I want to see a Forwarded field for each -- one
PR for all of them pleas, not spam upstream :)

> Dne 28.05.2024 (tor) ob 19:23 +0200 je Daniel Gröber napisal(a):
> > I'm not super happy with the approach of putting git-subrepo.d inside
> > /usr/share/git-subrepo tbh. I might be able to let it pass but it seems
> > lintian found another issue that needs patching anyway so you may as well
> > fix this too.

I'm still not seeing a change to remove git-subrepo.d. My comments don't
just go away by ignoring them :P

I noticed another thing, we disable the test suite for what appear to be
trivial reasons. I really don't like maintaining packages without a test
suite so this is a no-go. Please look into why it's not working and fix it
with more upstreamable patches if necessary.

From a quick look it seems removing the `git config core.autocrlf input`
call in test/setup already gets us quite far but the way git subrepo finds
its libs needs adjustment too.

Commit review below:

> From: Samo Pogačnik 
> 
> Default 'git-core' location of git-subrepo executables currently

+The default 'git-core' ... ?

> does not automatically integrate git-subrepo into git's own bash-
> completion. This change moves git-subrepo executables into
> /usr/share/git-subrepo and adds a symlink of its main executable
> script into /usr/bin to achieve recognition of the 'git subrepo'
> sub-command under the git bash-completion (through git's:
> --list-cmds=...,other,...).
> 
> Gbp-Pq: Name 0001-Fixed-bash-completion-integration-with-git.patch
> ---
>  Makefile | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index 79898f5..3d84454 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -17,7 +17,7 @@ SHARE = share
>  
>  # Install variables:
>  PREFIX ?= /usr/local
> -INSTALL_LIB  ?= $(DESTDIR)$(shell git --exec-path)
> +INSTALL_LIB  ?= $(DESTDIR)$(PREFIX)/share/$(NAME)

While we're fixing upstream's mess $(DESTDIR) should be interpolated in the
install target only so overriding the directory structure is easier.

The install target should look something like this, vars listed for
clarity:

```
PREFIX ?= /usr/local
INSTALL_LIB ?= $(PREFIX)/share/$(NAME)
install:
$(INSTALL) -d -m 0755 $(DESTDIR)$(INSTALL_LIB)/
$(INSTALL) -C -m 0755 $(LIB) $(DESTDIR)$(INSTALL_LIB)/
```

Notice the canonical use of $(INSTALL) instead of the plain command,
doesn't make a difference in this case but it's good Makefile hygiene.

With that setup we can just export the INSTALL_* vars in debian/rules to
override them:

export INSTALL_LIB=/usr/share/git-subrepo
export INSTALL_EXT=$(INSTALL_LIB)

Setting INSTALL_EXT equal to INSTALL_LIB gets rid of the git-subrepo.d as
I've been requesting.

I'm sending you the full patch "Drop unecessary subdir in usr/share" I used
to test this seperately, lets see if you can figure out how to apply it to
your repo ;)

You still have to add a seperate commit to make the $(DESTDIR) adjustment.

>  INSTALL_EXT  ?= $(INSTALL_LIB)/$(NAME).d
>  INSTALL_MAN1 ?= $(DESTDIR)$(PREFIX)/share/man/man1
>  
> @@ -67,6 +67,8 @@ install:
>   install -C -m 0755 $(EXTS) $(INSTALL_EXT)/
>   install -d -m 0755 $(INSTALL_MAN1)/
>   install -C -m 0644 $(MAN1)/$(NAME).1 $(INSTALL_MAN1)/
> + install -d -m 0755 $(DESTDIR)$(PREFIX)/bin/
> + ln -s ../share/$(NAME)/$(NAME) $(DESTDIR)$(PREFIX)/bin/$(NAME)

Creating symlinks like this we'd usually do with dh_link(1). This would be
OK if you're intending to send this patch upstream?

>  
>  # Uninstall support:
>  uninstall:
> -- 
> 2.39.2
> 

> From: Samo Pogačnik 
> 
> Bash scripts under git-suberpo.d are not to be executed standalone
> therefore should not have executable permissions.
> 
> Gbp-Pq: Name 0002-Removed-executable-permission-on-sourced-only-files.patch
> ---
>  Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index 3d84454..818cd7d 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -64,7 +64,7 @@ install:
>   install -C -m 0755 $(LIB) $(INSTALL_LIB)/
>   sed -i 's!^SUBREPO_EXT_DIR=.*!SUBREPO_EXT_DIR=$(INSTALL_EXT)!' 
> $(INSTALL_LIB)/$(NAME)
>   install -d -m 0755 $(INSTALL_EXT)/
> - install -C -m 

Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-06-01 Thread Samo Pogačnik
Hi Daniel,

Dne 28.05.2024 (tor) ob 19:23 +0200 je Daniel Gröber napisal(a):
> I'm not super happy with the approach of putting git-subrepo.d inside
> /usr/share/git-subrepo tbh. I might be able to let it pass but it seems
> lintian found another issue that needs patching anyway so you may as well
> fix this too.
> 
> W: git-subrepo: bash-completion-with-hashbang bash [usr/share/bash-
> completion/completions/git-subrepo:1]
> W: git-subrepo: executable-not-elf-or-script [usr/share/git-subrepo/git-
> subrepo.d/bash+.bash]
> W: git-subrepo: mismatched-override executable-not-elf-or-script
> usr/lib/git-core/git-subrepo.d/bash+.bash [usr/share/lintian/overrides/git-
> subrepo:1]
> N: 0 hints overridden; 1 unused override
> 
> indeed bash+.bash is +x but shouldn't be.
> 
> I'm not sure whether bash-completion-with-hashbang should really be W
> severity but the '#!bash' it has is certainly completely wrong. Looks like
> you'll have to get over your fear of patching upstream ;)
> 

I prepared a new 0.4.6-1 release (
https://salsa.debian.org/spog/git-subrepo/-/commit/ebbc6e9df46b479f1517a5dbd8486b95f511d5be
) with patched upstream regarding:
- bash-completition integration with git
- executable permissions on sourced-only files
- hashbangs inside sourced-only files

I've also removed old lintian-override from debian/, since it is not required
anymore.

--Samo



Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-05-28 Thread Daniel Gröber
Hi Samo,

On Sat, May 25, 2024 at 07:30:46PM +0200, Samo Pogačnik wrote:
> https://salsa.debian.org/spog/git-subrepo/-/commit/42628d43faa4a05eb3dd3c4b75d9d194ce6bda90

I'm not super happy with the approach of putting git-subrepo.d inside
/usr/share/git-subrepo tbh. I might be able to let it pass but it seems
lintian found another issue that needs patching anyway so you may as well
fix this too.

W: git-subrepo: bash-completion-with-hashbang bash 
[usr/share/bash-completion/completions/git-subrepo:1]
W: git-subrepo: executable-not-elf-or-script 
[usr/share/git-subrepo/git-subrepo.d/bash+.bash]
W: git-subrepo: mismatched-override executable-not-elf-or-script 
usr/lib/git-core/git-subrepo.d/bash+.bash 
[usr/share/lintian/overrides/git-subrepo:1]
N: 0 hints overridden; 1 unused override

indeed bash+.bash is +x but shouldn't be.

I'm not sure whether bash-completion-with-hashbang should really be W
severity but the '#!bash' it has is certainly completely wrong. Looks like
you'll have to get over your fear of patching upstream ;)

--Daniel


signature.asc
Description: PGP signature


Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-05-11 Thread Samo Pogačnik
Dne 06.05.2024 (pon) ob 15:02 +0200 je Daniel Gröber napisal(a):
> 
> Hmm. I'm not sure I like the idea of abusing libexec in this
> way. Technically speaking it's for "internal binaries that are not intended
> to be executed directly by users or shell scripts" this is clearly not the
> case here.
> 
> Looking over [git-* packages] to see what other packages do I see most git
> addons are in fact installed into /usr/bin.
> 
> [git-* packages]: 
> 
https://packages.debian.org/search?searchon=contents=git-=filename=stable=any
> 
> Notable exception: git-absorb is still in lib/git-core and has [Bug#985775]
> which seems like it may be relevant to our problem. Have a read of it when
> you get the chance. Some snippets "Git changed the gitexecdir directory"
> maybe that change is what broke completion from git-core?  "... git-absorb
> works but git's bash completion doesn't suggest absorb" So they are aware
> of the completion issue already.
> 
> [Bug#985775]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=985775

I also believe, this bug indicates the same problem. Unfortunately nothing have
changed since 2021. A reference to a git change in the bug report indicates that
one can add completion commands like:
git config --global completion.commands subrepo
I've tested that and it works, however i am not a fan of this solution, while
automatic detection of /usr/bin/git-* is available.

> 
> Anyway. I think the right solution here is to patch git-subrepo. IMO what's
> in git-subrepo.d really belongs in /usr/share/git-subrepo OR could just be
> concatenated into the main git-subrepo script, hmm. Bonus points for
> forwarding this bug and patch upstream.
> 

I prepared another change regarding git bash-completion integration using
"/usr/bin" and "/usr/share" in a similar way as some other packages (i.e. dcut,
dput, lintian, ...).

And yes it may be worth asking upstream how do they feel about the problem. For
now i've avoided touching upstream code, but if you prefer i can try to rework
the change in upstream code and produce first patch for the package.

--Samo



Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-05-07 Thread Samo Pogačnik
Hi Daniel,

Dne 06.05.2024 (pon) ob 15:02 +0200 je Daniel Gröber napisal(a):
> 
> To be clear force-push should never ever be done when collaborating on the
> branche(s) with multiple people, except in the most dire of circumstances
> and only if everyone involved is notified appropriately. I'll be happy to
> give you commit rights on the repo as soon as you show you've internalised
> this :)
> 

I am aware that force-push on shared branches causes a mess for all other branch
users. For that reason i'd do initial work on my forked repo to propose changes 
and use force-push exclusively on my fork to reset its state to what is already 
in the collab-repo as needed.

> I thought we agreed on using plain gbp for now?
> 

Exactly, i temporarily used my old dgitized fork, until a new collab-maint-repo
is ready. I am sorry, if i did not explain mysef enough regarding that, while
working on bash-completion issue.
Now my dgitized repo is unforked and renamed to git-subrepo_dgit and a new fork
is created: https://salsa.debian.org/spog/git-subrepo

Then i also prepared a fresh update:
 git clone g...@salsa.debian.org:spog/git-subrepo.git
 cd git-subrepo/
 git remote -v
 git remote add upstream https://github.com/ingydotnet/git-subrepo.git
 git remote -v
 git fetch upstream
 gbp import-ref -u 0.4.6
 gbp dch --snapshot --auto debian/
 vim debian/changelog 
 git diff
 gbp buildpackage --git-ignore-new
 gbp dch --release --auto
 git diff
 git commit -m"Release 0.4.6-1" debian/changelog
 gbp buildpackage
 git push
 git switch upstream
 git pull upstream master
 git log
 git reset --hard HEAD~1
 git log
 git push --tags origin debian/sid upstream
 git switch debian/sid
 
This is now the updated state pushed into my fork without additional changes
regarding bash-completion.


> 
> 73a01 | | * upstream origin/upstream docs: Replace 404$  Edwin Kofler   5M
>   | |/
> 110b9 | * 0.4.6 Release 0.4.6Austin Morgan  1Y
> 
> The upstream branch is ahead of the 0.4.6 tag. Why? Seems to me you meddled
> with the upstream branch by hand instead of letting the tooling take care
> of it. Technicaly not a problem just makes me wonder what you're doing.
> 

I wonder why the tool didn't care about it again (see above). Perhaps because
the upstream branch has not been checked out initially (oh, i should've probably
called gbp clone instead of git clone - my bad).

I'll prepare another change regarding bash-completion later. I saw a few
examples using "/usr/share" from "/usr/bin" (i.e. dcut, dput, lintian, ...).

Anyway, thanks for the thorough review,
--Samo



Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2024-05-06 Thread Daniel Gröber
Hi Samo,

On Sat, Apr 27, 2024 at 10:48:01AM +0200, Samo Pogačnik wrote:
> > So you should be doing something like this:
> > 
> > $ git remote add upstream https://github.com/ingydotnet/git-subrepo.git
> > $ git fetch upstream
> > $ gbp import-ref -u 0.4.6 # this will do the upstream tag/branch
> >   # changes and create the merge
> > $ gbp dch
> > 
> > $ gbp buildpackage [...sbuild runes...]
> > 
> > $ git push --tags salsa debian/sid upstream
> > 
> > There's also `gbp push` to make the git-push easier but it only works after
> > doing a `gbp tag` to create the debian/* tag. This is however inappropriate
> > for you as DM to do as the convention is to have the debian tag correspond
> > to what I upload not what you propose to me :)
> > 
> > On my side I'll do:
> > 
> > $ gbp pull samo
> > 
> > $ gbp buildpackage [...sbuild runes...]
> > 
> > $ gbp tag# creates the debian/* tag
> > $ debrelease   # upload to ftp-master
> > $ gbp push salsa
> > 
> > Hope that gives you something more actionable than my previous mails.
>
> Thanks for this explanation. I suppose we shall apply this workflow upon
> the git-repo, that you are going to push into the debian/* namespace.

Yup, just want to make sure you have the ins and outs of the workflow down
first.

> As i understand, we are going to push and pull our changes from the same
> branches of the sam git-repo, however i got a bit confused by your 'gbp
> pull samo' command which indicates another git-repo involved. If your
> initial command should've been 'gbp pull salsa', then it is clear to me.

There's not much difference really. I'm just a stickler for clean git
history and also want to make sure new contributors un-learn the really bad
force-pushing habbit Git-hub/lab/tea teach people.

To be clear force-push should never ever be done when collaborating on the
branche(s) with multiple people, except in the most dire of circumstances
and only if everyone involved is notified appropriately. I'll be happy to
give you commit rights on the repo as soon as you show you've internalised
this :)

On Wed, May 01, 2024 at 11:09:48PM +0200, Samo Pogačnik wrote:
> i noticed, that bash-completion integration with git does not work.

Good catch, I don't use completions at that level much myself so I probably
wouldn't have noticed :)

> However i noticed, that the --list-cmds group 'other' scans the /usr/bin/
> directory, where our old friend 'git-debrebase' and friends already
> reside and are being successfully recognized by git. Thus i prepared a
> change (in my salsa repo: in
> https://salsa.debian.org/spog/git-subrepo/-/tree/debian/sid) to change
> the target installation directory, which seems to work.

Sounds like a reasonable plan.

On Sat, May 04, 2024 at 01:48:56PM +0200, Samo Pogačnik wrote:
> Unfortunately, lintian is not happy with my solution above (does not
> allow subdirs in /usr/bin and however git-subrepo script searches its
> helper functions in git-subrepo.d subdir in the location of main
> git-subrepo script).

Right, that doesn't comply with policy at all. My first instinct would be
to patch git-subrepo to parameterise the path to git-subrepo.d and send
that patch upstream.

> I managed to prepare another solution, without changing upstream sources
> in a way to move 'git-subrepo' executable scripts into
> /usr/libexec/git-subrepo and by adding a symlink to main git-subrepo
> executable into /usr/bin. That way bash- completion integration works as
> in the initial solution and lintian is also happy.

Hmm. I'm not sure I like the idea of abusing libexec in this
way. Technically speaking it's for "internal binaries that are not intended
to be executed directly by users or shell scripts" this is clearly not the
case here.

Looking over [git-* packages] to see what other packages do I see most git
addons are in fact installed into /usr/bin.

[git-* packages]: 
https://packages.debian.org/search?searchon=contents=git-=filename=stable=any

Notable exception: git-absorb is still in lib/git-core and has [Bug#985775]
which seems like it may be relevant to our problem. Have a read of it when
you get the chance. Some snippets "Git changed the gitexecdir directory"
maybe that change is what broke completion from git-core?  "... git-absorb
works but git's bash completion doesn't suggest absorb" So they are aware
of the completion issue already.

[Bug#985775]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=985775

Anyway. I think the right solution here is to patch git-subrepo. IMO what's
in git-subrepo.d really belongs in /usr/share/git-subrepo OR could just be
concatenated into the main git-subrepo script, hmm. Bonus points for
forwarding this bug and patch upstream.


Git Review
--

Now, let's get into the review. Here's what I see -- if you're not reading
this in a monospace font this is the time to reconsider your ~life~
eer. config choices :D

84c24 * 

Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2021-01-04 Thread Daniel Gröber
Hi Samo,

thanks for the quick review!

On Mon, Jan 04, 2021 at 09:01:51PM +0100, Samo Pogačnik wrote:
> Thanks for that. I sincerely hope, that you get through with this useful tool.

I saw you submitted an RFS for git-subrepo a while back. I was wondering
what happened with that. It's not clear from what's in the BTS why it
didn't get uploaded, did you just not get a response from anyone?

In case you are still interested in maintaining git-subrepo perhaps we
could co-maintian it if you like?

> By the way, your salsa (Vcs:) link does not work (guest-dxld should
> probably be dxld-guest).

Ah good catch, fixed in 0.4.3-2.

Side note: I'm not sure if I'm supposed to increment the debian revision
during the mentors process or if should I just keep the initial -1
revision.

Thanks,
--Daniel

PS: You seem to have replied off-list, do you mind if I forward my response
to the BTS/debian-mentors list also?



Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2021-01-04 Thread Daniel Gröber
Hi Samo,

On Mon, Jan 04, 2021 at 11:16:04PM +0100, Samo Pogačnik wrote:
> Dne 04.01.2021 (pon) ob 22:11 +0100 je Daniel Gröber napisal(a):
> > I saw you submitted an RFS for git-subrepo a while back. I was wondering
> > what happened with that. It's not clear from what's in the BTS why it
> > didn't get uploaded, did you just not get a response from anyone?
> there was simply no response to my RFS and 'mentors' upload got automatically
> deleted about a month ago (after almost a year).

Ah, I see. I didn't know mentors.d.net garbage collects packages
automatically.

> I have no extra preferences for maintaining the package because i am very
> inexperienced regarding debian packaging. Otherwise i am willing to help...

It's up to you, if you don't feel up to it I'm happy to do it. It's just
always nice to have someone else that can jump in with package
updates. Bus-factor and all.

> Maybe i could not get more attention because of the 'native' type of my
> package which it self uses 'git subrepo' instead of the preferred 'quilt'
> approach (i really do not like managing series of patches, ...).

I would hope people would have simply complained about that if it was in
fact the problem. Seems to me there just aren't that many DDs actively
watching the mentors list or maybe people do reviews mostly off-list?

Had I seen the RFS I would have definitely complained about the weird repo
structure in the review ;)

I think people in Debian are trying to move to git-buildpackage (see also
DEP-14[1]) as the main way to manage packageing in git, and since it comes
with it's own way of importing upstream releases and such using git-subrepo
for the packaging is unlikely to go over well.

[1]: https://dep-team.pages.debian.net/deps/dep14/

I plan on using gbp-pq to manage patches as regular git commits. That seems
reasonably more comfortable than plain quilt, which I agree is a PITA.

> I even had the idea that git-subrepo is an excelent tool to enhance and
> maybe simplify debian packaging using git, but again i am too
> inexperienced to provide valid proposals covering all aspects of debian
> packaging.

Honestly I don't think it's worth swimming against the gbp stream at this
point. Personally I'd rather have one(ish) way of doing Debian packaging in
git so I can just jump into any package with debcheckout and be immediately
productive, instead of having to learn each maintainer's weird conventions
and tools fist.

One can always improve gbp if it doesn't optimally cover a particular
workflow yet.

> You are of course welcome to inspect my github project:
> https://github.com/spog/git-subrepo-debian

I had a look of course when I started packaging, but decided to start fresh
with gbp since I prefer forking the debian packaging from the upstream git
repo as it makes inspecting the history and git-bisect'ing across upstream
and debian revisions more streamlined.

--Daniel



Bug#979188: RFS: git-subrepo/0.4.3-1 [ITP] -- Alternative to git-submodule(1) and git-subtree(1)

2021-01-03 Thread Daniel Gröber
Package: sponsorship-requests
Severity: wishlist

Dear mentors,

I am looking for a sponsor for my package "git-subrepo":

 * Package name: git-subrepo
   Version : 0.4.3-1
   Upstream Author : Ingy döt Net 
 * URL : https://github.com/ingydotnet/git-subrepo
 * License : GPL-2+ and GPL-2, MIT
 * Vcs : https://salsa.debian.org/guest-dxld/git-subrepo
   Section : vcs

git-subrepo allows embedding and managing copies of other git repositories
in your repo for purposes such as vendoring.

Commits in the parent repo involving the subrepo can easily be pushed back
upstream even when they touch files outside the subrepo -- these will simply
be omitted.

Pulling new upstream commits back into your repo is naturally also possible.

git-subrepo is designed such that only the maintainer of a repo will
actually need to have it installed, contributors only need to do so if
they wish to push/pull from the subrepo's upstream and user should never
have to interact with git-subrepo at all since all of a subrepos file are
available right after a plain git-clone.

This is unlike git-submodule(1)s where all users and contributors must be
aware of their presence and deal with them.

git-subrepo is in principle somewhat similar to git-subtree(1) as it also
embedds snapshot copies of other repos, however it is much easier to use
and the way the history is kept is less convoluted. Pulling any number of
new commits from a subrepo's upstream will result in only a single commit
in the parent repo for example.

It builds this binary package:

  git-subrepo - Alternative to git-submodule(1) and git-subtree(1)

To access further information about this package, please visit the following 
URL:

  https://mentors.debian.net/package/git-subrepo/

Alternatively, one can download the package with dget using this command:

  dget -x 
https://mentors.debian.net/debian/pool/main/g/git-subrepo/git-subrepo_0.4.3-1.dsc

Changes for the initial release:

 git-subrepo (0.4.3-1) unstable; urgency=medium
 .
   * Initial release. (Closes: #911397)

Regards,
Daniel


signature.asc
Description: PGP signature