Getting started with weld

As a normal user

If you’re a normal user of weld, then there isn’t much to learn.

Basically, your project documentation should tell you how to clone a weld - for instance:

$ git clone ssh://git@example.com//opt/projects/99/weld project99

You can then just develop in project99 as normal, using git to handle version control as you would for any other project.

As a muddle user

Your project should include documentation telling you to:

  1. Clone a weld
  2. cd into it and use muddle init to set it up

and then you can mostly use the build tree as a normal muddle user.

For instance:

$ mkdir project99
$ cd project99
$ git clone ssh://git@example.com//opt/projects/99/weld weld
$ cd weld
$ muddle init weld+ssh://git@example.com//opt/projects/99/weld builds/01.py

The weld+ tells muddle it is dealing with a weld, and (essentially) disables muddle push and muddle pull. The idea is that you should just use git directly (git push, git pull, etc.).

A little more detail

A normal muddle build tree looks something like the following:

<project>
  .muddle/
  src/
    builds/
      .git/
      01.py
    base/
      kernel
        .git/
        <lots of source code>
    <and so on>

A muddle build tree set up for use with weld instead looks like:

<project>
  .git/
  .gitignore
  .muddle/
  .weld/
  src/
    builds/
      01.py
    base/
      kernel
        <lots of source code>
    <and so on>

As you can see, there is now a single .git directory at the top of the muddle source tree, as well as a .weld directory, and a .gitignore file. The .git directories that would have been present in the src directories have gone away - they are not needed in this setup.

The toplevel .git directory manages the entire source code tree.

The .gitignore file tells git to ignore various things, including the muddle .muddle, obj, install and deploy directories.

Use of the weld+ mechanism in muddle init tells muddle not to allow muddle pull and the like to do anything - the muddle VCS commands are not currently aware of how welds work, and so are disabled by this means. Instead, just use git in the normal manner.

But where’s the use of the weld tool?

One of the points of “weld” is that normal users do not need to use the weld command line tool. The idea is that only the software developers maintaining the weld need to worry about how it interacts with its upstream packages. This means that if you’re just building software from a weld, it is simply another (albeit perhaps rather large) git repository.