Hi Magnus,

We had discussed using Git submodules in depth, but using them to keep our current ReactOS modularization would require a separate "reactos.git" and "rostests.git" repository. This comes with many drawbacks:

* A previously single commit modifying "reactos" and "rostests" would now be two unrelated commits to two repos. And on top of the code changes, you would need to change the target hash of the "rostests" submodule in "reactos".

* Creating a branch in "reactos" would not create a branch in "rostests" as well. You would have to replicate branch creation manually and change the submodule target hash again.

We basically introduced the modularization in SVN, because people could decide to just check out "reactos" without the rest, saving disk space, download and build time. With Git, people are cloning the entire history of ReactOS anyway and checkouts are faster, so there is no point about saving disk space and download time anymore. Build time will still be saved by disabling the modules through CMake.

In the future, we may think about using Git submodules or Git subtree for third-party imported components. But let's first migrate to Git ourselves :)

Cheers,

Colin


Am 08.09.2017 um 07:55 schrieb Magnus Johnsson:
Doesn't submodules do what you need? And, all submodules get cloned automatically if you just add --recursive to the clone command. It all depends on what you mean by arbitrary location. :).

https://github.com/magnusjjj/gfesys/blob/master/.gitmodules

(I will shut up if you feel this is annoying and shit. Not meant as a besserwisser-y shit or no-clue-as-to-situation or something, and don't want to derail the discussion :). Just nerdsniped me since I have been using the functionality a fair bit and also seen other projects use it for things that *sound* similar to what you are talking about)

<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=icon> Virus-free. www.avast.com <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=link>

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

2017-09-07 23:50 GMT+02:00 David Quintana (gigaherz) <gigah...@gmail.com <mailto:gigah...@gmail.com>>:

    Answering to Magnus: In svn it's trivial to checkout a subfolder in
    an arbitrary location and commit and such from that subfolder. This
    made it easy to have separate root folders for rostests, rosapps,
    etc. Doing this in git is non-trivial and even if possible, would
    require multiple clones, which is not wanted.

    Answering to Dimitrij: Using mklink in windows requires
    administrator privileges. It's not a valid option. And XP didn't
    have proper symlinks, it had junction points which are not quite the
    same.

    Given to the two reasons above, it's much more effective to
    permanently move the files to inside the modules folder, where the
    build system already expects it, and change the check from "folder
    exists" to "this property/variable is set".

    On 7 September 2017 at 22:50, Dimitrij Klingbeil <dkli...@gmail.com
    <mailto:dkli...@gmail.com>> wrote:

        Hi Colin

        How about using links in the local filesystem? On Windows it's
        possible to use directory links in a similar way to Linux.
        Starting from Win7 there is a simple native way to do so (the
        mklink command), but it has already been possible since WinXP
        (with linkd.exe from the Windows Server 2003 Resource Kit).

        It should be possible to keep the modules structure, clone the
        individual repositories into separate directories locally and
        link the directories into the target directory with one of the
        linkd / mklink / ln utilities on the development system. The
        links can be easily deleted with the normal Windows delete
        functions if need arises to remove them.

        Regards
        Dimitrij

        ----- Original Message ----- From: "Colin Finck"
        <co...@reactos.org <mailto:co...@reactos.org>>
        To: "'ReactOS Development List'" <ros-dev@reactos.org
        <mailto:ros-dev@reactos.org>>
        Sent: Thursday, September 07, 2017 7:17 PM
        Subject: [ros-dev] Git Migration: The documentation, rossubsys
        and wallpapers directories


            Hi all!

            As you know, we have to give up our "modules" directory
            concept when switching to Git, because Git doesn't support
            checking out an arbitrary directory into a subdirectory of a
            Git clone.
            Therefore, the first commit to the migrated repository will
            make the "reactos" directory the new root and move "rosapps"
            and "rostests" permanently into "modules". We can then
            introduce an environment variable/CMake variable/something
            else to enable or disable building of them on demand
            (suggestions are welcome!)



        _______________________________________________
        Ros-dev mailing list
        Ros-dev@reactos.org <mailto:Ros-dev@reactos.org>
        http://www.reactos.org/mailman/listinfo/ros-dev
        <http://www.reactos.org/mailman/listinfo/ros-dev>



    _______________________________________________
    Ros-dev mailing list
    Ros-dev@reactos.org <mailto:Ros-dev@reactos.org>
    http://www.reactos.org/mailman/listinfo/ros-dev
    <http://www.reactos.org/mailman/listinfo/ros-dev>




_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev


_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to