tracking submodules out of main directory.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

Here is my topic.

Is it possible to track a submodule through a relative path outside of a
submodule ?

The purpose of this thing is to maintain dependency through different
library or projects.

Let says this generic dependency tree.


project 1 --+--> library 1
            |
            +--> library 2


project 2 --+--> library 1
            |
            +--> library 3


project 3 --+--> library 2
            |
            +--> library 4
            |
            +--> project 1 --+--> library 1
                             |
                             +--> library 2

project 4 --+--> library 4
            |
            +--> project 1 --+--> library 1
            |                |
            |                +--> library 2
            |
            +--> project 2 --+--> library 1
            |                |
            |                +--> library 3
            |
            +--> project 3 --+--> library 2
                             |
                             +--> library 4
                             |
                             +--> project 1 --+--> library 1
                                              |
                                              +--> library 2

CAUTION : this is a tree of dependency not directory.

We can obviously solve this by doing trees of submodules just reflecting
the trees of dependency but it create somme problems.

  1. In project 4 I have 2 times project 1 and 3 times libraries 1 and 2
     And 2 times library 4.
  2. It is a wast of space.
  3. Different version of the same libraries or projects could be used.
  4. when linking object, multiples objects will export the same symbols

Point 2 could be acceptable in little project.

Point 4 could be addressed by a careful compilation schema.

Point 3 could be no issue and discard point 2 meaning if it is what you
        want in your work flow.
        But in my work flow it is a bug every thing NEED to be
        synchronized.

what I would like to have is every git tree in the same directory where
I put my code (not necessary a super project tree).

like this :

Anything/library_1
Anything/library_2
Anything/library_3
Anything/library_4
Anything/project_1 with a git submodule add ../library_1 ../library_2
Anything/project_2 with a git submodule add ../library_1 ../library_3
Anything/project_3 with a git submodule add ../library_2 ../library_4
                                            ../project_1
Anything/project_4 with a git submodule add ../library_4 ../project_1
                                            ../project_2 ../project_3

But when I do this I receive a
"fatal: '../library_1' is outside repository"

This is due to the fact that 'git add submodule' use the tests of
'git add' which prevent creating files outside of the working tree for
obvious security reasons.

But in my point of view the meaning of a submodule should be more like a
symlink on a repository than a sub tree.
And symlink does not seams to be prohibited even if they link to
something outside of the repository.

I have tried a work around by doing :
"git submodule add library_1 library_2" in project 1
and then replacing library_1 and library_2 by symlinks to
../library_1 and ../library_2
but git immediately track the symlink itself and not what is pointed to.
And even if it had worked, this type of work around is not clean.

I have think about removing the test in setup.c in case of adding a
submodule. But I am not deeply involved in git source code then I am not
sure of the possibles side effects of this modification.

As well may be there is an other solution that I still haven not think
about.

	Henri GEIST


--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]