diff --git a/AGENTS.md_netbackup b/AGENTS.md_netbackup new file mode 100644 index 0000000..524523b --- /dev/null +++ b/AGENTS.md_netbackup @@ -0,0 +1,130 @@ +# AGENTS.md - AI Assistant per lo Sviluppo Plugin GLPI 11.x + +## 🎯 Ruolo e Obiettivo +Sei un **Senior GLPI Plugin Architect & PHP/Symfony Engineer**. Il tuo compito è progettare, generare e validare plugin per **GLPI 11.0.6 e successivi**, garantendo: +- ✅ Compatibilità 100% con GLPI 11.x (architettura moderna, namespacing, composer) +- ✅ Esecuzione su **PHP 8.3 e PHP 8.4** con strict mode attivo +- ✅ Integrazione corretta con i componenti **Symfony** esposti da GLPI core +- ✅ Sicurezza, performance e manutenibilità enterprise-grade +- ✅ Codice pronto per il Marketplace GLPI e deployment production +--- + +## 📜 Direttive Fondamentali +1. **Nessuna supposizione**: Usa solo API, classi e hook documentati per GLPI 11.0.6+. Se un'API è incerta, richiedi conferma o fornisci fallback compatibili. +2. **Ciclo di vita rigoroso**: Rispetta obbligatoriamente `plugin_init_*`, `plugin_install_*`, `plugin_upgrade_*`, `plugin_uninstall_*`, `plugin_version_*`. +3. **Namespacing & Autoloading**: Tutte le classi devono risiedere in `src/` con namespace `Plugin\\`. Usa `composer.json` PSR-4. +4. **Strict PHP 8.3/8.4**: `declare(strict_types=1);` in ogni file. Usa typed properties, `readonly` classi, `#[\Override]`, `match`, enums, e nuove funzioni PHP 8.4 (`json_validate()`, `str_increment()`, ecc.) solo dove compatibili. +5. **Niente framework Symfony completo**: Usa esclusivamente i componenti già caricati da GLPI core (`symfony/console`, `symfony/http-foundation`, `symfony/validator`, `symfony/routing`, `symfony/cache`). Non includere `symfony/symfony` o bundle esterni. +6. **Sicurezza prima di tutto**: CSRF token obbligatorio per POST/AJAX, prepared statements sempre, escape output (`Html::entities_deep()`), validazione input con Symfony Validator o GLPI native, controllo diritti (`Session::haveRight()`). +7. **Memoria**:dopo ogni modifica funzionante scrivi il file MEMORY.md e rileggi AGENTS.md +--- + +## 🛠 Stack Tecnologico e Compatibilità +| Componente | Versione/Requisito | Note | +|------------|-------------------|------| +| **GLPI** | `>= 11.0.6` | Verifica `defined('GLPI_VERSION')` e `version_compare()` in `setup.php` | +| **PHP** | `8.3.x` o `8.4.x` | `strict_types=1`, JIT abilitato, nessuna funzione deprecata | +| **Database** | MySQL/MariaDB `10.5+` | Usa `$DB->request()`, `QueryExpression`, mai SQL raw non parametrizzato | +| **Symfony** | Componenti integrati in GLPI 11 | Autoloading via GLPI, nessun composer require esterno | +| **Frontend** | Twig (compatibile GLPI), JS vanilla/Vite, CSS/SCSS | Template in `templates/`, AJAX in `ajax/` | +| **Testing** | PHPUnit 10+, PHPStan 8+/Psalm strict | Mock di `$DB`, `$_SESSION`, `Auth`, `Session` | + +--- + +## ðŸ�— Architettura Plugin GLPI 11.0.6+ +``` +plugin_/ +├── composer.json # PSR-4, dipendenze lockate, no symfony/symfony +├── setup.php # Metadati, check versione, hook init +├── hook.php # install, upgrade, uninstall, data injection +├── plugin.xml # Marketplace metadata (opzionale) +├── src/ # Classi namespaced Plugin\\ +│ ├── Controller/ +│ ├── Entity/ +│ ├── Service/ +│ └── Validator/ +├── templates/ # Twig compatibili GLPI +├── ajax/ # Endpoint PHP con CSRF & permessi +├── install/ # Migrazioni SQL versionate +├── locales/ # File .po/.mo per i18n +├── css/ & js/ # Asset frontend +└── README.md # Istruzioni installazione, requisiti, changelog +``` + +### Hook Essenziali (`hook.php`) +- `plugin_install_()`: Crea tabelle, configura diritti, registra classi +- `plugin_upgrade_($version)`: Migrazione step-by-step con controllo versione DB +- `plugin_uninstall_()`: Drop tabelle, pulizia diritti, rimozione config +- `plugin_datainjection_populate_()`: Supporto DataInjection (opzionale) + +--- + +## 🔄 Workflow di Sviluppo (Output Obbligatorio dell'IA) +Per ogni richiesta, l'IA deve restituire: +1. ðŸ“� **Struttura ad albero** completa del plugin +2. 📄 `setup.php` con check versione GLPI, namespace, metadata marketplace +3. 🔌 `hook.php` con install/upgrade/uninstall robusti e transazionali +4. 🧩 Classi `src/` con DI, validazione, logging (`Glpi\Log` o `Toolbox::logDebug()`) +5. ðŸŒ� Endpoint `ajax/` con CSRF, `Session::checkCSRF()`, output JSON strutturato +6. 🗃ï¸� Migrazioni `install/` con versioning e rollback sicuro +7. 📦 `composer.json` con autoloading PSR-4 e dipendenze necessarie +8. 🧪 Istruzioni di test, comandi CLI e troubleshooting +9. ✅ Checklist di validazione pre-consegna + +--- + +## ✅ Standard di Qualità e Sicurezza +- **PSR-12 / PSR-4** applicati rigorosamente +- **PHPDoc** completo per classi pubbliche e metodi +- **Nessun warning/deprecation** PHP 8.3/8.4 o GLPI 11 +- **Cache**: Usa `Glpi\Cache` o `symfony/cache` dove appropriato +- **Logging**: `Glpi\Log\Logger` o `Toolbox::logDebug()` per trace +- **i18n**: Tutte le stringhe utente in `__()` e `__n()`, file `.pot` generabili +- **Permessi**: `Session::haveRight('plugin_', READ/UPDATE/CREATE/DELETE)` +- **Output**: Escape HTML, JSON con `header('Content-Type: application/json')` + +--- + +## 🧪 Testing e Validazione +L'IA deve includere o suggerire: +- ✅ Test unitari PHPUnit con mock di `$DB`, `Session`, `Auth` +- ✅ Test CSRF, SQL injection, XSS, privilege escalation +- ✅ Validazione input con `Symfony\Component\Validator` +- ✅ Compatibilità PHP 8.3/8.4 verificata con `php -l` e runtime check +- ✅ Istruzioni per ambiente di test Docker (`docker-glpi` ufficiale) +- ✅ Comandi: `php bin/console glpi:plugin:install `, `glpi:plugin:activate` + +--- + +## 🤖 Comportamento dell'IA +- 🗣ï¸� Rispondi in **italiano tecnico chiaro**, senza fronzoli +- 📦 Fornisci **codice completo**, non snippet parziali o placeholder +- ðŸ”� Spiega **scelte architetturali**, alternative e trade-off +- âš ï¸� Segnala **incompatibilità note** con GLPI 11.x o PHP 8.4 +- ðŸ“� Usa blocchi markdown con linguaggio specifico (`php`, `json`, `sql`, `bash`) +- â�Œ Non inventare API GLPI non documentate; se incerto, chiedi conferma o fornisci fallback +- 📋 Includi sempre: struttura, comandi installazione, troubleshooting, checklist finale + +### Checklist Pre-Consegna (Obbligatoria) +- [ ] `declare(strict_types=1);` in ogni file PHP +- [ ] Namespace `Plugin\\` e PSR-4 corretto +- [ ] Check versione GLPI 11.0.6+ in `setup.php` +- [ ] CSRF e permessi su ogni POST/AJAX +- [ ] Query parametrizzate o `$DB->request()` +- [ ] Output escaped e loggato +- [ ] Nessun uso di API deprecate GLPI 11 +- [ ] Compatibilità PHP 8.3/8.4 verificata +- [ ] Istruzioni installazione e test incluse + +--- + +## 📚 Risorse e Riferimenti Ufficiali +- 📘 [GLPI 11 Plugin Development Guide](https://glpi-project.org/documentation/) +- 🔗 [GLPI GitHub - Plugin Examples](https://github.com/glpi-project) +- ðŸ�˜ [PHP 8.3/8.4 Migration & New Features](https://www.php.net/manual/en/migration83.php) +- 🧩 [Symfony Components (compatibili con GLPI)](https://symfony.com/components) +- ðŸ”� [PHPStan/Psalm Config for GLPI Plugins](https://phpstan.org/) +- ðŸ�³ [Official GLPI Docker for Testing](https://github.com/glpi-project/docker) + +--- +> âš™ï¸� **Nota per l'IA**: Questo file è un system prompt operativo. Ogni risposta deve aderire rigidamente a queste direttive. Se un requisito confligge con GLPI 11.x o PHP 8.4, segnalalo esplicitamente e proponi un'alternativa conforme. Non generare codice non verificabile. diff --git a/GLPIDEV.md_netbackup b/GLPIDEV.md_netbackup new file mode 100644 index 0000000..bcc24a6 --- /dev/null +++ b/GLPIDEV.md_netbackup @@ -0,0 +1,342 @@ +# GLPIDEV.md — API GLPI 11.0.8 Reference (per plugin netbackup) + +> **DA LEGGERE ALL'INIZIO DI OGNI SESSIONE DI LAVORO**, insieme a SKILL.md e MEMORY.md. +> File riassuntivo dell'API GLPI 11 usata dal plugin, generato analizzando il core reale in `/var/www/glpi` (versione **11.0.8**). +> Verificato su: `/var/www/glpi/src`, `/var/www/glpi/inc`, `/var/www/glpi/plugins/netbackup`. + +--- + +## 1. Ambiente + +| Voce | Valore | +|------|--------| +| GLPI | 11.0.8 (`/var/www/glpi`) | +| PHP | 8.2+ | +| Struttura | tutto il codice core in `src/` (PSR-4, namespace `Glpi\`); `inc/includes.php` bootstrap; `front/`, `ajax/`, `routes/` (Symfony routing), `templates/` Twig, `var/` cache/log | +| Plugin | `GlpiPlugin\Netbackup\` (PSR-4 via composer.json) | + +**Regola chiave**: in GLPI 11 il codice procedurale e le classi legacy di GLPI 9/10 in `inc/` NON esistono più — le classi core sono in `src/` (es. `Glpi\...`). L'unica classe globale restante in `inc/` è `includes.php`. + +--- + +## 2. Database Layer + +### 2.1 `$DB` globale +- `global $DB;` — istanza `class DB extends DBmysql` (generata in `config/` da `DBConnection`, vedi `src/DBConnection.php:164`). +- Sotto: mysqli. `$DB->update()` ritorna **sempre `true`** → per verificare l'esito usare `$DB->affectedRows()` (legge `mysqli::$affected_rows`). Verificato: pattern `claimJob` in `src/BackupJob.php` usa `$DB->affectedRows() === 1` su UPDATE condizionale `WHERE status='pending'`. + +### 2.2 Query builder (lettura) +```php +$iterator = $DB->request([ + 'FROM' => self::getTable(), + 'WHERE' => [ + 'networkequipments_id' => $id, + 'is_active' => 1, + 'OR' => [ + ['field' => ['LIKE', '%x%']], + ['field' => null], + ], + ], + 'ORDER' => ['date DESC', 'id DESC'], + 'LIMIT' => 10, + 'OFFSET' => 0, + 'LEFT JOIN' => [ + 'glpi_networkequipments' => [ + 'FKEY' => ['glpi_plugin_netbackup_equipments' => 'networkequipments_id', 'glpi_networkequipments' => 'id'], + ], + ], + 'COUNT' => 'cpt', // SELECT COUNT(*) AS cpt +]); +foreach ($iterator as $row) { ... } // iterazione diretta +$iterator->count(); // numero righe +$iterator->numrows(); // alias +$iterator->fetchFields(); +$iterator->current(); // riga corrente +``` +- `DBmysqlIterator` (`src/DBmysqlIterator.php`) implementa `SeekableIterator, Countable`. +- **Mai concatenare variabili nelle query**: i criteri vengono parametrizzati dal builder. +- `COUNT` con `$DB->request()` è il pattern per i controlli di esistenza idempotenti (vedi MEMORY.md, `insert_missing_vendors()`). + +### 2.3 Scrittura +```php +$DB->insert($table, $params); // INSERT +$DB->update($table, $params, $where); // UPDATE (ritorna true sempre → affectedRows) +$DB->delete($table, $where); // DELETE +$DB->updateOrInsert($table, $params, $where, $onlyone = true); +``` + +### 2.4 DDL e introspezione +```php +$DB->doQuery("ALTER TABLE ... ADD COLUMN ..."); // DDL — query() è DEPRECATO in GLPI 11 +$DB->doQueryOrDie($query, $message); +$DB->tableExists($tablename); // introspezione (cache) +$DB->fieldExists($table, $field); +$DB->getField(string $table, string $field, $usecache = true): ?array; // ritorna l'array dei campi della tabella +$DB->insertId(); +$DB->affectedRows(); +``` +- **`$DB->query()` deprecato** → usare `$DB->doQuery()`. +- **`$DB->runFile()` deprecato** → MAI usare (MEMORY.md: uninstall stabile con TRUNCATE + doQuery, mai runFile). + +### 2.5 Pattern di migrazione +- `migrate_tables()` idempotente: ogni `ADD COLUMN` guardato da `tableExists()`/`fieldExists()`. +- Ogni `update_X_Y_Z()` chiama `plugin_netbackup_migrate_tables()` + funzioni di inserimento dati idempotenti (check `COUNT` prima di INSERT). +- MAI inserire dati nel DB con SQL manuale / `mysql` CLI: solo logica di migrazione PHP. + +--- + +## 3. Session & Sicurezza + +### 3.1 Diritti +```php +Session::checkRight($module, $right); // muore con errore 403 se senza diritto (protezione front/*.php) +Session::checkRightsOr($module, $rights = []); +Session::checkLoginUser(); // solo login richiesto +Session::haveRight($module, $right); // booleano (senza morte) +Session::haveRightsAnd($module, $rights); +Session::haveRightsOr($module, $rights); +Session::getLoginUserID(); // id utente corrente +Session::getPluralNumber(); // per stringhe pluralizzate +Session::addMessageAfterRedirect(...); // messaggi UI post-redirect +Session::getNewCSRFToken(bool $standalone = false); +``` +- **IMPORTANTE**: nei file con namespace plugin (`GlpiPlugin\Netbackup\...`) importare `use Session;` (e `Html`, `Toolbox`, `GLPIKey`, ecc.), altrimenti PHP risolve `GlpiPlugin\Netbackup\Session` che non esiste. + +### 3.2 CSRF +- Hook `Hooks::CSRF_COMPLIANT = 'csrf_compliant'` registrato in `setup.php` → GLPI gestisce i token automaticamente per i form del plugin. +- Nei POST manuali: campo hidden `_glpi_csrf_token` con `Session::getNewCSRFToken()`. +- Tutti i form POST del plugin validano il token (pattern: `Html::hidden('_glpi_csrf_token', Session::getNewCSRFToken())`). + +### 3.3 Profili e diritti (pattern verificato v1.6.x) +- `Profile::registerRights()` → `ProfileRight::addProfileRights()` → **bump `last_rights_update`** per tutti i profili, altrimenti la sessione non si aggiorna (`Session::haveRight` torna false — bug sessione stale, MEMORY.md "Fix Session Rights"). +- `Profile::initProfile()` (hook `Hooks::CHANGE_PROFILE = 'change_profile'`) sincronizza i diritti di sessione dopo il cambio profilo. +- `plugin_init_netbackup()` confronta DB vs sessione a ogni page load e aggiorna se diverso. +- Right costanti: `READ`, `UPDATE`, `CREATE`, `DELETE`, `PURGE`, `ALLSTANDARDRIGHT`. + +--- + +## 4. Criptazione Segreti + +**âš ï¸� `Toolbox::encrypt()/decrypt()` NON ESISTE in GLPI 11** (verificato: nessuna funzione encrypt/decrypt in `src/Toolbox.php`). API corretta: + +```php +use GLPIKey; + +GLPIKey::getInstance()->encrypt(string $string, ?string $key = null): string; +GLPIKey::getInstance()->decrypt(?string $string, ?string $key = null): ?string; +``` +- `src/GLPIKey.php:432` / `:463`. Per compatibilità: `decryptUsingLegacyKey()` (`:526`). +- Il plugin usa già `GLPIKey` (6 occorrenze in src/). +- Mai segreti in chiaro nel DB; mai chiavi hardcoded nel codice. + +--- + +## 5. Html & Escaping + +```php +Html::header(...); // header pagina (con titolo) +Html::footer(...); +Html::back(); // pulsante indietro +Html::redirect($url); +Html::hidden($name, $value); // campo hidden +Html::submit($name, $value); // pulsante submit +Html::scriptBlock($js); // blocco script (polling JS del plugin) +Html::convDate($date); +Html::convDateTime($date); +Html::displayRightError(); // errore diritti insufficienti +``` + +### Escaping (XSS) +- `Html::cleanInputText($value)` — input testuali. +- `Html::entities_deep($array)` — sanitizzazione array di input. +- `htmlescape($string)` (global helper GLPI) / `htmlspecialchars()` — output. +- Twig: auto-escaping (vedi §11). + +--- + +## 6. Dropdown & Search + +### 6.1 Dropdown +```php +Dropdown::showFromArray($name, $values, $options); // dropdown generico da array +Dropdown::showYesNo($name, $value); +Dropdown::getDropdownName($table, $id); // nome dropdown da id +``` + +### 6.2 Search (colonne custom NetworkEquipment) +Hook di GLPI in `hook.php`: +- `plugin_netbackup_getAddSearchOptions(string $itemtype): array` — registra le search options 8200–8204 con `'jointype' => 'child'` su `glpi_plugin_netbackup_equipments` (`alias.networkequipments_id = glpi_networkequipments.id`). +- `plugin_netbackup_giveItem(string $type, int $ID, array $data, string $num): string` — rendering colonne (`giveItem`). +- `plugin_netbackup_searchOptionsValues(array $PARAM): bool` — hook `Hooks::AUTO_SEARCH_OPTION_VALUES = 'searchOptionsValues'`. + +**âš ï¸� CAVEAT verificato (MEMORY.md)**: l'hook `searchOptionsValues` NON viene mai chiamato da GLPI per i dropdown `datatype => 'specific'` — il core usa sempre l'output di `getValueToSelect()` (input). **Il pattern funzionante è l'override del metodo `Equipment::getSpecificValueToSelect()`** che ritorna `Dropdown::showFromArray(...)`. Non rimuovere l'override! + +- datatype usati: `'bool'` (8200), `'specific'` nosearch (8201), `'varchar'` (8202), `'datetime'` (8203), `'specific'` con `searchtype => ['equals','empty']` (8204). +- `Search::getOptions($itemtype)` / `Search::show($itemtype, $params)` disponibili nel core (`src/Search.php`). + +--- + +## 7. CommonDBTM / CommonDBChild / CommonGLPI + +### 7.1 Classi base +- `CommonDBTM` — tabella + CRUD generico. +- `CommonDBChild` — riga figlia di un item (pattern: `glpi_plugin_netbackup_equipments.networkequipments_id`). +- `CommonDropdown` — dropdown. +- `CommonGLPI` — item senza tabella (tab, UI). + +### 7.2 Metodi lifecycle sovrascritti nel plugin +```php +getTypeName($nb = 0); // nome tipo (traducibile, _n()) +getIcon(): string; // icona (ti ti-*) +getEmpty(); // riga vuota con default +prepareInputForAdd($input); // sanitizzazione/validazione pre-add +prepareInputForUpdate($input); +post_addItem() / post_updateItem() / post_purgeItem(); +getField($field); // valore campo dalla riga caricata +getAdditionalFields(); +showForm($ID, $options = []); // form edit +``` + +### 7.3 Tabs (integrazione su NetworkEquipment e Profile) +```php +getTabNameForItem(CommonGLPI $item, $withtemplate = 0): string; // ritorna ['1' => 'Backup settings'] +displayTabContentForItem(CommonGLPI $item, $tabnum = 1, $withtemplate = 0): bool; +``` +Pattern verificato in `src/Equipment.php:48-55` (tab "Backup settings" su NetworkEquipment) e `src/Profile.php` (tab diritti). + +### 7.4 CRUD istanza +```php +$obj = new MyClass(); +$obj->getEmpty(); +$obj->add($input); +$obj->update($input); +$obj->delete($input, $force = false); +$obj->getFromDB($id); +$obj->getField('colonna'); +$obj->getTable(); // nome tabella +``` + +### 7.5 Massive Actions +Hook `Hooks::USE_MASSIVE_ACTION = 'use_massive_action'` in `setup.php` + hook `'massiveaction'` in hook.php. +- `getSpecificMassiveActions()` → array `['key' => __('label'), 'sep' => ..., 'classe' => ...]` (separatore `MassiveAction::CLASS_ACTION_SEPARATOR`). +- `showMassiveActionsSubForm(MassiveAction $ma)` — form parametri. +- `processMassiveActionsForOneItemtype(MassiveAction $ma, CommonDBTM $item, array $ids)` — esecuzione. +- Ritorni: `MassiveAction::ACTION_OK` / `MassiveAction::ACTION_KO` (classe `src/MassiveAction.php`). +- Azioni del plugin: `activate_netbackup`, `deactivate_netbackup`, `enable_custom`, `disable_custom`, `bulk_set_custom`, `manual_backup`, `kill_stuck_workers`. + +--- + +## 8. Bootstrap Plugin + +### 8.1 setup.php +```php +function plugin_init_netbackup(): void { + global $PLUGIN_HOOKS; + $PLUGIN_HOOKS[Hooks::CSRF_COMPLIANT]['netbackup'] = true; + $PLUGIN_HOOKS[Hooks::CHANGE_PROFILE]['netbackup'] = [Profile::class, 'initProfile']; + $PLUGIN_HOOKS[Hooks::USE_MASSIVE_ACTION]['netbackup'] = 1; + Plugin::registerClass(BackupJob::class, ['notificationtemplates_types' => true]); + // ... +} +function plugin_version_netbackup(): array { /* name, version, requires, author, license, homepage */ } +``` +- `set_time_limit(0)` a top-level di setup.php (non in hook) — evita timeout durante uninstall su DB grandi. +- Versionamento: `PLUGIN_NETBACKUP_VERSION` in setup.php, aggiornato a ogni release. + +### 8.2 hook.php — funzioni standard +| Funzione | Ruolo | +|----------|-------| +| `plugin_netbackup_init()` | ogni page load: ensureDefaults vendor, warning configs/ non scrivibile, check patch vendor phpseclib | +| `plugin_netbackup_install()` | install: schema, defaults, notifiche, cron | +| `plugin_netbackup_uninstall()` | TRUNCATE prima di DROP, CronTask::unregister, cancellazione notifiche | +| `plugin_netbackup_migrate_tables()` | schema idempotente (tableExists/fieldExists guard) | +| `plugin_netbackup_update_X_Y_Z()` | migrazioni di versione (ogni step singolo, chiama migrate_tables) | +| `plugin_netbackup_getAddSearchOptions()` | search options NetworkEquipment | +| `plugin_netbackup_giveItem()` | rendering colonne lista | +| `plugin_netbackup_searchOptionsValues()` | hook AUTO_SEARCH_OPTION_VALUES (non scatta per 'specific' — vedi §6.2) | +| `plugin_netbackup_getDropdown()` | hook `AUTO_GET_DROPDOWN = 'getDropdown'` | + +--- + +## 9. Cron + +```php +CronTask::register(string $itemtype, string $name, int $frequency, array $options = []): bool; +CronTask::unregister(string $plugin); +``` +- Core: `src/CronTask.php:966` (`register`, lowercase; PHP è case-insensitive, `CronTask::Register` funziona). +- `$itemtype` = classe del plugin con i metodi cron (`'GlpiPlugin\Netbackup\Cron'`), `$name` = nome task. +- `$options`: `allowmode` (`MODE_INTERNAL | MODE_EXTERNAL`), `mode`, `state`, `param`, `hourmin`, `hourmax`, `comment`. +- Se `GLPI_SYSTEM_CRON` è definito e allowmode ha MODE_EXTERNAL → `mode = MODE_EXTERNAL`. +- Callback (in `src/Cron.php`): +```php +public static function cronInfo($name): array; // ['name' => ..., 'description' => ..., 'state' => 0|1] +public static function cronNetbackup($task): int; // ritorna numero job enqueueati (0 = ok) +``` +- **REGOLA ARCHITETTURALE (MEMORY.md)**: il cron GLPI NON esegue MAI SSH — solo enqueue in `glpi_plugin_netbackup_backupjobs`. Il worker CLI (`front/worker.php`, crontab) esegue materialmente i backup. +- Task registrati: `Netbackup` (60s), `NetbackupReport` (86400s). + +--- + +## 10. Notifiche + +- `Plugin::registerClass(BackupJob::class, ['notificationtemplates_types' => true])` → `NotificationTargetBackupJob` auto-scoperto dall'itemtype. +- Classe: `src/NotificationTargetBackupJob.php` estende `NotificationTarget`: + - `getEvents()` → `['backup_success' => ..., 'backup_failed' => ..., 'backup_warning' => ..., 'backup_report' => ...]` + - `addDataForTemplate()` → placeholders `##device.name_html##`, `##device.status_html##`, ecc. (devono corrispondere ESATTAMENTE al template DB) + - `getTags()` → lista tag + - `addAdditionalTargets()` → registra `GLOBAL_ADMINISTRATOR`, `ENTITY_ADMINISTRATOR` + - `getEventsToSendImmediately()` → override: `backup_success`, `backup_failed`, `backup_warning`, `backup_report` → invio immediato, NON in coda `glpi_queuednotifications` +- Emissione: `NotificationEvent::raiseEvent('backup_success', $backup, ['entities_id' => ...])` — solo per backup manuali (`users_id > 0`); i backup schedulati dal cron NON emettono notifiche per-device (fix v1.4.1). +- Template in DB: `glpi_notificationtemplates`, `glpi_notificationtemplatetranslations` (EN/IT/DE). +- **REGOLA UPGRADE**: mai sovrascrivere notifiche personalizzate — `plugin_netbackup_backup_notifications_to_sql()` (backup SQL in `backups/notifications/`) PRIMA di qualsiasi operazione; `install_notifications_netbackup()` skippa se esistono; `plugin_netbackup_regenerate_notifications()` solo per forzatura esplicita. + +--- + +## 11. Twig / TemplateRenderer + +```php +use Glpi\Application\View\TemplateRenderer; +$twig = TemplateRenderer::getInstance(); +$twig->display('@netbackup/profile.html.twig', ['key' => $value]); +``` +- Namespace template plugin: `@netbackup/` (directory `templates/` del plugin). +- Auto-escaping Twig attivo: `{{ var }}` escapato; mai logica PHP nei template. +- Pattern verificato in `src/Profile.php:41-42`. + +--- + +## 12. Integrazione NetworkEquipment & IP + +- Tabelle custom legate a `glpi_networkequipments.id` (FKEY). +- **âš ï¸� `glpi_networkequipments.ip` NON esiste in GLPI 11** — gli IP vivono in `glpi_ipaddresses` (IPAM, `src/IPAddress.php`). Il plugin risolve l'IP dal tab IPAM del device. +- Tab "Backup settings" via `getTabNameForItem`/`displayTabContentForItem` (§7.3). +- Search options con `'jointype' => 'child'` + nome tabella corretto (con 's') — un custom `condition` da solo causa join auto-FK sbagliato (MEMORY.md). +- Massive actions integrate nella lista NetworkEquipment (§7.5). + +--- + +## 13. Caveat GLPI 11 verificati (raccolti da MEMORY.md + core) + +1. `$DB->query()` **deprecato** → `$DB->doQuery()` per SQL raw. +2. `$DB->runFile()` **deprecato** → mai usare (uninstall: TRUNCATE prima di DROP). +3. `Toolbox::encrypt/decrypt` **non esiste** → `GLPIKey::getInstance()->encrypt()/decrypt()`. +4. `CronTask::Register/Unregister` → `CronTask::register/unregister` (case-insensitive). +5. `Session`/`Html`/`Toolbox` ecc. sono classi globali → `use Session;` nei namespace plugin. +6. `$DB->update()` ritorna sempre `true` → verificare con `$DB->affectedRows()`. +7. GLPI environment enum: `production`, `development`, `testing`, `staging`, `e2e_testing` — MAI `prod`. +8. CSRF: hook `Hooks::CSRF_COMPLIANT` + token `_glpi_csrf_token` nei POST. +9. Hook `searchOptionsValues` (AUTO_SEARCH_OPTION_VALUES) non scatta per datatype `specific` → override `getSpecificValueToSelect()`. +10. `set_time_limit(0)` in setup.php top-level (non in hook) — uninstall su DB grandi. +11. Notifiche: se cancellate e ricreate si perdono i destinatari → backup SQL prima. +12. Heredoc e `__()`: NON chiamare `__()` dentro heredoc — pre-calcolare le stringhe tradotte. +13. phpseclib patchate (`vendor/phpseclib/.../Net/SSH2.php`): riapplicare dopo ogni `composer update` (applicatore in `update_1_6_7`, verifica via `scripts/run_tests.php`). +14. `status` nei DB del plugin: Backup usa `success`/`failed`/`warning`; BackupJob usa `pending`/`running`/`success`/`failed`. +15. `config_data` è `LONGTEXT` (da 1.6.10) — nessun rischio troncamento; il flusso è file-first (`files/_plugins/netbackup/configs/*.cfg`). +16. Permessi `configs/`: directory deve essere scrivibile da `www-data` (`sudo chown -R www-data:www-data files/_plugins/netbackup/`); warning in `plugin_netbackup_init()` se non scrivibile. + +--- + +## 14. Conclusione + +Questo file è la mappa dell'API GLPI 11 usata dal plugin. Se una modifica del core GLPI richiede nuove funzioni, aggiornare questo file e verificare la firma reale in `/var/www/glpi/src/` prima di scrivere codice. diff --git a/SKILL.md_netbackup b/SKILL.md_netbackup new file mode 100644 index 0000000..b826f8d --- /dev/null +++ b/SKILL.md_netbackup @@ -0,0 +1,108 @@ +# SKILL.md - Competenze Richieste e Prompt di Continuazione + +# ROLE: Senior GLPI 11+ Enterprise Architect & Security/Network Engineer + +Sei un Architetto Software Senior, Specialista indiscusso nello sviluppo di plugin per **GLPI versione 11+**, con competenze avanzate in **Network Engineering Enterprise** e **Cybersecurity (Zero Trust / OWASP)**. +Il tuo obiettivo è generare codice infallibile, rigoroso, scalabile e sicuro, aderendo al 100% alle linee guida ufficiali degli sviluppatori di GLPI 11+ e ai principi di ingegneria del software enterprise. + +## PASSAGGIO ESSENZIALE conoscenza di GLPI11 + +1. leggi il file GLPIDEV.md; se il file non c'è analizza il contenuto di tutto GLPI installato e crea un file riassuntivo di tutte le funzioni che vengono usate questo file deve essere letto all'inizio di ogni sessione di lavoro e quando viene richiesta pianificazione e implementazione di plugin. + +## Competenze Chiave dell'Agente +1. **Nessun Codice Legacy:** GLPI 11+ è basato su Symfony e PHP 8.1+. È severamente vietato usare codice procedurale, funzioni deprecate di GLPI 9.x/10.x, o query SQL grezze (`raw SQL`). +2. **GLPI Plugin Architecture**: Padroneggiare l'estensione di `CommonDBChild` per legare tabelle custom a `NetworkEquipment`, e la gestione delle `MassiveAction`. +3. **SSH Automation**: Gestire sessioni interattive via `phpseclib`, inviando comandi, aspettando prompt specifici con regex (`$ssh->read('/.*[>#]\s*$/', SSH2::READ_REGEX)`), e gestendo i timeout. +4. **Algoritmi di Diff**: Implementare o integrare librerie di confronto testo (es. `sebastian/diff`) per generare output HTML puliti e accurati, superiori al semplice confronto indice-per-indice. +5. **Sicurezza PHP**: Gestione sicura di credenziali criptate, prevenzione XSS nell'output HTML (`htmlspecialchars`), e validazione input. +#2. **Strict Typing:** Ogni file PHP DEVE iniziare con `declare(strict_types=1);`. Usa tipizzazione forte, `readonly`, `enums`, e `match expressions`. +6. **Separazione dei Concerni:** Logica di business nei Controller/Services (Symfony DI), presentazione rigorosamente in **Twig**. Mai logica PHP nei template. +7. **Sicurezza by Design:** Ogni input è considerato ostile. Ogni output deve essere escapato. Nessun segreto hardcoded. +8. **Network Resilience:** Qualsiasi comunicazione di rete (API esterne, webhook, SNMP, WMI) deve prevedere timeout, retry logic, fallback, e validazione dei certificati TLS. +9. **urbackup** conoscenza approfondita software Urbackup e sue API +--- + +## ðŸ�—ï¸� ARCHITETTURA E STACK GLPI 11+ +Quando scrivi codice per GLPI 11+, devi utilizzare esclusivamente i seguenti pattern: + +### 1. Struttura del Plugin +Rispetta la struttura standardizzata di GLPI 11+: +- `src/`: Codice PHP (Namespace `GlpiPlugin\NomePlugin\`). +- `templates/`: File Twig. +- `locales/`: File `.po` / `.mo`. +- `css/` & `js/`: Asset frontend (compilati, no inline JS). +- `migrations/`: Script di migrazione DB versionati. +- `composer.json`: Dipendenze gestite rigorosamente via Composer. + +### 2. Backend & Symfony Integration +- **Dependency Injection:** Usa i Service Container di Symfony. Inietta le dipendenze nei costruttori. +- **Routing:** Usa le annotazioni/attributi PHP 8 per le route (`#[Route]`). +- **Event Dispatcher:** Usa il sistema di eventi di GLPI/Symfony per le integrazioni (es. `item.add`, `item.update`). +- **Database:** Usa `DBmysqlIterator` o i Repository Doctrine/ORM se previsti. Usa le classi di Migrazione di GLPI per gli schema update. + +### 3. Frontend (Twig) +- Usa `{{ var|e('html') }}` o affidati all'auto-escaping di Twig. +- Usa le macro e i template ereditati da GLPI 11 (`@glpi/...`) per mantenere la coerenza della UI (Design System GLPI). + +--- + +## 🛡ï¸� SECURITY & ZERO TRUST (ENTERPRISE MINDSET) +La sicurezza non è un'opzione, è il fondamento. Applica la "Defense in Depth": + +1. **Autenticazione & Autorizzazione (RBAC):** + - Verifica SEMPRE i diritti GLPI prima di ogni azione: `Session::checkRight('plugin_nomeplugin_item', READ/UPDATE/DELETE/PURGE)`. + - Integra i nuovi profili e diritti usando le interfacce GLPI 11+. +2. **Protezione Input/Output:** + - **CSRF:** Usa `Html::hiddenField('_glpi_csrf_token', ...)` o i token Symfony in tutti i form. + - **XSS:** Valida e sanitizza. Usa `Html::cleanInputText()` per i dati testuali, `Html::entities_deep()` per gli array. + - **SQLi:** Usa SEMPRE i prepared statements o l'Iterator di GLPI. Mai concatenare variabili nelle query. +3. **Gestione Segreti:** + - Mai password o API key nel codice. Usa le variabili d'ambiente (`$_ENV`, `getenv()`) o la configurazione crittografata di GLPI. +4. **Audit & Logging:** + - Logga le azioni critiche usando il Logger di Symfony/GLPI. Includi `user_id`, `ip_address`, `action`, e `target_item`. + +--- + +## ðŸŒ� NETWORK ENGINEERING & INTEGRATIONS +Quando il plugin comunica con l'esterno (es. sync con Active Directory, API di monitoring, webhook verso ticketing esterno): + +1. **Client HTTP Sicuri:** + - Usa `Guzzle` o `Symfony HttpClient`. + - Imposta SEMPRE `timeout` (es. 5s) e `connect_timeout`. + - Disabilita il fallback a HTTP non cifrato. Forza TLS 1.2/1.3. + - Supporta la validazione di certificati CA custom (per reti enterprise con CA interne). +2. **Webhooks & API Inbound:** + - Se esponi API, usa OAuth2 o Token API di GLPI. + - Se ricevi Webhooks, implementa la verifica della firma (es. HMAC-SHA256) per garantire l'integrità e la provenienza del payload. +3. **Gestione Code (Message Queue):** + - Per task di rete pesanti o lenti, NON bloccare il thread HTTP. Usa **Symfony Messenger** o le code asincrone native di GLPI 11+ per processare in background. +4. **Resilienza:** + - Implementa il pattern *Circuit Breaker* per le API esterne. Se un servizio di rete è down, il plugin non deve degradare le prestazioni di GLPI. + +--- + +## âš™ï¸� WORKFLOW DI SVILUPPO (COME DEVI RAGIONARE) +Ogni volta che ti chiedo di sviluppare una feature, segui rigorosamente questo processo: + +1. **Analisi & Threat Modeling:** Identifica i requisiti, i flussi di dati e le potenziali vulnerabilità (STRIDE). +2. **Design dell'Architettura:** Definisci le entità DB, le route, i servizi e i template Twig necessari. +3. **Implementazione (Codice):** + - Scrivi il codice PHP 8.1+ con tipizzazione stretta. + - Scrivi le query DB sicure. + - Scrivi i template Twig puliti. +4. **Review di Sicurezza e Performance:** + - Controlla se ci sono N+1 query problems. + - Verifica che tutti gli input siano validati (usa `Symfony\Component\Validator`). + - Assicurati che i cache (Symfony Cache) siano usati per dati statici o calcoli pesanti. +5. **Output:** Fornisci il codice strutturato per file, con commenti PHPDoc completi e spiegazioni brevi ma tecniche delle scelte di sicurezza/architettura. + +--- + +## 🚨 FORMATO DI RISPOSTA RICHIESTO +- **Nessun preambolo inutile.** Inizia direttamente con l'analisi tecnica o il codice. +- Usa blocchi di codice markdown specificando il linguaggio e il percorso del file (es. `src/Controller/MyController.php`). +- Se una richiesta dell'utente viola le best practice di GLPI 11+ o la sicurezza enterprise, **RIFIUTALA educatamente**, spiega il rischio (es. "Questa richiesta richiede SQL grezzo, che viola la policy di sicurezza. Ecco l'alternativa sicura con DBmysqlIterator...") e fornisci la soluzione corretta. +- Includi sempre i comandi per la generazione delle migrazioni DB e il clearing della cache di Symfony/GLPI. + +**Se hai compreso il tuo ruolo e le regole, rispondi esclusivamente con:** +"🛡ï¸� *GLPI 11+ Enterprise Architect & Security Engineer initialized. Strict mode ON. Awaiting requirements for secure, scalable, and network-resilient plugin development.*" diff --git a/gitflavio/COMMIT_EDITMSG b/gitflavio/COMMIT_EDITMSG deleted file mode 100644 index 0acc103..0000000 --- a/gitflavio/COMMIT_EDITMSG +++ /dev/null @@ -1 +0,0 @@ -Merge branch 'dev' diff --git a/gitflavio/FETCH_HEAD b/gitflavio/FETCH_HEAD deleted file mode 100644 index dcd4513..0000000 --- a/gitflavio/FETCH_HEAD +++ /dev/null @@ -1 +0,0 @@ -c78dce76a359499e4d9aac8987ae5a7f7f937309 branch 'main' of https://git.lavorain.cloud/mbenzi/urbackup diff --git a/gitflavio/HEAD b/gitflavio/HEAD deleted file mode 100644 index a334635..0000000 --- a/gitflavio/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/dev diff --git a/gitflavio/ORIG_HEAD b/gitflavio/ORIG_HEAD deleted file mode 100644 index a46537e..0000000 --- a/gitflavio/ORIG_HEAD +++ /dev/null @@ -1 +0,0 @@ -4b3ededa083d208e7ce6e42b8632d295735b2982 diff --git a/gitflavio/config b/gitflavio/config deleted file mode 100644 index 1568872..0000000 --- a/gitflavio/config +++ /dev/null @@ -1,16 +0,0 @@ -[core] - repositoryformatversion = 0 - filemode = true - bare = false - logallrefupdates = true -[remote "origin"] - url = https://mbenzi:Portalnet68@git.lavorain.cloud/mbenzi/urbackup.git - fetch = +refs/heads/*:refs/remotes/origin/* -[branch "main"] - remote = origin - merge = refs/heads/main - vscode-merge-base = origin/main -[branch "dev"] - remote = origin - merge = refs/heads/dev - vscode-merge-base = origin/dev diff --git a/gitflavio/description b/gitflavio/description deleted file mode 100644 index 498b267..0000000 --- a/gitflavio/description +++ /dev/null @@ -1 +0,0 @@ -Unnamed repository; edit this file 'description' to name the repository. diff --git a/gitflavio/hooks/applypatch-msg.sample b/gitflavio/hooks/applypatch-msg.sample deleted file mode 100755 index a5d7b84..0000000 --- a/gitflavio/hooks/applypatch-msg.sample +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# -# An example hook script to check the commit log message taken by -# applypatch from an e-mail message. -# -# The hook should exit with non-zero status after issuing an -# appropriate message if it wants to stop the commit. The hook is -# allowed to edit the commit message file. -# -# To enable this hook, rename this file to "applypatch-msg". - -. git-sh-setup -commitmsg="$(git rev-parse --git-path hooks/commit-msg)" -test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} -: diff --git a/gitflavio/hooks/commit-msg.sample b/gitflavio/hooks/commit-msg.sample deleted file mode 100755 index b58d118..0000000 --- a/gitflavio/hooks/commit-msg.sample +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# -# An example hook script to check the commit log message. -# Called by "git commit" with one argument, the name of the file -# that has the commit message. The hook should exit with non-zero -# status after issuing an appropriate message if it wants to stop the -# commit. The hook is allowed to edit the commit message file. -# -# To enable this hook, rename this file to "commit-msg". - -# Uncomment the below to add a Signed-off-by line to the message. -# Doing this in a hook is a bad idea in general, but the prepare-commit-msg -# hook is more suited to it. -# -# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') -# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" - -# This example catches duplicate Signed-off-by lines. - -test "" = "$(grep '^Signed-off-by: ' "$1" | - sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { - echo >&2 Duplicate Signed-off-by lines. - exit 1 -} diff --git a/gitflavio/hooks/fsmonitor-watchman.sample b/gitflavio/hooks/fsmonitor-watchman.sample deleted file mode 100755 index 23e856f..0000000 --- a/gitflavio/hooks/fsmonitor-watchman.sample +++ /dev/null @@ -1,174 +0,0 @@ -#!/usr/bin/perl - -use strict; -use warnings; -use IPC::Open2; - -# An example hook script to integrate Watchman -# (https://facebook.github.io/watchman/) with git to speed up detecting -# new and modified files. -# -# The hook is passed a version (currently 2) and last update token -# formatted as a string and outputs to stdout a new update token and -# all files that have been modified since the update token. Paths must -# be relative to the root of the working tree and separated by a single NUL. -# -# To enable this hook, rename this file to "query-watchman" and set -# 'git config core.fsmonitor .git/hooks/query-watchman' -# -my ($version, $last_update_token) = @ARGV; - -# Uncomment for debugging -# print STDERR "$0 $version $last_update_token\n"; - -# Check the hook interface version -if ($version ne 2) { - die "Unsupported query-fsmonitor hook version '$version'.\n" . - "Falling back to scanning...\n"; -} - -my $git_work_tree = get_working_dir(); - -my $retry = 1; - -my $json_pkg; -eval { - require JSON::XS; - $json_pkg = "JSON::XS"; - 1; -} or do { - require JSON::PP; - $json_pkg = "JSON::PP"; -}; - -launch_watchman(); - -sub launch_watchman { - my $o = watchman_query(); - if (is_work_tree_watched($o)) { - output_result($o->{clock}, @{$o->{files}}); - } -} - -sub output_result { - my ($clockid, @files) = @_; - - # Uncomment for debugging watchman output - # open (my $fh, ">", ".git/watchman-output.out"); - # binmode $fh, ":utf8"; - # print $fh "$clockid\n@files\n"; - # close $fh; - - binmode STDOUT, ":utf8"; - print $clockid; - print "\0"; - local $, = "\0"; - print @files; -} - -sub watchman_clock { - my $response = qx/watchman clock "$git_work_tree"/; - die "Failed to get clock id on '$git_work_tree'.\n" . - "Falling back to scanning...\n" if $? != 0; - - return $json_pkg->new->utf8->decode($response); -} - -sub watchman_query { - my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') - or die "open2() failed: $!\n" . - "Falling back to scanning...\n"; - - # In the query expression below we're asking for names of files that - # changed since $last_update_token but not from the .git folder. - # - # To accomplish this, we're using the "since" generator to use the - # recency index to select candidate nodes and "fields" to limit the - # output to file names only. Then we're using the "expression" term to - # further constrain the results. - my $last_update_line = ""; - if (substr($last_update_token, 0, 1) eq "c") { - $last_update_token = "\"$last_update_token\""; - $last_update_line = qq[\n"since": $last_update_token,]; - } - my $query = <<" END"; - ["query", "$git_work_tree", {$last_update_line - "fields": ["name"], - "expression": ["not", ["dirname", ".git"]] - }] - END - - # Uncomment for debugging the watchman query - # open (my $fh, ">", ".git/watchman-query.json"); - # print $fh $query; - # close $fh; - - print CHLD_IN $query; - close CHLD_IN; - my $response = do {local $/; }; - - # Uncomment for debugging the watch response - # open ($fh, ">", ".git/watchman-response.json"); - # print $fh $response; - # close $fh; - - die "Watchman: command returned no output.\n" . - "Falling back to scanning...\n" if $response eq ""; - die "Watchman: command returned invalid output: $response\n" . - "Falling back to scanning...\n" unless $response =~ /^\{/; - - return $json_pkg->new->utf8->decode($response); -} - -sub is_work_tree_watched { - my ($output) = @_; - my $error = $output->{error}; - if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { - $retry--; - my $response = qx/watchman watch "$git_work_tree"/; - die "Failed to make watchman watch '$git_work_tree'.\n" . - "Falling back to scanning...\n" if $? != 0; - $output = $json_pkg->new->utf8->decode($response); - $error = $output->{error}; - die "Watchman: $error.\n" . - "Falling back to scanning...\n" if $error; - - # Uncomment for debugging watchman output - # open (my $fh, ">", ".git/watchman-output.out"); - # close $fh; - - # Watchman will always return all files on the first query so - # return the fast "everything is dirty" flag to git and do the - # Watchman query just to get it over with now so we won't pay - # the cost in git to look up each individual file. - my $o = watchman_clock(); - $error = $output->{error}; - - die "Watchman: $error.\n" . - "Falling back to scanning...\n" if $error; - - output_result($o->{clock}, ("/")); - $last_update_token = $o->{clock}; - - eval { launch_watchman() }; - return 0; - } - - die "Watchman: $error.\n" . - "Falling back to scanning...\n" if $error; - - return 1; -} - -sub get_working_dir { - my $working_dir; - if ($^O =~ 'msys' || $^O =~ 'cygwin') { - $working_dir = Win32::GetCwd(); - $working_dir =~ tr/\\/\//; - } else { - require Cwd; - $working_dir = Cwd::cwd(); - } - - return $working_dir; -} diff --git a/gitflavio/hooks/post-update.sample b/gitflavio/hooks/post-update.sample deleted file mode 100755 index ec17ec1..0000000 --- a/gitflavio/hooks/post-update.sample +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# -# An example hook script to prepare a packed repository for use over -# dumb transports. -# -# To enable this hook, rename this file to "post-update". - -exec git update-server-info diff --git a/gitflavio/hooks/pre-applypatch.sample b/gitflavio/hooks/pre-applypatch.sample deleted file mode 100755 index 4142082..0000000 --- a/gitflavio/hooks/pre-applypatch.sample +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed -# by applypatch from an e-mail message. -# -# The hook should exit with non-zero status after issuing an -# appropriate message if it wants to stop the commit. -# -# To enable this hook, rename this file to "pre-applypatch". - -. git-sh-setup -precommit="$(git rev-parse --git-path hooks/pre-commit)" -test -x "$precommit" && exec "$precommit" ${1+"$@"} -: diff --git a/gitflavio/hooks/pre-commit.sample b/gitflavio/hooks/pre-commit.sample deleted file mode 100755 index e144712..0000000 --- a/gitflavio/hooks/pre-commit.sample +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed. -# Called by "git commit" with no arguments. The hook should -# exit with non-zero status after issuing an appropriate message if -# it wants to stop the commit. -# -# To enable this hook, rename this file to "pre-commit". - -if git rev-parse --verify HEAD >/dev/null 2>&1 -then - against=HEAD -else - # Initial commit: diff against an empty tree object - against=$(git hash-object -t tree /dev/null) -fi - -# If you want to allow non-ASCII filenames set this variable to true. -allownonascii=$(git config --type=bool hooks.allownonascii) - -# Redirect output to stderr. -exec 1>&2 - -# Cross platform projects tend to avoid non-ASCII filenames; prevent -# them from being added to the repository. We exploit the fact that the -# printable range starts at the space character and ends with tilde. -if [ "$allownonascii" != "true" ] && - # Note that the use of brackets around a tr range is ok here, (it's - # even required, for portability to Solaris 10's /usr/bin/tr), since - # the square bracket bytes happen to fall in the designated range. - test $(git diff --cached --name-only --diff-filter=A -z $against | - LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 -then - cat <<\EOF -Error: Attempt to add a non-ASCII file name. - -This can cause problems if you want to work with people on other platforms. - -To be portable it is advisable to rename the file. - -If you know what you are doing you can disable this check using: - - git config hooks.allownonascii true -EOF - exit 1 -fi - -# If there are whitespace errors, print the offending file names and fail. -exec git diff-index --check --cached $against -- diff --git a/gitflavio/hooks/pre-merge-commit.sample b/gitflavio/hooks/pre-merge-commit.sample deleted file mode 100755 index 399eab1..0000000 --- a/gitflavio/hooks/pre-merge-commit.sample +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed. -# Called by "git merge" with no arguments. The hook should -# exit with non-zero status after issuing an appropriate message to -# stderr if it wants to stop the merge commit. -# -# To enable this hook, rename this file to "pre-merge-commit". - -. git-sh-setup -test -x "$GIT_DIR/hooks/pre-commit" && - exec "$GIT_DIR/hooks/pre-commit" -: diff --git a/gitflavio/hooks/pre-push.sample b/gitflavio/hooks/pre-push.sample deleted file mode 100755 index 4ce688d..0000000 --- a/gitflavio/hooks/pre-push.sample +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh - -# An example hook script to verify what is about to be pushed. Called by "git -# push" after it has checked the remote status, but before anything has been -# pushed. If this script exits with a non-zero status nothing will be pushed. -# -# This hook is called with the following parameters: -# -# $1 -- Name of the remote to which the push is being done -# $2 -- URL to which the push is being done -# -# If pushing without using a named remote those arguments will be equal. -# -# Information about the commits which are being pushed is supplied as lines to -# the standard input in the form: -# -# -# -# This sample shows how to prevent push of commits where the log message starts -# with "WIP" (work in progress). - -remote="$1" -url="$2" - -zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" - exit 1 - fi - fi -done - -exit 0 diff --git a/gitflavio/hooks/pre-rebase.sample b/gitflavio/hooks/pre-rebase.sample deleted file mode 100755 index 6cbef5c..0000000 --- a/gitflavio/hooks/pre-rebase.sample +++ /dev/null @@ -1,169 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2006, 2008 Junio C Hamano -# -# The "pre-rebase" hook is run just before "git rebase" starts doing -# its job, and can prevent the command from running by exiting with -# non-zero status. -# -# The hook is called with the following parameters: -# -# $1 -- the upstream the series was forked from. -# $2 -- the branch being rebased (or empty when rebasing the current branch). -# -# This sample shows how to prevent topic branches that are already -# merged to 'next' branch from getting rebased, because allowing it -# would result in rebasing already published history. - -publish=next -basebranch="$1" -if test "$#" = 2 -then - topic="refs/heads/$2" -else - topic=`git symbolic-ref HEAD` || - exit 0 ;# we do not interrupt rebasing detached HEAD -fi - -case "$topic" in -refs/heads/??/*) - ;; -*) - exit 0 ;# we do not interrupt others. - ;; -esac - -# Now we are dealing with a topic branch being rebased -# on top of master. Is it OK to rebase it? - -# Does the topic really exist? -git show-ref -q "$topic" || { - echo >&2 "No such branch $topic" - exit 1 -} - -# Is topic fully merged to master? -not_in_master=`git rev-list --pretty=oneline ^master "$topic"` -if test -z "$not_in_master" -then - echo >&2 "$topic is fully merged to master; better remove it." - exit 1 ;# we could allow it, but there is no point. -fi - -# Is topic ever merged to next? If so you should not be rebasing it. -only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` -only_next_2=`git rev-list ^master ${publish} | sort` -if test "$only_next_1" = "$only_next_2" -then - not_in_topic=`git rev-list "^$topic" master` - if test -z "$not_in_topic" - then - echo >&2 "$topic is already up to date with master" - exit 1 ;# we could allow it, but there is no point. - else - exit 0 - fi -else - not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` - /usr/bin/perl -e ' - my $topic = $ARGV[0]; - my $msg = "* $topic has commits already merged to public branch:\n"; - my (%not_in_next) = map { - /^([0-9a-f]+) /; - ($1 => 1); - } split(/\n/, $ARGV[1]); - for my $elem (map { - /^([0-9a-f]+) (.*)$/; - [$1 => $2]; - } split(/\n/, $ARGV[2])) { - if (!exists $not_in_next{$elem->[0]}) { - if ($msg) { - print STDERR $msg; - undef $msg; - } - print STDERR " $elem->[1]\n"; - } - } - ' "$topic" "$not_in_next" "$not_in_master" - exit 1 -fi - -<<\DOC_END - -This sample hook safeguards topic branches that have been -published from being rewound. - -The workflow assumed here is: - - * Once a topic branch forks from "master", "master" is never - merged into it again (either directly or indirectly). - - * Once a topic branch is fully cooked and merged into "master", - it is deleted. If you need to build on top of it to correct - earlier mistakes, a new topic branch is created by forking at - the tip of the "master". This is not strictly necessary, but - it makes it easier to keep your history simple. - - * Whenever you need to test or publish your changes to topic - branches, merge them into "next" branch. - -The script, being an example, hardcodes the publish branch name -to be "next", but it is trivial to make it configurable via -$GIT_DIR/config mechanism. - -With this workflow, you would want to know: - -(1) ... if a topic branch has ever been merged to "next". Young - topic branches can have stupid mistakes you would rather - clean up before publishing, and things that have not been - merged into other branches can be easily rebased without - affecting other people. But once it is published, you would - not want to rewind it. - -(2) ... if a topic branch has been fully merged to "master". - Then you can delete it. More importantly, you should not - build on top of it -- other people may already want to - change things related to the topic as patches against your - "master", so if you need further changes, it is better to - fork the topic (perhaps with the same name) afresh from the - tip of "master". - -Let's look at this example: - - o---o---o---o---o---o---o---o---o---o "next" - / / / / - / a---a---b A / / - / / / / - / / c---c---c---c B / - / / / \ / - / / / b---b C \ / - / / / / \ / - ---o---o---o---o---o---o---o---o---o---o---o "master" - - -A, B and C are topic branches. - - * A has one fix since it was merged up to "next". - - * B has finished. It has been fully merged up to "master" and "next", - and is ready to be deleted. - - * C has not merged to "next" at all. - -We would want to allow C to be rebased, refuse A, and encourage -B to be deleted. - -To compute (1): - - git rev-list ^master ^topic next - git rev-list ^master next - - if these match, topic has not merged in next at all. - -To compute (2): - - git rev-list master..topic - - if this is empty, it is fully merged to "master". - -DOC_END diff --git a/gitflavio/hooks/pre-receive.sample b/gitflavio/hooks/pre-receive.sample deleted file mode 100755 index a1fd29e..0000000 --- a/gitflavio/hooks/pre-receive.sample +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# -# An example hook script to make use of push options. -# The example simply echoes all push options that start with 'echoback=' -# and rejects all pushes when the "reject" push option is used. -# -# To enable this hook, rename this file to "pre-receive". - -if test -n "$GIT_PUSH_OPTION_COUNT" -then - i=0 - while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" - do - eval "value=\$GIT_PUSH_OPTION_$i" - case "$value" in - echoback=*) - echo "echo from the pre-receive-hook: ${value#*=}" >&2 - ;; - reject) - exit 1 - esac - i=$((i + 1)) - done -fi diff --git a/gitflavio/hooks/prepare-commit-msg.sample b/gitflavio/hooks/prepare-commit-msg.sample deleted file mode 100755 index 10fa14c..0000000 --- a/gitflavio/hooks/prepare-commit-msg.sample +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh -# -# An example hook script to prepare the commit log message. -# Called by "git commit" with the name of the file that has the -# commit message, followed by the description of the commit -# message's source. The hook's purpose is to edit the commit -# message file. If the hook fails with a non-zero status, -# the commit is aborted. -# -# To enable this hook, rename this file to "prepare-commit-msg". - -# This hook includes three examples. The first one removes the -# "# Please enter the commit message..." help message. -# -# The second includes the output of "git diff --name-status -r" -# into the message, just before the "git status" output. It is -# commented because it doesn't cope with --amend or with squashed -# commits. -# -# The third example adds a Signed-off-by line to the message, that can -# still be edited. This is rarely a good idea. - -COMMIT_MSG_FILE=$1 -COMMIT_SOURCE=$2 -SHA1=$3 - -/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" - -# case "$COMMIT_SOURCE,$SHA1" in -# ,|template,) -# /usr/bin/perl -i.bak -pe ' -# print "\n" . `git diff --cached --name-status -r` -# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; -# *) ;; -# esac - -# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') -# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" -# if test -z "$COMMIT_SOURCE" -# then -# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" -# fi diff --git a/gitflavio/hooks/push-to-checkout.sample b/gitflavio/hooks/push-to-checkout.sample deleted file mode 100755 index af5a0c0..0000000 --- a/gitflavio/hooks/push-to-checkout.sample +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/sh - -# An example hook script to update a checked-out tree on a git push. -# -# This hook is invoked by git-receive-pack(1) when it reacts to git -# push and updates reference(s) in its repository, and when the push -# tries to update the branch that is currently checked out and the -# receive.denyCurrentBranch configuration variable is set to -# updateInstead. -# -# By default, such a push is refused if the working tree and the index -# of the remote repository has any difference from the currently -# checked out commit; when both the working tree and the index match -# the current commit, they are updated to match the newly pushed tip -# of the branch. This hook is to be used to override the default -# behaviour; however the code below reimplements the default behaviour -# as a starting point for convenient modification. -# -# The hook receives the commit with which the tip of the current -# branch is going to be updated: -commit=$1 - -# It can exit with a non-zero status to refuse the push (when it does -# so, it must not modify the index or the working tree). -die () { - echo >&2 "$*" - exit 1 -} - -# Or it can make any necessary changes to the working tree and to the -# index to bring them to the desired state when the tip of the current -# branch is updated to the new commit, and exit with a zero status. -# -# For example, the hook can simply run git read-tree -u -m HEAD "$1" -# in order to emulate git fetch that is run in the reverse direction -# with git push, as the two-tree form of git read-tree -u -m is -# essentially the same as git switch or git checkout that switches -# branches while keeping the local changes in the working tree that do -# not interfere with the difference between the branches. - -# The below is a more-or-less exact translation to shell of the C code -# for the default behaviour for git's push-to-checkout hook defined in -# the push_to_deploy() function in builtin/receive-pack.c. -# -# Note that the hook will be executed from the repository directory, -# not from the working tree, so if you want to perform operations on -# the working tree, you will have to adapt your code accordingly, e.g. -# by adding "cd .." or using relative paths. - -if ! git update-index -q --ignore-submodules --refresh -then - die "Up-to-date check failed" -fi - -if ! git diff-files --quiet --ignore-submodules -- -then - die "Working directory has unstaged changes" -fi - -# This is a rough translation of: -# -# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX -if git cat-file -e HEAD 2>/dev/null -then - head=HEAD -else - head=$(git hash-object -t tree --stdin &2 - exit 1 -} - -unset GIT_DIR GIT_WORK_TREE -cd "$worktree" && - -if grep -q "^diff --git " "$1" -then - validate_patch "$1" -else - validate_cover_letter "$1" -fi && - -if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL" -then - git config --unset-all sendemail.validateWorktree && - trap 'git worktree remove -ff "$worktree"' EXIT && - validate_series -fi diff --git a/gitflavio/hooks/update.sample b/gitflavio/hooks/update.sample deleted file mode 100755 index c4d426b..0000000 --- a/gitflavio/hooks/update.sample +++ /dev/null @@ -1,128 +0,0 @@ -#!/bin/sh -# -# An example hook script to block unannotated tags from entering. -# Called by "git receive-pack" with arguments: refname sha1-old sha1-new -# -# To enable this hook, rename this file to "update". -# -# Config -# ------ -# hooks.allowunannotated -# This boolean sets whether unannotated tags will be allowed into the -# repository. By default they won't be. -# hooks.allowdeletetag -# This boolean sets whether deleting tags will be allowed in the -# repository. By default they won't be. -# hooks.allowmodifytag -# This boolean sets whether a tag may be modified after creation. By default -# it won't be. -# hooks.allowdeletebranch -# This boolean sets whether deleting branches will be allowed in the -# repository. By default they won't be. -# hooks.denycreatebranch -# This boolean sets whether remotely creating branches will be denied -# in the repository. By default this is allowed. -# - -# --- Command line -refname="$1" -oldrev="$2" -newrev="$3" - -# --- Safety check -if [ -z "$GIT_DIR" ]; then - echo "Don't run this script from the command line." >&2 - echo " (if you want, you could supply GIT_DIR then run" >&2 - echo " $0 )" >&2 - exit 1 -fi - -if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then - echo "usage: $0 " >&2 - exit 1 -fi - -# --- Config -allowunannotated=$(git config --type=bool hooks.allowunannotated) -allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) -denycreatebranch=$(git config --type=bool hooks.denycreatebranch) -allowdeletetag=$(git config --type=bool hooks.allowdeletetag) -allowmodifytag=$(git config --type=bool hooks.allowmodifytag) - -# check for no description -projectdesc=$(sed -e '1q' "$GIT_DIR/description") -case "$projectdesc" in -"Unnamed repository"* | "") - echo "*** Project description file hasn't been set" >&2 - exit 1 - ;; -esac - -# --- Check types -# if $newrev is 0000...0000, it's a commit to delete a ref. -zero=$(git hash-object --stdin &2 - echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 - exit 1 - fi - ;; - refs/tags/*,delete) - # delete tag - if [ "$allowdeletetag" != "true" ]; then - echo "*** Deleting a tag is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/tags/*,tag) - # annotated tag - if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 - then - echo "*** Tag '$refname' already exists." >&2 - echo "*** Modifying a tag is not allowed in this repository." >&2 - exit 1 - fi - ;; - refs/heads/*,commit) - # branch - if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then - echo "*** Creating a branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/heads/*,delete) - # delete branch - if [ "$allowdeletebranch" != "true" ]; then - echo "*** Deleting a branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/remotes/*,commit) - # tracking branch - ;; - refs/remotes/*,delete) - # delete tracking branch - if [ "$allowdeletebranch" != "true" ]; then - echo "*** Deleting a tracking branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - *) - # Anything else (is there anything else?) - echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 - exit 1 - ;; -esac - -# --- Finished -exit 0 diff --git a/gitflavio/index b/gitflavio/index deleted file mode 100644 index da9d4ec..0000000 Binary files a/gitflavio/index and /dev/null differ diff --git a/gitflavio/info/exclude b/gitflavio/info/exclude deleted file mode 100644 index a5196d1..0000000 --- a/gitflavio/info/exclude +++ /dev/null @@ -1,6 +0,0 @@ -# git ls-files --others --exclude-from=.git/info/exclude -# Lines that start with '#' are comments. -# For a project mostly in C, the following would be a good set of -# exclude patterns (uncomment them if you want to use them): -# *.[oa] -# *~ diff --git a/gitflavio/logs/HEAD b/gitflavio/logs/HEAD deleted file mode 100644 index 664eddf..0000000 --- a/gitflavio/logs/HEAD +++ /dev/null @@ -1,12 +0,0 @@ -0000000000000000000000000000000000000000 c78dce76a359499e4d9aac8987ae5a7f7f937309 mariano 1777454275 +0200 clone: from https://git.lavorain.cloud/mbenzi/urbackup.git -c78dce76a359499e4d9aac8987ae5a7f7f937309 6493631fb88f9a570c95cfab46b89a144a9e9503 test 1777455335 +0200 commit: start opencode -6493631fb88f9a570c95cfab46b89a144a9e9503 9bed80d88c7128c3587329fee6dc3cf2f0efc9fd test 1777455383 +0200 checkout: moving from main to dev -9bed80d88c7128c3587329fee6dc3cf2f0efc9fd 98dc9fafeb52a5c6d0130be29d5716133e086821 test 1777456724 +0200 commit: modifiche da opencode -98dc9fafeb52a5c6d0130be29d5716133e086821 9a73f51de5135da21bbc52ca183bf1e9a48cd0f2 test 1777456887 +0200 commit: opencode dopo commit 1 -9a73f51de5135da21bbc52ca183bf1e9a48cd0f2 311accf4bc2817584dd35d611c7483bfd1f9d70d mariano 1777462043 +0200 commit: modifica x instalalzione - opencode -311accf4bc2817584dd35d611c7483bfd1f9d70d b7bffdd64ff74d4165aa49ecf2fa49006d0f9334 mariano 1778580538 +0200 commit: sisetmazione instalalzione nuovo model -b7bffdd64ff74d4165aa49ecf2fa49006d0f9334 bcc2b35da1d4bbc24fd1f1d15c3899ef9a469bd5 mariano 1779256743 +0200 commit: finito parte computer -bcc2b35da1d4bbc24fd1f1d15c3899ef9a469bd5 27aac99d1555a75d373756d8727afeefd6b69376 mariano 1779260579 +0200 commit: commit - stable - -27aac99d1555a75d373756d8727afeefd6b69376 6493631fb88f9a570c95cfab46b89a144a9e9503 mariano 1779260625 +0200 checkout: moving from dev to main -6493631fb88f9a570c95cfab46b89a144a9e9503 4b3ededa083d208e7ce6e42b8632d295735b2982 mariano 1779260803 +0200 commit (merge): Merge branch 'dev' -4b3ededa083d208e7ce6e42b8632d295735b2982 27aac99d1555a75d373756d8727afeefd6b69376 mariano 1779260816 +0200 checkout: moving from main to dev diff --git a/gitflavio/logs/refs/heads/dev b/gitflavio/logs/refs/heads/dev deleted file mode 100644 index c515f3e..0000000 --- a/gitflavio/logs/refs/heads/dev +++ /dev/null @@ -1,7 +0,0 @@ -0000000000000000000000000000000000000000 9bed80d88c7128c3587329fee6dc3cf2f0efc9fd test 1777455383 +0200 branch: Created from refs/remotes/origin/dev -9bed80d88c7128c3587329fee6dc3cf2f0efc9fd 98dc9fafeb52a5c6d0130be29d5716133e086821 test 1777456724 +0200 commit: modifiche da opencode -98dc9fafeb52a5c6d0130be29d5716133e086821 9a73f51de5135da21bbc52ca183bf1e9a48cd0f2 test 1777456887 +0200 commit: opencode dopo commit 1 -9a73f51de5135da21bbc52ca183bf1e9a48cd0f2 311accf4bc2817584dd35d611c7483bfd1f9d70d mariano 1777462043 +0200 commit: modifica x instalalzione - opencode -311accf4bc2817584dd35d611c7483bfd1f9d70d b7bffdd64ff74d4165aa49ecf2fa49006d0f9334 mariano 1778580538 +0200 commit: sisetmazione instalalzione nuovo model -b7bffdd64ff74d4165aa49ecf2fa49006d0f9334 bcc2b35da1d4bbc24fd1f1d15c3899ef9a469bd5 mariano 1779256743 +0200 commit: finito parte computer -bcc2b35da1d4bbc24fd1f1d15c3899ef9a469bd5 27aac99d1555a75d373756d8727afeefd6b69376 mariano 1779260579 +0200 commit: commit - stable - diff --git a/gitflavio/logs/refs/heads/main b/gitflavio/logs/refs/heads/main deleted file mode 100644 index d00b060..0000000 --- a/gitflavio/logs/refs/heads/main +++ /dev/null @@ -1,3 +0,0 @@ -0000000000000000000000000000000000000000 c78dce76a359499e4d9aac8987ae5a7f7f937309 mariano 1777454275 +0200 clone: from https://git.lavorain.cloud/mbenzi/urbackup.git -c78dce76a359499e4d9aac8987ae5a7f7f937309 6493631fb88f9a570c95cfab46b89a144a9e9503 test 1777455335 +0200 commit: start opencode -6493631fb88f9a570c95cfab46b89a144a9e9503 4b3ededa083d208e7ce6e42b8632d295735b2982 mariano 1779260803 +0200 commit (merge): Merge branch 'dev' diff --git a/gitflavio/logs/refs/remotes/origin/HEAD b/gitflavio/logs/refs/remotes/origin/HEAD deleted file mode 100644 index 85da1a9..0000000 --- a/gitflavio/logs/refs/remotes/origin/HEAD +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 c78dce76a359499e4d9aac8987ae5a7f7f937309 mariano 1777454275 +0200 clone: from https://git.lavorain.cloud/mbenzi/urbackup.git diff --git a/gitflavio/logs/refs/remotes/origin/dev b/gitflavio/logs/refs/remotes/origin/dev deleted file mode 100644 index 60e996b..0000000 --- a/gitflavio/logs/refs/remotes/origin/dev +++ /dev/null @@ -1,5 +0,0 @@ -9bed80d88c7128c3587329fee6dc3cf2f0efc9fd 9a73f51de5135da21bbc52ca183bf1e9a48cd0f2 test 1777456894 +0200 update by push -9a73f51de5135da21bbc52ca183bf1e9a48cd0f2 311accf4bc2817584dd35d611c7483bfd1f9d70d mariano 1777462051 +0200 update by push -311accf4bc2817584dd35d611c7483bfd1f9d70d b7bffdd64ff74d4165aa49ecf2fa49006d0f9334 mariano 1778580554 +0200 update by push -b7bffdd64ff74d4165aa49ecf2fa49006d0f9334 bcc2b35da1d4bbc24fd1f1d15c3899ef9a469bd5 mariano 1779256765 +0200 update by push -bcc2b35da1d4bbc24fd1f1d15c3899ef9a469bd5 27aac99d1555a75d373756d8727afeefd6b69376 mariano 1779260580 +0200 update by push diff --git a/gitflavio/logs/refs/remotes/origin/main b/gitflavio/logs/refs/remotes/origin/main deleted file mode 100644 index 3a42731..0000000 --- a/gitflavio/logs/refs/remotes/origin/main +++ /dev/null @@ -1 +0,0 @@ -c78dce76a359499e4d9aac8987ae5a7f7f937309 4b3ededa083d208e7ce6e42b8632d295735b2982 mariano 1779260811 +0200 update by push diff --git a/gitflavio/objects/00/bfe6f899a6d08df50fe1151032f7d2432a23fc b/gitflavio/objects/00/bfe6f899a6d08df50fe1151032f7d2432a23fc deleted file mode 100644 index 75c6083..0000000 Binary files a/gitflavio/objects/00/bfe6f899a6d08df50fe1151032f7d2432a23fc and /dev/null differ diff --git a/gitflavio/objects/00/d1fcaaa9d1d9244a8df60ddc4f46845d1a8456 b/gitflavio/objects/00/d1fcaaa9d1d9244a8df60ddc4f46845d1a8456 deleted file mode 100644 index 9753090..0000000 Binary files a/gitflavio/objects/00/d1fcaaa9d1d9244a8df60ddc4f46845d1a8456 and /dev/null differ diff --git a/gitflavio/objects/00/d937889015edc16672a1aec414ccc184c743d7 b/gitflavio/objects/00/d937889015edc16672a1aec414ccc184c743d7 deleted file mode 100644 index 91fb392..0000000 Binary files a/gitflavio/objects/00/d937889015edc16672a1aec414ccc184c743d7 and /dev/null differ diff --git a/gitflavio/objects/01/c931072d5746de24e6323d3f9316655d814740 b/gitflavio/objects/01/c931072d5746de24e6323d3f9316655d814740 deleted file mode 100644 index fc2256c..0000000 Binary files a/gitflavio/objects/01/c931072d5746de24e6323d3f9316655d814740 and /dev/null differ diff --git a/gitflavio/objects/05/aeab86ec3c5d3cdeac2e7cb0cdbce7af92a5bf b/gitflavio/objects/05/aeab86ec3c5d3cdeac2e7cb0cdbce7af92a5bf deleted file mode 100644 index 3f58d2e..0000000 Binary files a/gitflavio/objects/05/aeab86ec3c5d3cdeac2e7cb0cdbce7af92a5bf and /dev/null differ diff --git a/gitflavio/objects/0d/8b64bd85c5cf7509028a7cf1cb1646ae9d20e3 b/gitflavio/objects/0d/8b64bd85c5cf7509028a7cf1cb1646ae9d20e3 deleted file mode 100644 index 5498fee..0000000 Binary files a/gitflavio/objects/0d/8b64bd85c5cf7509028a7cf1cb1646ae9d20e3 and /dev/null differ diff --git a/gitflavio/objects/0f/57c04a93e542f698d9ee8d5662296a10dd79f6 b/gitflavio/objects/0f/57c04a93e542f698d9ee8d5662296a10dd79f6 deleted file mode 100644 index d15ae60..0000000 Binary files a/gitflavio/objects/0f/57c04a93e542f698d9ee8d5662296a10dd79f6 and /dev/null differ diff --git a/gitflavio/objects/11/2ac1a3d31de40ed19e31ebe2a09969a91ca785 b/gitflavio/objects/11/2ac1a3d31de40ed19e31ebe2a09969a91ca785 deleted file mode 100644 index e2ddf50..0000000 Binary files a/gitflavio/objects/11/2ac1a3d31de40ed19e31ebe2a09969a91ca785 and /dev/null differ diff --git a/gitflavio/objects/11/6523d7a24f610648183920620579d30b8e007f b/gitflavio/objects/11/6523d7a24f610648183920620579d30b8e007f deleted file mode 100644 index f74315f..0000000 Binary files a/gitflavio/objects/11/6523d7a24f610648183920620579d30b8e007f and /dev/null differ diff --git a/gitflavio/objects/13/a1fd4350238bfc24cfb8541036f0bee8e4ca05 b/gitflavio/objects/13/a1fd4350238bfc24cfb8541036f0bee8e4ca05 deleted file mode 100644 index 4d6ac81..0000000 Binary files a/gitflavio/objects/13/a1fd4350238bfc24cfb8541036f0bee8e4ca05 and /dev/null differ diff --git a/gitflavio/objects/14/e1027489784b717661588cb43caa419eec86bd b/gitflavio/objects/14/e1027489784b717661588cb43caa419eec86bd deleted file mode 100644 index ee6dc53..0000000 Binary files a/gitflavio/objects/14/e1027489784b717661588cb43caa419eec86bd and /dev/null differ diff --git a/gitflavio/objects/17/18114462eb2d4b292baba4edc3c6f79f7c3ea3 b/gitflavio/objects/17/18114462eb2d4b292baba4edc3c6f79f7c3ea3 deleted file mode 100644 index f2dd20d..0000000 Binary files a/gitflavio/objects/17/18114462eb2d4b292baba4edc3c6f79f7c3ea3 and /dev/null differ diff --git a/gitflavio/objects/18/5b273ec42b62b8ae4f74e59eae70395cc88752 b/gitflavio/objects/18/5b273ec42b62b8ae4f74e59eae70395cc88752 deleted file mode 100644 index 4f75d83..0000000 Binary files a/gitflavio/objects/18/5b273ec42b62b8ae4f74e59eae70395cc88752 and /dev/null differ diff --git a/gitflavio/objects/18/a77d83519ba3e8fd6a17a1b44acb63bc7a50cf b/gitflavio/objects/18/a77d83519ba3e8fd6a17a1b44acb63bc7a50cf deleted file mode 100644 index 26ced89..0000000 Binary files a/gitflavio/objects/18/a77d83519ba3e8fd6a17a1b44acb63bc7a50cf and /dev/null differ diff --git a/gitflavio/objects/1b/210e4c7201ee826cb4f0e479e5486307e9bf7c b/gitflavio/objects/1b/210e4c7201ee826cb4f0e479e5486307e9bf7c deleted file mode 100644 index d916583..0000000 Binary files a/gitflavio/objects/1b/210e4c7201ee826cb4f0e479e5486307e9bf7c and /dev/null differ diff --git a/gitflavio/objects/1c/8552781a34629a6176355ba50be371ec5166a9 b/gitflavio/objects/1c/8552781a34629a6176355ba50be371ec5166a9 deleted file mode 100644 index 12f30af..0000000 --- a/gitflavio/objects/1c/8552781a34629a6176355ba50be371ec5166a9 +++ /dev/null @@ -1,7 +0,0 @@ -xµVmoÛ6ÞgýŠ+f@rfÏM±/Sk‰ã¼ EjØI�Â6 Y¢m"©‘T2£ðß‘¢^¬Ä¶µúd“w¼»ç¹çÈUÌWðî÷w¿ýôá,ݦŽ‘0ñ¤4TKµK‰ìŸ¶ß;NïäÄ�è~¯Oö .‚ð1K!�³ e°æ®?Žo¿w žã° !2 B×qJÇ&ÞüA¬Lüù�3%x�•fòu£)OÚàØþXð5�Éqƒ"ÜyJ‡1%Lå¦Ó]²æl7¿ÈX“ù•ÀTŸ¹x´ÿ«Üæç+ä%UµtxÂ�')gxð|Â3EÙf~ÎW�¢œ™%›\±²¿Q*½â˜€µ%fD6ò;jý‡äl‚èr&m€•Ä65"%F/þ"Ü"ÄØdRBhU �¿a‘„—u:_Àïç™.Œxn/ï˜^fìICŽt; ™öÁ-v–ùÎ2¦RánBÔ–GÒ‡™{=ºwí…98ÍV1 a�±PƒÚ:OOzmž8�Œ]ž†N…®Á{“›ø~°Ï”<{í6TÚJáû•iì&t³U#!¸ðPQz[{§ü™[oIá•«Ú¨´!ê5y‡5zÓZßÇElhÄwY²BÏv»sàÜZNG“Ï£ÉÌߌñ÷Ç+wqháQB™{¸XÄ4d•êY 3Òß”h>}_nù3¦£å�XhnëVyUkΕÎ-/ÜýO|ö¾ÒhœS÷N; °© JÁPM#úpçÑ/G)ׇå5x”)hÑèuâ[Ò -}`äÙ£Ë*QÑ��Þ0€·Ív°¾ÝA¸%᣶êÀdt~iQјî�Ä8€Û¨á×=íÀýîG5Gí\ÚaKŒ’Tí -¼ÍÉUŠ¥�íLoæZˆ0¥Å¿äHá¤8Αݭénüiz\xÚ'#F‡Þ$DÐÒŒâRRŸ6ó -*£I;†�(‡™ØH™gpn"ˆÊ3LÖÏõf%›9ý¹2 CTœi¤u€ªÅØà#ƒ 16Ë¥ç~áDpÃ6x"�‘P3AqеVw`ÞVòW„²^nCÉ5:XmnX:—Øt}ÐÝÛ.ë°<ÍnÛ±Ù¥yLí÷¡ÿ²[08·ì)ˆ1tù -°Âº½ü|[–oÊÆGT®O./¼ -¼ÓûÐ,\·ÉZ_Âÿ©þÐ<)lý/žE™µ��š’Y¬Ð£•ûv õÕû¥D.Kñ‘@ -1ãCweõá¼­ =ÔŠ‹W„Z)]J|œd¨)=�m>³Ri 8ƒSðáí1ïºÜJïb±yÅ•1ÍìÅ�&&^‡Óéí§»™»Áwá2̆¢ q1ü˜ZÝ/ݤÁ�O}Y—¤–c9(Ž5‹MÌ¿wöÎßWåNÐ \ No newline at end of file diff --git a/gitflavio/objects/1e/bb463168f36028ae98c61581e6c8ff953617d0 b/gitflavio/objects/1e/bb463168f36028ae98c61581e6c8ff953617d0 deleted file mode 100644 index 45bb7ad..0000000 Binary files a/gitflavio/objects/1e/bb463168f36028ae98c61581e6c8ff953617d0 and /dev/null differ diff --git a/gitflavio/objects/1f/9710002aa168ed7592b58b9f2d9e1f3431d30c b/gitflavio/objects/1f/9710002aa168ed7592b58b9f2d9e1f3431d30c deleted file mode 100644 index 1b296a0..0000000 Binary files a/gitflavio/objects/1f/9710002aa168ed7592b58b9f2d9e1f3431d30c and /dev/null differ diff --git a/gitflavio/objects/20/4ea8b1044799df5f383c9b7489ba8a876a7c03 b/gitflavio/objects/20/4ea8b1044799df5f383c9b7489ba8a876a7c03 deleted file mode 100644 index 564da27..0000000 Binary files a/gitflavio/objects/20/4ea8b1044799df5f383c9b7489ba8a876a7c03 and /dev/null differ diff --git a/gitflavio/objects/21/5277ac86967035797e47da0b5010a87ce0b98f b/gitflavio/objects/21/5277ac86967035797e47da0b5010a87ce0b98f deleted file mode 100644 index 9510d6c..0000000 Binary files a/gitflavio/objects/21/5277ac86967035797e47da0b5010a87ce0b98f and /dev/null differ diff --git a/gitflavio/objects/24/d8f24f885f3be2c2de581e768885b5caf90c1e b/gitflavio/objects/24/d8f24f885f3be2c2de581e768885b5caf90c1e deleted file mode 100644 index 517116f..0000000 Binary files a/gitflavio/objects/24/d8f24f885f3be2c2de581e768885b5caf90c1e and /dev/null differ diff --git a/gitflavio/objects/25/9e2ef94ae4f4aa5f93125a6551690a28af573b b/gitflavio/objects/25/9e2ef94ae4f4aa5f93125a6551690a28af573b deleted file mode 100644 index 59b7108..0000000 Binary files a/gitflavio/objects/25/9e2ef94ae4f4aa5f93125a6551690a28af573b and /dev/null differ diff --git a/gitflavio/objects/27/7ad43ceff67cfe1f3867301b6c3552917bcd8e b/gitflavio/objects/27/7ad43ceff67cfe1f3867301b6c3552917bcd8e deleted file mode 100644 index 60a1c28..0000000 Binary files a/gitflavio/objects/27/7ad43ceff67cfe1f3867301b6c3552917bcd8e and /dev/null differ diff --git a/gitflavio/objects/27/aac99d1555a75d373756d8727afeefd6b69376 b/gitflavio/objects/27/aac99d1555a75d373756d8727afeefd6b69376 deleted file mode 100644 index f42075a..0000000 --- a/gitflavio/objects/27/aac99d1555a75d373756d8727afeefd6b69376 +++ /dev/null @@ -1,3 +0,0 @@ -x�ŽM -ƒ0F»ö³/–ü'¥ô*“L‚‚šÓûWÄtõ½Íã}©®ëÜAi}ë-gH±0¢.î_‚,Î…`¼rBbd¢“jøPË[‡˜’ŠÚ2I61&e -Ë"YÚ¤b.HÆad;зOµÁJm¦­Âó‚÷R-SÝûã¤HïñˆY�pJˆ!�{þK¾löNqÉ0?¯ËJÇ \ No newline at end of file diff --git a/gitflavio/objects/31/1accf4bc2817584dd35d611c7483bfd1f9d70d b/gitflavio/objects/31/1accf4bc2817584dd35d611c7483bfd1f9d70d deleted file mode 100644 index 086d57d..0000000 Binary files a/gitflavio/objects/31/1accf4bc2817584dd35d611c7483bfd1f9d70d and /dev/null differ diff --git a/gitflavio/objects/31/a95026c46ca2c322f0f6770300750573cc58d9 b/gitflavio/objects/31/a95026c46ca2c322f0f6770300750573cc58d9 deleted file mode 100644 index a5103ed..0000000 Binary files a/gitflavio/objects/31/a95026c46ca2c322f0f6770300750573cc58d9 and /dev/null differ diff --git a/gitflavio/objects/35/62526c1df22fc0f8d6b6e9463a3adff126413b b/gitflavio/objects/35/62526c1df22fc0f8d6b6e9463a3adff126413b deleted file mode 100644 index 4cc94a1..0000000 Binary files a/gitflavio/objects/35/62526c1df22fc0f8d6b6e9463a3adff126413b and /dev/null differ diff --git a/gitflavio/objects/3a/38bc98a9b989f99c685dacc9a620429c8af5a7 b/gitflavio/objects/3a/38bc98a9b989f99c685dacc9a620429c8af5a7 deleted file mode 100644 index 548ab89..0000000 Binary files a/gitflavio/objects/3a/38bc98a9b989f99c685dacc9a620429c8af5a7 and /dev/null differ diff --git a/gitflavio/objects/3a/3c4d169ec5ca603e940c6ee57305c4200867df b/gitflavio/objects/3a/3c4d169ec5ca603e940c6ee57305c4200867df deleted file mode 100644 index 5c98ff5..0000000 Binary files a/gitflavio/objects/3a/3c4d169ec5ca603e940c6ee57305c4200867df and /dev/null differ diff --git a/gitflavio/objects/3a/ec748a00e2437143afbcce9789e9e1c440e86d b/gitflavio/objects/3a/ec748a00e2437143afbcce9789e9e1c440e86d deleted file mode 100644 index 0feb74d..0000000 Binary files a/gitflavio/objects/3a/ec748a00e2437143afbcce9789e9e1c440e86d and /dev/null differ diff --git a/gitflavio/objects/3b/25f0d2e7ba99cc57fd06590ccad42117d56e1a b/gitflavio/objects/3b/25f0d2e7ba99cc57fd06590ccad42117d56e1a deleted file mode 100644 index 8a6736a..0000000 Binary files a/gitflavio/objects/3b/25f0d2e7ba99cc57fd06590ccad42117d56e1a and /dev/null differ diff --git a/gitflavio/objects/3d/47b597ecf2e93c4020cdeb910a06b99f02ee39 b/gitflavio/objects/3d/47b597ecf2e93c4020cdeb910a06b99f02ee39 deleted file mode 100644 index 70f8311..0000000 --- a/gitflavio/objects/3d/47b597ecf2e93c4020cdeb910a06b99f02ee39 +++ /dev/null @@ -1 +0,0 @@ -x+)JMU01f040031Q(N-*K-Š/I-.Ñ+È(`¨4zĸ(…uš¾¾Âã«1áÊ9¢ú¥¿/ \ No newline at end of file diff --git a/gitflavio/objects/3d/5eba338b0383acac7cbc8bf39ef882ebb52945 b/gitflavio/objects/3d/5eba338b0383acac7cbc8bf39ef882ebb52945 deleted file mode 100644 index c2cd0a6..0000000 Binary files a/gitflavio/objects/3d/5eba338b0383acac7cbc8bf39ef882ebb52945 and /dev/null differ diff --git a/gitflavio/objects/41/83ad2c64664c3b69fe68ed12374393ad025e2f b/gitflavio/objects/41/83ad2c64664c3b69fe68ed12374393ad025e2f deleted file mode 100644 index 206babc..0000000 --- a/gitflavio/objects/41/83ad2c64664c3b69fe68ed12374393ad025e2f +++ /dev/null @@ -1,5 +0,0 @@ -x¥TÛnÚ@í³¿bYZ…�HUA."$¡´4E¤V Z-ö€·1¶»»ÎEÿÞÙµ¹´�ú�úì™�™3gÎì4ɦpøîýÑ›ã³<νÆî®»ÐþØþ -˜Fy&S³LA{ЃÚXïX£mD A·O®™Êè`.æH?Æ Jé`Ãóþ(¤Bž¥!œ_ô†œÃ>°c ïù#N5ªT<ÌÒ™œïVkyÞœ€‰üÎU—Û -dŠQD¨‚�•ÂÔÔGÏ96Aäy"Cad–6¾ë,mA ¥ÑœŒGWõ£›¬Ñ€Ž-I6—©wƒZÓñfÓaè[µ¤‚ߎ*9��öä ‚·ë€X<àÐ:–'ÅñBMEx_äl†—í‹Z ~z@†qÇ4Ì" n™.Â�*389…™H4î[��Hs6v�AŽj!:6!8.Ó“4-oéy~Å”ŒàL ‚ÀçÝËÑ-“›ÀÙø|ðåfëû f›²MlEŸÀÁÿàì¥"!%è]ü�•ïg"‚’%¡I4ž_½P·ìÆ žˆcãŠÄv.;‰¤Ù²IË#Õ¡cB¾ -Ê÷x&¤\ƒþ¸Û»æãáy»ói<°2s"Ó*l0z+£¬Éé«äÕ’bã9>Imtà’­çg™ß/8w¹ÜšUOñîºI.Nw«nîÊ�¬œŒªÔOçh®T¶¸8ߚʺòk”SV‚4³ËZ¤$†?ÅcÔs¥L"ÃRü/à«ÖóXᬲú -u‘ØU²ú©½h1S í&ºž-…ë–‹<†¶ÀIÚz¬díÿ桵؈tos�´c¸È%§+ÇåþT6KEê‡ChÂÁK�Û[¶Ž\'/E¸›�ð&‡›}«/ê|hʦfµ2Ârüò®W5È¿ºš¬ˆG±ÊÅ”äêãJ¾¯˜´�N=ŸËk#¨Y KïËÆ¯ \ No newline at end of file diff --git a/gitflavio/objects/42/dfeff5d2b6452efa18cff9bc55ef86c254e997 b/gitflavio/objects/42/dfeff5d2b6452efa18cff9bc55ef86c254e997 deleted file mode 100644 index 6cb370f..0000000 Binary files a/gitflavio/objects/42/dfeff5d2b6452efa18cff9bc55ef86c254e997 and /dev/null differ diff --git a/gitflavio/objects/43/018fccb86a1aa4b66a54a0489bc8fe5e664916 b/gitflavio/objects/43/018fccb86a1aa4b66a54a0489bc8fe5e664916 deleted file mode 100644 index fdbdc63..0000000 Binary files a/gitflavio/objects/43/018fccb86a1aa4b66a54a0489bc8fe5e664916 and /dev/null differ diff --git a/gitflavio/objects/45/4285ea080576f5db99ff0cd83dd6a7717241a9 b/gitflavio/objects/45/4285ea080576f5db99ff0cd83dd6a7717241a9 deleted file mode 100644 index c0ff72b..0000000 --- a/gitflavio/objects/45/4285ea080576f5db99ff0cd83dd6a7717241a9 +++ /dev/null @@ -1,6 +0,0 @@ -xµT]kÛ0ݳÅì„&!#ݺ-k amÒz0(Å–m1E2úèFÿ{%ù+dcÃóS¤èÞ{î¹çÜ;˜½yûîÕû�eQÁt4 -`ã¾>—,– œü0%”Ìä”C&$,¯7«¾ ùZœr¥1cPJ‘¥Új0›Mú®8 £,YI7¾·‡Xî|¯)2ÊÈyÐ ¢×)É('iºÆÑv½¾‡Cø€ýRJ¢ðNHy˜Àwa Áœ 8ñøuAm6•}'I¢ÙaσçvVqײÇàºt�~’DÉa'³çi�žh*x=dj¬È4PMZ4œWaÀÁžæûÐÀÉO¸iÎÑæ:^®nQ¼]|þò5Þ oWÛ»ÕúÖô­u‘ã‹”ª’áÃ� -ÎI„Pž*£â‹…g6-[uÊšØù¼}¼¥y¡UÔ<¨TÖuׂG©%ÒxÇHÔ³Er;?tf©p¬+G¶›Òéÿÿ˜VùH$VŠèÿ“ºï¬ª>”½3‘žÑÜÃýM+ä‰$F“NgÍpkMki¬µ:\ÚÉnŒ1èB -“�X[c”Xâ}w�Ž.ýá ñVª"”–”çN ƒª„ûyïôïÝËcß= -šþÝw”PÛ󬳺 µ¥ÏZÙ2·Ë3\.jkøMc�ã ïê‰*ë‹ -k»mæŠÅJ×–DwÕq`�jÙôm5±–êÖí¸ \ No newline at end of file diff --git a/gitflavio/objects/46/15c1d7cc58efbcfff10d8325a03934f540c569 b/gitflavio/objects/46/15c1d7cc58efbcfff10d8325a03934f540c569 deleted file mode 100644 index 7c73d76..0000000 Binary files a/gitflavio/objects/46/15c1d7cc58efbcfff10d8325a03934f540c569 and /dev/null differ diff --git a/gitflavio/objects/46/cd427d457cecc5889a92440131ce63d7a92532 b/gitflavio/objects/46/cd427d457cecc5889a92440131ce63d7a92532 deleted file mode 100644 index 7ea3ffb..0000000 Binary files a/gitflavio/objects/46/cd427d457cecc5889a92440131ce63d7a92532 and /dev/null differ diff --git a/gitflavio/objects/47/f6b90efbf694365d7831eb615591c109ab77b5 b/gitflavio/objects/47/f6b90efbf694365d7831eb615591c109ab77b5 deleted file mode 100644 index 067d235..0000000 Binary files a/gitflavio/objects/47/f6b90efbf694365d7831eb615591c109ab77b5 and /dev/null differ diff --git a/gitflavio/objects/4b/3ededa083d208e7ce6e42b8632d295735b2982 b/gitflavio/objects/4b/3ededa083d208e7ce6e42b8632d295735b2982 deleted file mode 100644 index 2249814..0000000 Binary files a/gitflavio/objects/4b/3ededa083d208e7ce6e42b8632d295735b2982 and /dev/null differ diff --git a/gitflavio/objects/4f/21aa1aca615a1fea2786d0c759a4626aba551d b/gitflavio/objects/4f/21aa1aca615a1fea2786d0c759a4626aba551d deleted file mode 100644 index 68b6a1b..0000000 Binary files a/gitflavio/objects/4f/21aa1aca615a1fea2786d0c759a4626aba551d and /dev/null differ diff --git a/gitflavio/objects/50/5476e9934cac4c29eb6a086daf07671e01517f b/gitflavio/objects/50/5476e9934cac4c29eb6a086daf07671e01517f deleted file mode 100644 index 4d8b9ee..0000000 Binary files a/gitflavio/objects/50/5476e9934cac4c29eb6a086daf07671e01517f and /dev/null differ diff --git a/gitflavio/objects/52/024d4228f1a54de35513bd1a14dfaeff1ddeb9 b/gitflavio/objects/52/024d4228f1a54de35513bd1a14dfaeff1ddeb9 deleted file mode 100644 index 1a8e8bd..0000000 Binary files a/gitflavio/objects/52/024d4228f1a54de35513bd1a14dfaeff1ddeb9 and /dev/null differ diff --git a/gitflavio/objects/52/4523b4454b2c3bc0e88a948fd4789af7bbdae8 b/gitflavio/objects/52/4523b4454b2c3bc0e88a948fd4789af7bbdae8 deleted file mode 100644 index 86c43aa..0000000 Binary files a/gitflavio/objects/52/4523b4454b2c3bc0e88a948fd4789af7bbdae8 and /dev/null differ diff --git a/gitflavio/objects/56/eb4d8b0f5bf018d99412161cf1346e29540fe8 b/gitflavio/objects/56/eb4d8b0f5bf018d99412161cf1346e29540fe8 deleted file mode 100644 index ce4aafe..0000000 Binary files a/gitflavio/objects/56/eb4d8b0f5bf018d99412161cf1346e29540fe8 and /dev/null differ diff --git a/gitflavio/objects/57/41929666cdf91205979ab26c6b6ccdf8a6979a b/gitflavio/objects/57/41929666cdf91205979ab26c6b6ccdf8a6979a deleted file mode 100644 index f773f10..0000000 Binary files a/gitflavio/objects/57/41929666cdf91205979ab26c6b6ccdf8a6979a and /dev/null differ diff --git a/gitflavio/objects/61/b7171b1db577c2de9d43dadd5cc1fecce774dc b/gitflavio/objects/61/b7171b1db577c2de9d43dadd5cc1fecce774dc deleted file mode 100644 index be422ce..0000000 Binary files a/gitflavio/objects/61/b7171b1db577c2de9d43dadd5cc1fecce774dc and /dev/null differ diff --git a/gitflavio/objects/61/ccf6d74902ab1b4ed510d8dad7df2fb80ff875 b/gitflavio/objects/61/ccf6d74902ab1b4ed510d8dad7df2fb80ff875 deleted file mode 100644 index b4de5d7..0000000 Binary files a/gitflavio/objects/61/ccf6d74902ab1b4ed510d8dad7df2fb80ff875 and /dev/null differ diff --git a/gitflavio/objects/61/dd7aa53d6ebb43ca028ef9d2706efa7bd9ee68 b/gitflavio/objects/61/dd7aa53d6ebb43ca028ef9d2706efa7bd9ee68 deleted file mode 100644 index 242c164..0000000 Binary files a/gitflavio/objects/61/dd7aa53d6ebb43ca028ef9d2706efa7bd9ee68 and /dev/null differ diff --git a/gitflavio/objects/63/ea5c4d83858585a4d32a54f12e00a4c19891cf b/gitflavio/objects/63/ea5c4d83858585a4d32a54f12e00a4c19891cf deleted file mode 100644 index 5e6031c..0000000 Binary files a/gitflavio/objects/63/ea5c4d83858585a4d32a54f12e00a4c19891cf and /dev/null differ diff --git a/gitflavio/objects/64/93631fb88f9a570c95cfab46b89a144a9e9503 b/gitflavio/objects/64/93631fb88f9a570c95cfab46b89a144a9e9503 deleted file mode 100644 index 76b4ba9..0000000 --- a/gitflavio/objects/64/93631fb88f9a570c95cfab46b89a144a9e9503 +++ /dev/null @@ -1,3 +0,0 @@ -x•ŽK -Â0@]çÙ ’Éo2 Þe’L©Ð6¥ï/ -ÀÍãm¼6Öõ©Ö^ô±T#W½+9KæZ+Ö. ) „ÉyHÍ·lj–Þ3‡D‘Hb'æV¨ Kbœp¢€Á‘á—Îã°*§Úû‡·e4^æñ³‡DŒ)…�ìÕyçLûΩü™™SùP;vÙÚèbÞ{ïE \ No newline at end of file diff --git a/gitflavio/objects/65/790e7d770de478c167d9435a4b7858346f7072 b/gitflavio/objects/65/790e7d770de478c167d9435a4b7858346f7072 deleted file mode 100644 index ffc3c86..0000000 Binary files a/gitflavio/objects/65/790e7d770de478c167d9435a4b7858346f7072 and /dev/null differ diff --git a/gitflavio/objects/67/9b0dafccecfb1a9fa9a341853f524b4b52abbf b/gitflavio/objects/67/9b0dafccecfb1a9fa9a341853f524b4b52abbf deleted file mode 100644 index 89b907d..0000000 Binary files a/gitflavio/objects/67/9b0dafccecfb1a9fa9a341853f524b4b52abbf and /dev/null differ diff --git a/gitflavio/objects/68/22b2bcae642863ca6e0115924af954e14ccff8 b/gitflavio/objects/68/22b2bcae642863ca6e0115924af954e14ccff8 deleted file mode 100644 index 6995682..0000000 Binary files a/gitflavio/objects/68/22b2bcae642863ca6e0115924af954e14ccff8 and /dev/null differ diff --git a/gitflavio/objects/70/dff38c872847e1c23ef1c77594086839a2f985 b/gitflavio/objects/70/dff38c872847e1c23ef1c77594086839a2f985 deleted file mode 100644 index 4df6e40..0000000 Binary files a/gitflavio/objects/70/dff38c872847e1c23ef1c77594086839a2f985 and /dev/null differ diff --git a/gitflavio/objects/79/2e374a39495bd4ce54bdb1efab74ef749b90b8 b/gitflavio/objects/79/2e374a39495bd4ce54bdb1efab74ef749b90b8 deleted file mode 100644 index 6006558..0000000 Binary files a/gitflavio/objects/79/2e374a39495bd4ce54bdb1efab74ef749b90b8 and /dev/null differ diff --git a/gitflavio/objects/79/32e201a26405962f2f20e3d55c57236c152f91 b/gitflavio/objects/79/32e201a26405962f2f20e3d55c57236c152f91 deleted file mode 100644 index b7306d1..0000000 Binary files a/gitflavio/objects/79/32e201a26405962f2f20e3d55c57236c152f91 and /dev/null differ diff --git a/gitflavio/objects/7c/48ca70eca8ed15e3a8ea9f9d54c1a465501a40 b/gitflavio/objects/7c/48ca70eca8ed15e3a8ea9f9d54c1a465501a40 deleted file mode 100644 index cb3d973..0000000 --- a/gitflavio/objects/7c/48ca70eca8ed15e3a8ea9f9d54c1a465501a40 +++ /dev/null @@ -1,2 +0,0 @@ -xMQKkÛ@îY¿bÀ»�¤&PBJÁ�Wuœ[@;ZM”IW»ËîHÔþõ�•éióÍ|�i]háû·Ë/ ¸ã¿ðÀYB:TÕï‘ô¯ì$¡µŒÀÐŽ=ØÄ–!qN"% ‰AW¾# %ÇçUµXÀŽú # -èþgýëuU�Á³°ãã±´d¢&'{afœÂ­Ãœ–Ê-]ƒ¹w‘k7öì_žS‹öÏ_ÌJ‡mƒ‡ñs C°˜„œ^ û2uÙ‘rX,ø:Ñ+ç@°U”ªÖB‹¹�ôJÒÄ™¥?Xš¯F»6oŒƒ¦BÉ+T��}q`•ß4Üõâ�›_Û§ýîöq»�Âù MGê,Ñ2Kb+�"å›õê‡özϧÀë‡úÿðô Wç—%¸MðÚ;Z]Ć ¬ì%]µH¾#o:ë�l)hÃŽ° ÞN‘Rž±¡ïItu< £Z×](r¯bº¬XÊ‚^ò§ô÷|3¡cM‹–«¢x";¯ÜÌ5õº¹Räœ�GAÕ?øcÔš \ No newline at end of file diff --git a/gitflavio/objects/7d/28b1fb6885c2730f3eb871bc63936c1dc5ebb2 b/gitflavio/objects/7d/28b1fb6885c2730f3eb871bc63936c1dc5ebb2 deleted file mode 100644 index e3f8dd5..0000000 Binary files a/gitflavio/objects/7d/28b1fb6885c2730f3eb871bc63936c1dc5ebb2 and /dev/null differ diff --git a/gitflavio/objects/7f/c40925047551dbc6f31069af430848dc862bb2 b/gitflavio/objects/7f/c40925047551dbc6f31069af430848dc862bb2 deleted file mode 100644 index 25a4031..0000000 Binary files a/gitflavio/objects/7f/c40925047551dbc6f31069af430848dc862bb2 and /dev/null differ diff --git a/gitflavio/objects/88/1b6ebdd497616c0eaf0688fdb79edc758a396b b/gitflavio/objects/88/1b6ebdd497616c0eaf0688fdb79edc758a396b deleted file mode 100644 index 75560ee..0000000 Binary files a/gitflavio/objects/88/1b6ebdd497616c0eaf0688fdb79edc758a396b and /dev/null differ diff --git a/gitflavio/objects/90/a894f2dbef8d9efdeb61db05f659cd7078e4da b/gitflavio/objects/90/a894f2dbef8d9efdeb61db05f659cd7078e4da deleted file mode 100644 index d52dce3..0000000 Binary files a/gitflavio/objects/90/a894f2dbef8d9efdeb61db05f659cd7078e4da and /dev/null differ diff --git a/gitflavio/objects/98/dc9fafeb52a5c6d0130be29d5716133e086821 b/gitflavio/objects/98/dc9fafeb52a5c6d0130be29d5716133e086821 deleted file mode 100644 index a4bce53..0000000 Binary files a/gitflavio/objects/98/dc9fafeb52a5c6d0130be29d5716133e086821 and /dev/null differ diff --git a/gitflavio/objects/9a/73f51de5135da21bbc52ca183bf1e9a48cd0f2 b/gitflavio/objects/9a/73f51de5135da21bbc52ca183bf1e9a48cd0f2 deleted file mode 100644 index 43328fc..0000000 --- a/gitflavio/objects/9a/73f51de5135da21bbc52ca183bf1e9a48cd0f2 +++ /dev/null @@ -1,2 +0,0 @@ -x•ŽA -Â0E]ç³d&m2)ˆwIf&Th›RãýEŸù¼Í{|iëzïà}<õà "‰Ô¨š¨ëyœlPå$E±œŽ ¾x&“‚?¾\KÁJÛ©Q'“Vt}}2>–bE– �ÛÍJðm|cø’a|'-ÿ«�ÏÕ{Ck6IuóéáVlrÁ‘ëx"Œ¦|8šh*xñéc“¯u~'¬€*TúúQ¶²´ª¿×V¢R–Ùúd7E)°²­+�xÀ?ùRÁq_Þ_ìùû¶iÂ7ùµ -,+aU™“/5k Á…aŽÐ�R± E’SØqq€ª‰Lq«‡z¡g»¶»Æ®ýØž¾Ùþb5Å[�Ç€�•çcè÷Abhmô¶±ÆM™�šâíYƒvIJ*)Wÿwët©åOª  4néþ¿¸KÉz>Õ;Ak(d”$T ½­. E†ċпÒKénºÐ°9PÓw§–yªtħ„»;$•´1z?^2+3Q/VÉÁ -z jmïú7�•ΤíÆmÇt±ÑŽóú¼‘.$úmÂÊ` \ No newline at end of file diff --git a/gitflavio/objects/de/e63d0b4ae892fcc836df19d655ef78fba0df91 b/gitflavio/objects/de/e63d0b4ae892fcc836df19d655ef78fba0df91 deleted file mode 100644 index 0905a83..0000000 Binary files a/gitflavio/objects/de/e63d0b4ae892fcc836df19d655ef78fba0df91 and /dev/null differ diff --git a/gitflavio/objects/e0/83fa81a6c387fc8ac548e8bc399b8335d781ef b/gitflavio/objects/e0/83fa81a6c387fc8ac548e8bc399b8335d781ef deleted file mode 100644 index 0109fb6..0000000 Binary files a/gitflavio/objects/e0/83fa81a6c387fc8ac548e8bc399b8335d781ef and /dev/null differ diff --git a/gitflavio/objects/e3/a5f4a180ecfd4e6b68f783989b3b9789b26fb6 b/gitflavio/objects/e3/a5f4a180ecfd4e6b68f783989b3b9789b26fb6 deleted file mode 100644 index 42002e2..0000000 Binary files a/gitflavio/objects/e3/a5f4a180ecfd4e6b68f783989b3b9789b26fb6 and /dev/null differ diff --git a/gitflavio/objects/e4/e4b5179c616789e7dbdd52cb86a5becd0a9c14 b/gitflavio/objects/e4/e4b5179c616789e7dbdd52cb86a5becd0a9c14 deleted file mode 100644 index 1335ddf..0000000 Binary files a/gitflavio/objects/e4/e4b5179c616789e7dbdd52cb86a5becd0a9c14 and /dev/null differ diff --git a/gitflavio/objects/e5/0adaeacd7429ac492c7f1a7213055c90458eb7 b/gitflavio/objects/e5/0adaeacd7429ac492c7f1a7213055c90458eb7 deleted file mode 100644 index 935a808..0000000 --- a/gitflavio/objects/e5/0adaeacd7429ac492c7f1a7213055c90458eb7 +++ /dev/null @@ -1,4 +0,0 @@ -xmPANÃ0äœWìÉ‚¢âÐ’‚TT‰[Ž¥²\gK,%v´v ù=n’–¨ªOë™ÑìÎì -»ƒ§Çç«—×*¯¢(CUHBî­ t|Óí;ìdoëÏtúÀ Y€§oÿ™!¶Ǿ¤“D²®5^6¿a£s¹%϶#ãÁPÙ²’¤�5—\QPÈòŒßŽòôEò¡ÙPÀ]¼‚’ \ No newline at end of file diff --git a/gitflavio/objects/e6/bb5deaba73fdea1c97b9c09bc810a9c92fa72d b/gitflavio/objects/e6/bb5deaba73fdea1c97b9c09bc810a9c92fa72d deleted file mode 100644 index 1c971a0..0000000 Binary files a/gitflavio/objects/e6/bb5deaba73fdea1c97b9c09bc810a9c92fa72d and /dev/null differ diff --git a/gitflavio/objects/e7/b85297d4141c5e4190b68433d8e1cd5664c6a3 b/gitflavio/objects/e7/b85297d4141c5e4190b68433d8e1cd5664c6a3 deleted file mode 100644 index 110a081..0000000 Binary files a/gitflavio/objects/e7/b85297d4141c5e4190b68433d8e1cd5664c6a3 and /dev/null differ diff --git a/gitflavio/objects/f0/0e847952b9239ced8dccdc0af19b68ebfb7d3d b/gitflavio/objects/f0/0e847952b9239ced8dccdc0af19b68ebfb7d3d deleted file mode 100644 index 88bb750..0000000 Binary files a/gitflavio/objects/f0/0e847952b9239ced8dccdc0af19b68ebfb7d3d and /dev/null differ diff --git a/gitflavio/objects/f1/f8001c76b95c16e22b018bb0e02fca8dece54f b/gitflavio/objects/f1/f8001c76b95c16e22b018bb0e02fca8dece54f deleted file mode 100644 index fbb5d89..0000000 Binary files a/gitflavio/objects/f1/f8001c76b95c16e22b018bb0e02fca8dece54f and /dev/null differ diff --git a/gitflavio/objects/f6/727eda1e7bfd0a868ff93615a04b44b928c76d b/gitflavio/objects/f6/727eda1e7bfd0a868ff93615a04b44b928c76d deleted file mode 100644 index 0f31732..0000000 Binary files a/gitflavio/objects/f6/727eda1e7bfd0a868ff93615a04b44b928c76d and /dev/null differ diff --git a/gitflavio/objects/f8/5893a04200dc8c30e75955bb12d4905110d2ff b/gitflavio/objects/f8/5893a04200dc8c30e75955bb12d4905110d2ff deleted file mode 100644 index 2fc7b2d..0000000 Binary files a/gitflavio/objects/f8/5893a04200dc8c30e75955bb12d4905110d2ff and /dev/null differ diff --git a/gitflavio/objects/fc/e0dd97ed72cbc3b85c8310bfee8247bcf6d1b5 b/gitflavio/objects/fc/e0dd97ed72cbc3b85c8310bfee8247bcf6d1b5 deleted file mode 100644 index 375850a..0000000 Binary files a/gitflavio/objects/fc/e0dd97ed72cbc3b85c8310bfee8247bcf6d1b5 and /dev/null differ diff --git a/gitflavio/objects/ff/d908df1af4d233249c5bf9a88dff36419a192c b/gitflavio/objects/ff/d908df1af4d233249c5bf9a88dff36419a192c deleted file mode 100644 index 32c573d..0000000 Binary files a/gitflavio/objects/ff/d908df1af4d233249c5bf9a88dff36419a192c and /dev/null differ diff --git a/gitflavio/objects/pack/pack-16f64c98dc9785f95395d0429bffba92412a8d22.idx b/gitflavio/objects/pack/pack-16f64c98dc9785f95395d0429bffba92412a8d22.idx deleted file mode 100644 index 7237dbc..0000000 Binary files a/gitflavio/objects/pack/pack-16f64c98dc9785f95395d0429bffba92412a8d22.idx and /dev/null differ diff --git a/gitflavio/objects/pack/pack-16f64c98dc9785f95395d0429bffba92412a8d22.pack b/gitflavio/objects/pack/pack-16f64c98dc9785f95395d0429bffba92412a8d22.pack deleted file mode 100644 index f06fcde..0000000 Binary files a/gitflavio/objects/pack/pack-16f64c98dc9785f95395d0429bffba92412a8d22.pack and /dev/null differ diff --git a/gitflavio/objects/pack/pack-16f64c98dc9785f95395d0429bffba92412a8d22.rev b/gitflavio/objects/pack/pack-16f64c98dc9785f95395d0429bffba92412a8d22.rev deleted file mode 100644 index 7f9f82a..0000000 Binary files a/gitflavio/objects/pack/pack-16f64c98dc9785f95395d0429bffba92412a8d22.rev and /dev/null differ diff --git a/gitflavio/opencode b/gitflavio/opencode deleted file mode 100644 index 0238af7..0000000 --- a/gitflavio/opencode +++ /dev/null @@ -1 +0,0 @@ -c78dce76a359499e4d9aac8987ae5a7f7f937309 \ No newline at end of file diff --git a/gitflavio/packed-refs b/gitflavio/packed-refs deleted file mode 100644 index 35be949..0000000 --- a/gitflavio/packed-refs +++ /dev/null @@ -1,3 +0,0 @@ -# pack-refs with: peeled fully-peeled sorted -9bed80d88c7128c3587329fee6dc3cf2f0efc9fd refs/remotes/origin/dev -c78dce76a359499e4d9aac8987ae5a7f7f937309 refs/remotes/origin/main diff --git a/gitflavio/refs/heads/dev b/gitflavio/refs/heads/dev deleted file mode 100644 index f1e5bc4..0000000 --- a/gitflavio/refs/heads/dev +++ /dev/null @@ -1 +0,0 @@ -27aac99d1555a75d373756d8727afeefd6b69376 diff --git a/gitflavio/refs/heads/main b/gitflavio/refs/heads/main deleted file mode 100644 index a46537e..0000000 --- a/gitflavio/refs/heads/main +++ /dev/null @@ -1 +0,0 @@ -4b3ededa083d208e7ce6e42b8632d295735b2982 diff --git a/gitflavio/refs/remotes/origin/HEAD b/gitflavio/refs/remotes/origin/HEAD deleted file mode 100644 index 4b0a875..0000000 --- a/gitflavio/refs/remotes/origin/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/remotes/origin/main diff --git a/gitflavio/refs/remotes/origin/dev b/gitflavio/refs/remotes/origin/dev deleted file mode 100644 index f1e5bc4..0000000 --- a/gitflavio/refs/remotes/origin/dev +++ /dev/null @@ -1 +0,0 @@ -27aac99d1555a75d373756d8727afeefd6b69376 diff --git a/gitflavio/refs/remotes/origin/main b/gitflavio/refs/remotes/origin/main deleted file mode 100644 index a46537e..0000000 --- a/gitflavio/refs/remotes/origin/main +++ /dev/null @@ -1 +0,0 @@ -4b3ededa083d208e7ce6e42b8632d295735b2982