[descripción]

¡Los árboles también pueden señalar a otros árboles! De esta manera, pueden describir estructuras de directorios anidados.

Cuando agrega un archivo dentro de un directorio al índice y luego llama a `git write-tree`, creará un árbol anidado para el directorio y le adjuntará el blob.

Para resolver este nivel, construye una pequeña figura de palo, como se muestra a la izquierda: un árbol que apunta a dos manchas, así como un árbol que apunta a dos manchas.

[configuración]

[objetivo de configuración]

echo "Soy el brazo izquierdo" > arm1
echo "Soy el brazo derecho" > arm2
cadera mkdir
echo "Soy la pierna izquierda" > cadera/pierna1
echo "Soy la pierna derecha" > cadera/pierna2
git agregar.
árbol de escritura de git

[ganar]

ÁRBOLES=$(git cat-file --batch-check='%(nombre de objeto) %(tipo de objeto)' --batch-all-objects | árbol grep | cut -f1 -d" ")

para OUTER_TREE en $TREES; hacer
    NUMBER_OF_BLOB_CHILDREN=$(git cat-file -p $OUTER_TREE | cut -f2 -d" " | grep blob | wc -l)
    NUMBER_OF_TREE_CHILDREN=$(git cat-file -p $OUTER_TREE | cut -f2 -d" " | grep árbol | wc -l)

    si [ $NUMBER_OF_BLOB_CHILDREN -eq 2 -a $NUMBER_OF_TREE_CHILDREN -eq 1 ]; entonces
        TREE_CHILD=$(git cat-file -p $OUTER_TREE | cortar -f1 | grep árbol | cortar -d" " -f3)
        NUMBER_OF_BLOB_CHILDREN_OF_TREE_CHILD=$(git cat-file -p $TREE_CHILD | cut -f2 -d" " | grep blob | wc -l)
        si [ $NUMBER_OF_BLOB_CHILDREN_OF_TREE_CHILD -eq 2 ]; entonces
            regresar 0
        fi
    fi
hecho

regresar 1