Sistemas y Tecnologías Web: Servidor

Master de II. ULL. 1er cuatrimestre


Organization ULL-MII-SYTWS-2122   Classroom ULL-MII-SYTWS-2122   Campus Virtual SYTWS   Chat Chat   Profesor Casiano

Table of Contents

Meta

Meta

What is a Mono Repo

In revision control systems, a monorepo (“mono” from Greek μόνος, mónos, ‘single, alone’ and “repo” short for repository) is a software development strategy where code for many projects is stored in the same repository.

A mono-repo is a repository containing all of the source for an organization. It presents source in a single, hierarchical directory structure. A mono-repo supports standard operations such as atomic commits and merges across the code it contains.

Critically, in order to host all source for an organization, the performance of a mono-repo must not degrade as it grows in terms of:

  • history (number of commits)
  • amount of code (number of files and bytes)
  • number of developers

Why doesn’t everyone have a mono-repo?

Most organizations do not have a mono-repo because existing DVCS systems (e.g., Git and Mercurial) suffer performance degradation as the size of the repository and the number of users increase. Over time, basic operations such as git status, git fetch, etc. become slow enough that developers, given the opportunity, will begin splitting code into multiple repositories. Also may be some members are not allowed to have visibility access to some organization projects.

Meta

meta is a tool for managing multi-project systems and libraries.

meta is powered by plugins that wrap common commands, letting you execute them against some or all of the repos in your solution at once. meta is built on loop, and as such inherits loops ability to easily target a particular set of directories for executing a common command (eg meta git status --include-only dir1,dir2. See loop for more available options).

meta project

  • meta project import will add an existing project to your .meta file and clone it
  • meta project create will add a new directory and git initialize it, and add the given remote
1
2
3
4
5
6
7
8
➜  meta git:(master) ✗ meta project help create
Usage: meta-project-create <destFolder> <childRepoUrl>

Creates a new folder and initializes git with provided remote.
➜  meta git:(master) ✗ meta project help import
Usage: meta-project-import <destFolder> <childRepoUrl>

Configures .meta file and imports a project from provided 'childRepoUrl' using git clone into 'destFolder'.

I think we need to extend create with only a directory

meta git

To clone in step a meta-repo and all the sub repos yo do somthing like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
➜  my-first-plugin git:(master) ✗ meta git clone git@github.com:mateodelnorte/meta.git
meta:
Cloning into 'meta'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 1096 (delta 0), reused 1 (delta 0), pack-reused 1092
Receiving objects: 100% (1096/1096), 1.21 MiB | 2.48 MiB/s, done.
Resolving deltas: 100% (698/698), done.
meta ✓

/Users/casianorodriguezleon/campus-virtual/2021/learning/learning-meta/my-first-plugin/meta/plugins/symlink-meta-dependencies:
Cloning into 'plugins/symlink-meta-dependencies'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 111 (delta 0), reused 1 (delta 0), pack-reused 107
Receiving objects: 100% (111/111), 159.40 KiB | 1.01 MiB/s, done.
Resolving deltas: 100% (50/50), done.

...

meta git clone NOTE

meta git clone lacks the capacility to recursively clone nested meta projects. See

Plugins for Meta

Práctica p5-t1-meta

Comment with GitHub Utterances