Wenn das Verzeichnis noch nicht vorhanden ist, dann soll git clone ausgeführt werden.
Merkwürdigerweise funktioniert das bei invent.kde.org Git nicht, oder nicht immer, das da oben der Überschrift ist solch ein Fall bei mir.
Der ganze Sermon, den ich euch nicht vorenthalten möchte, ein Bash alias, der den Falkon Browser baut (das DEB-Fertigpaket ist bekannt, aber darum geht es nicht):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | alias falkonneu='INSTALLATIONSDISK=$HOME/Installationsdisk && \ KDEDIR=$INSTALLATIONSDISK/KDE && \ FALKON_BASE=$KDEDIR/Falkon && \ FALKON_SRC=$FALKON_BASE/falkon && \ [ ! -d $INSTALLATIONSDISK ] && mkdir -pv $INSTALLATIONSDISK && \ [ ! -d $KDEDIR ] && mkdir -pv $KDEDIR && \ [ ! -d $FALKON_BASE ] && mkdir -pv $FALKON_BASE && \ [ ! -d $FALKON_SRC/.git ] && git clone https://invent.kde.org/network/falkon.git $FALKON_SRC && \ printf "\n \033[45m\033[1;36m==> Falkon Sourcecode cloned. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" || \ printf "\n \033[45m\033[1;36m==> Falkon Sourcecode found. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" printf "\n \033[45m\033[1;36m==> Update Falkon Sourcecode. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" && \ git -C $FALKON_SRC checkout 4f953aa0aa47211fa3e7f26ef4427237c0a36da5 && echo "git pull done." || echo "No git pull." && \ printf "\n \033[45m\033[1;36m==> Config Falkon for build. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" && \ [ -d $FALKON_SRC/build ] && yes | sudo rm -rf $FALKON_SRC/build && echo "Builddir cleaned." || echo "Bulddir was clean." && \ [ ! -d $FALKON_SRC/build ] && mkdir -pv $FALKON_SRC/build && \ sudo mount -v tmpfs $FALKON_SRC/build -t tmpfs -o mode=777 && \ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=TRUE -S $FALKON_SRC -B $FALKON_SRC/build -G Ninja && \ printf "\n \033[45m\033[1;36m==> Compile Falkon. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" && \ time ninja -j $(nproc --all) -C $FALKON_SRC/build && \ printf "\n \033[45m\033[1;36m==> Remove old Falkon files. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" && \ [ -f $FALKON_BASE/install_manifest.txt ] && xargs sudo rm -fv < $FALKON_BASE/install_manifest.txt && \ echo "Old files cleaned." || echo "No install_manifest.txt found." && \ printf "\n \033[45m\033[1;36m==> Install Falkon. \033[0m\033[42m\033[1;36m ==> ... \033[0m \n \n" && \ sudo porg -lp falkon "ninja -j $(nproc --all) -C $FALKON_SRC/build install" && \ cp -v $FALKON_SRC/build/install_manifest.txt $FALKON_BASE/install_manifest.txt && \ printf "\n \033[45m\033[1;36m==> Falkon successful install. \033[0m\033[42m\033[1;36m ==> Done.\033[0m \n \n" && \ printf "\n \033[45m\033[1;36m==> Falkon deinstall: \033[0m\033[43m\033[1;36m sudo porg -rv falkon <== \033[0m \n \n" || \ printf "\n \033[41m\033[1;36m==> Falkon build or install failed.\033[0m \n \n" ; \ cd $HOME ; \ sudo umount -fv $FALKON_SRC/build ; \ [ -d $FALKON_SRC/build ] && yes | sudo rm -rf $FALKON_SRC/build && echo "Builddir cleaned." || echo "Bulddir was clean." ; \ cd $HOME' |
Das invent.kde.org Git scheint ein paar Gedenkmomente zu brauchen und kreiert ein leeres Verzeichnis, woraufhin dann via && der nächste Befehl aufgerufen wird und dann geht das schief. Mit Github klappt das Konstrukt der Abfrage, ob das Verzeichnis vorhanden ist, oder nicht, und dann im Bedarfsfall erfolgreiches git clonen sonst gut.
Merkwürdigerweise funktioniert aber das manuelle Git clonen im Terminal dann so (wenn das Verzeichnis $FALKON_SRC, also $HOME/Installationsdisk/KDE/Falkon/falkon leer ist):
1 | git clone https://invent.kde.org/network/falkon.git $HOME/Installationsdisk/KDE/Falkon/falkon |
Ist der Sourcecode erst einmal cloned, funktioniert natürlich auch der Bash alias. Aber genau das sollte der Bash alias auch können, wenn das Git zuvor noch nicht cloned war.