Verifichi un percorso con pattern .gitignore
Scopra se Git ignorerebbe un file e quale regola lo decide: logs/build.log viene ignorato a causa di *.log, la seconda regola dell’elenco, e una regola successiva come !important.log può annullarne una precedente. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Pattern
- dist/, *.log, !important.log, secrets/**
- Percorso
- logs/build.log
- Pattern corrispondente
- *.log
- Indice corrispondente
- 1
Verifichi un percorso relativo al repository rispetto a un elenco ordinato di pattern .gitignore, senza creare un repository temporaneo né eseguire Git. Il risultato indica se il percorso è ignorato e, quando una regola corrisponde, identifica l’ultimo pattern decisivo e la sua posizione con indice iniziale zero. Il controllo gestisce commenti, caratteri di escape, regole ancorate alla radice, regole per directory, caratteri jolly, classi di caratteri, doppi asterischi ricorsivi e negazioni. Inoltre rifiuta i pattern malformati, anziché interpretarli silenziosamente come innocui valori letterali.
Fornisca le regole nel loro ordine reale
Un file .gitignore non è un semplice insieme di glob indipendenti. Git valuta le regole in ordine e una regola successiva corrispondente può modificare la decisione presa da una precedente. Invii i pattern esattamente nell’ordine in cui compaiono nel file di esclusione pertinente.
I normali pattern corrispondenti contrassegnano il percorso come ignorato, mentre una regola che inizia con un punto esclamativo senza escape annulla tale decisione. Le righe vuote e quelle che iniziano con un cancelletto senza escape non vengono considerate regole, proprio come in un normale file di esclusione. La risposta include l’ultimo pattern corrispondente e il relativo indice dell’array a partire da zero, così è possibile spiegare un risultato inatteso in uno strumento di build o in un editor di configurazione.
I percorsi devono essere relativi alla radice del repository e usare barre normali. Un percorso stabile e normalizzato evita risultati differenti dovuti a un prefisso assoluto, a un segmento di directory superiore o a separatori specifici del sistema operativo.
Comprenda il comportamento della corrispondenza
Un singolo asterisco corrisponde a un numero qualsiasi di caratteri all’interno di un solo segmento del percorso, mentre un punto interrogativo corrisponde a un carattere diverso dalla barra. Una barra iniziale ancora la regola alla radice del repository. Un pattern privo di barre può corrispondere a un nome a qualsiasi profondità; se quel nome indica una directory nel percorso fornito, viene coperto anche tutto ciò che si trova al suo interno.
Una barra finale esprime una regola per directory. Poiché il controllo riceve un percorso anziché un albero del filesystem, decide in base al testo e ai suoi antenati; non verifica se il componente finale esista come file o directory. I cancelletti e i punti esclamativi iniziali con escape restano letterali, mentre gli spazi finali senza escape vengono rimossi secondo le convenzioni del formato.
Usi la convalida per trovare i difetti
Gli errori nei glob possono sfuggire facilmente quando un file di esclusione cresce attraverso molte piccole modifiche. Questo controllo segnala un input non valido per strutture errate come una classe di caratteri non chiusa o vuota, un escape incompleto o un segno di negazione privo di espressione. Una risposta corretta non modifica le regole e non dipende dalla rete, dall’ora corrente, da valori casuali, dal contenuto del repository o dal sistema operativo host.
È quindi adatta a controlli deterministici prima dei commit, moduli web, diagnostica degli IDE e test delle policy in CI.
Casi d'uso
Spiegare un input di build mancante
Confronti il percorso assente con le regole del progetto e mostri la regola finale responsabile dell’esclusione.
Convalidare un editor di regole di esclusione
Visualizzi come una regola riordinata o una nuova negazione modifica il risultato prima di salvare la configurazione.
Domande frequenti
L’ordine delle regole è importante?
Sì. Ogni regola viene valutata in ordine e l’ultima corrispondenza determina se il percorso è ignorato.
I pattern negati sono supportati?
Sì. Un punto esclamativo iniziale senza escape crea una regola negata che può rendere nuovamente visibile un percorso ignorato.
Il controllo legge il repository o la configurazione globale di Git?
No. Usa soltanto i pattern e il percorso relativo al repository forniti nella richiesta.
I pattern possono attraversare più directory?
Sì. I pattern con doppio asterisco attraversano i confini delle directory, mentre un singolo asterisco resta in un segmento.
Come capisco quale regola ha deciso il risultato?
La risposta indica l’ultima regola corrispondente e la sua posizione nell’elenco, contando da 0. Nell’esempio, logs/build.log viene ignorato da *.log in posizione 1, così un esito inatteso si spiega subito.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev2/gitignore-check-path \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"patterns":["dist/","*.log","!important.log"],"path":"logs/build.log"}'const res = await fetch("https://api.kit.forhosting.com/dev2/gitignore-check-path", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"patterns": [
"dist/",
"*.log",
"!important.log"
],
"path": "logs/build.log"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/gitignore-check-path",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"patterns": [
"dist/",
"*.log",
"!important.log"
],
"path": "logs/build.log"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/gitignore-check-path", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"patterns":["dist/","*.log","!important.log"],"path":"logs/build.log"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"patterns":["dist/","*.log","!important.log"],"path":"logs/build.log"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/gitignore-check-path", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"patterns": [
"dist/",
"*.log",
"!important.log"
],
"path": "logs/build.log"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.gitignore_check_path",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_patterns | 1000 |
max_pattern_chars | 1024 |
max_path_chars | 4096 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Comprenda il comportamento della corrispondenza
Le classi come `[0-9]` selezionano un carattere da un insieme o intervallo. Un doppio asterisco può attraversare i confini delle directory, quindi `docs/**/draft*.md` copre le bozze direttamente sotto `docs` e quelle nelle cartelle più profonde.
Usi la convalida per trovare i difetti
Limita inoltre il numero e la lunghezza dei pattern, evitando che un endpoint di convalida debba svolgere un lavoro di compilazione illimitato. Nell’automazione, conservi `matching_pattern` insieme alla decisione booleana: la spiegazione è spesso più utile del solo valore booleano. La versione nel browser esegue lo stesso risolutore puro dell’API, mentre una richiesta API applica il prezzo base pubblicato di $0.002.
Casi di integrazione
Applicare le policy del repository in CI
Verifichi che gli artefatti generati siano ignorati e che fixture e sorgenti obbligatori restino tracciabili.
Domande tecniche
Che cosa accade se un pattern è malformato?
La richiesta non riesce e restituisce un errore invalid_input che indica la posizione del pattern e il problema strutturale.
Quanto costa una richiesta API?
Il prezzo base è $0.002 per richiesta. Lo stesso risolutore deterministico è disponibile anche nel browser.