git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jon Seymour <jon.seymour@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Jens.Lehmann@web.de
Subject: Re: [PATCH v2 2/2] submodule: fix handling of superproject with relative origin URLs
Date: Mon, 21 May 2012 23:52:56 +1000	[thread overview]
Message-ID: <CAH3AnrrNTrMcd6ZaUKqt9EgGvbRGBaqiqsPmECZAXZnahzr7OA@mail.gmail.com> (raw)
In-Reply-To: <7vfwau9tgc.fsf@alter.siamese.dyndns.org>

On Mon, May 21, 2012 at 12:08 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Jon Seymour <jon.seymour@gmail.com> writes:
>
>> Prior to this change, an operation such as git submodule add, init or
>> sync produced the wrong result when the origin URL of the superproject
>> was itself a relative URL.
>
> If you say you are "fixing" something in the title, it is already known to
> the reader that a broken behaviour exists in the code without the patch in
> question.  Instead of spending four useless words "Prior to this change",
> could "the wrong result" be clarified with either saying "wrong in what
> way" and/or "because of this and that reason"?
>

I hope v3 is closer to what you would like to see.

>> Note that superproject relative origin URLs of the form foo/bar
>> are still not handled correctly.
>
> I am not sure what the use case of such a layout is.  A project that has a
> "bar" repository as its superproject (or its one of submodules for that
> matter) may advertise that the other repository lives at ../bar.git, so
> that when these two projects are served at a random hosting service, such
> a cross-project pointer does not have to be rewritten as long as their
> relative location at the hosting service remains the same.  But what does
> it mean to say a related "foo" project lives in foo/bar.git directory
> relative to one project in the first place?  Does the project's $GIT_DIR/
> have a "foo" directory next to its "refs" and "objects"?  Probably I am
> missing what you are trying to achieve.  Puzzled.

I have tried to explain the use case again in 4/4 of the v3 patch (my
previous attempt
was in a previous reply to one of Jen's posts). I don't claim that
this is a common
use case at all, but it is a use case that I have used several times myself.

It is particularly useful in cases where there is a need to regularly
synchronize
a collection of git repos and other files across an "air gap" (for example, via
an intermediary USB drive) where one of the repos being synchronized is the
synchronization toolset itself.

In this case, it may well be that the origin repo for a particular
toolset instance
itself is actually located on a USB drive whose physical location changes as
the removable device used to  update the tool set changes.

The user may choose to manage the relative location of the USB drive with a
symbolic link (relative to the toolset) rather than a git origin URL.
(The advantage of
using a symbolic link in this case is that you can update the actual physical
location of the USB drive with a single update to a single symbolic
link - this may
be more convenient in cases where are multiple git repos that need to be synced
to the USB or if there are resources other than git repos on the USB).

So, for example, suppose the toolset is managed within ~/tools with directories
such as:

  ~/tools/bin
  ~/tools/lib

then, perhaps the origin copy of the toolset is found by:

  ~/tools/mnt/usb -> /media/MY_USB_DEVICE/tools

remote.origin.url in ~/tools/.git/config might refer to mnt/usb/tools so that
if the device occasionally changes to /media/YOUR_USB_DEVICE/tools
then this can be accomodated by updating a single symbolic link
(e.g. ~/tools/mnt/usb)

Apologies if this explanation is not clear enough.

Again, I don't claim it is a common use case, but then I don't see
any harm with git supporting it either since it doesn't require much
work.

jon

      reply	other threads:[~2012-05-21 13:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-19 23:00 [PATCH v2 1/2] submodule: add tests for add,sync,init in presence of relative super origin URL Jon Seymour
2012-05-19 23:00 ` [PATCH v2 2/2] submodule: fix handling of superproject with relative origin URLs Jon Seymour
2012-05-21  2:08   ` Junio C Hamano
2012-05-21 13:52     ` Jon Seymour [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAH3AnrrNTrMcd6ZaUKqt9EgGvbRGBaqiqsPmECZAXZnahzr7OA@mail.gmail.com \
    --to=jon.seymour@gmail.com \
    --cc=Jens.Lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).