Skip to content
Snippets Groups Projects
Commit 251a9d1f authored by Jettka, Daniel's avatar Jettka, Daniel
Browse files

added German version of LAMA and Mattermost version

parent 6c4950ba
No related branches found
No related tags found
No related merge requests found
# LAMA deutsch
LAMA = Linguistic Automation Management Assistent
Der Einsatz von LAMA beinhaltet einige Schritte, welche in festgelegter Reihenfolge ausgeführt werden müssen:
## Die aktuelle Konfiguration ansehen. (4)
Vor Beginn der Arbeit an den Daten muss zunächst sichergestellt werden, dass Nutzername und Email-Adresse korrekt in LAMA hinterlegt sind.
Um das zu überprüfen, kann die folgende Option verwendet werden:
*@4) Die aktuelle Konfiguration ansehen.@*
Der Nutzername sollte das Muster *@Vorname Nachname@* haben und die Email-Adresse sollte die Email-Adresse sein *@name@mailserver.de@*.
## Die Konfiguration aendern (5)
Falls die im vorherigen Punkt erwähnte Konfiguration (Nutzername und Email) nicht korrekt ist oder zum ersten Mal eingerichtet werden muss, kann sie durch Aufruf der folgenden Option geändert werden:
*@5) Die Konfiguration aendern.@*
## Lokales Repository auf den neuesten Stand bringen. (2)
Bevor man anfängt, an den Dateien zu arbeiten, muss sichergestellt werden, dass auf der aktuellsten Version der Daten gearbeitet wird.
Die Dateien können per Auswahl der folgenden Option aktualisiert werden:
*@2) Lokales Repository auf den neuesten Stand bringen.@*.
Hierbei wird zunächst sichergestellt, dass sich keine im Änderungsmodus befindlichen Dateien im lokalen Repository befinden und dann werden die Dateien mit der letzten öffentlichen Version aktualisiert.
Wenn es noch unveröffentlichte lokale Änderungen gibt, werden keine Dateien aktualisiert. Um zu sehen, welche Änderungen genau noch vorliegen, wählt man die Option
*@1) Aktuellen Stand des lokalen Repository anschauen.@*.
## An den Dateien arbeiten
Jetzt kann mit der Arbeit an den Dateien begonnen werden und es können Änderungen vorgenommen werden.
## Alle ausgefuehrten Aenderungen speichern, eine Nachricht hinzufuegen, diese Aenderungen beim Main Repository veroeffentlichen und das lokale Repository auf den neuesten Stand bringen. (3)
Wenn ein Arbeitsschritt fertig ist, können die Änderungen gespeichert werden und den anderen Bearbeitern der Daten zugänglich gemacht werden. Das kann durch Auswahl des folgenden Punkts erfolgen:
*@3) Alle ausgefuehrten Aenderungen speichern, eine Nachricht hinzufuegen, diese Aenderungen beim Main Repository veroeffentlichen und das lokale Repository auf den neuesten Stand bringen.@*
Dieser Schritt aktualisiert ebenfalls direkt das lokale Repository durch Hinzufügung der Änderungen anderer Bearbeiter, die zur gleichen Zeit erfolgt sind.
Falls jemand anderes zur gleichen Zeit an den gleichen Dateien gearbeitet, kann es passieren, dass das Skript folgenden Inhalt anzeigt:
<img src="https://sarafordnet.files.wordpress.com/2017/02/image82.png" alt="Image" width="700" >
Wenn diese Zeilen zu sehen sind, wurde die korrekte Commit-Nachricht bereits automatisch vorausgefüllt.
Um die Nachricht zu bestätigen und mit der Ausführung des Skripts fortzufahren, drückt man auf *ESC, und dann nacheinander auf die Tasten :wq (w= Speichern, q=Schließen) and drückt anschließend ENTER*.
Wenn die Eingabe von :wq nicht klappt, nachdem man ESC gedrückt hat, drückt man stattdessen auf die Taste i und gibt dann :wq ein und drückt ENTER.
Falls zwei Personen gleichezeitig an einem Teil der gleichen Datei gearbeitet haben, kann dieses zu einem Konflikt führen, den Git nicht automatisch auflösen kann.
Wenn es hierzu kommt, wird in LAMA eine entsprechende Nachricht angezeigt und eine Datei names ZEITSTEMPEL-git-conflict.txt im bearbeiteten Ordner angelegt.
Solche Arten von Konflikten müssen manuell gelöst werden, entweder von einem Verantwortlichen für das Korpus oder vom technischen Team. In jedem Fall sollte eine/r von beiden kontaktiert werden, um das weitere Vorgehen zu besprechen.
Die Daten sind währenddessen weiterhin gesichert und eine Lösung ist in dem meisten Fällen schnell gefunden.)
## Weiter arbeiten mit den Dateien und Änderungen speichern, Commit Message hinzufügen, Änderungen im Haupt-Repository veröffentlichen und lokales Git Repository aktualisieren
Jetzt kann an den Dateien weiter gearbeitet werden, und die Änderungen können danach gespeichert und veröffentlicht werden. Bitte daran denken, den ersten Schritt erneut durchzuführen, nachdem eine Pause gemacht wurde.
Um LAMA zu starten, Doppelklick auf die LAMA-*.sh Datei, welche sich im Ordner befindet, an dem gearbeitet werden soll.
Das Menü sieht folgendermaßen aus:
<pre>
Willkommen bei Git mit LAMA
############### Konfiguration ###############
LAMA Version: 2.0-de
Git Version:
git version 2.7.4
Java Version:
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
Corpus-Services version: ../hzsk-corpus-services-1.0-jar-with-dependencies.jar
../hzsk-corpus-services-1.0-jar-with-dependencies.jar wurde gefunden.
Git repository ist erreichbar
#############################################
1) Aktuellen Stand des lokalen Repository anschauen.
2) Lokales Repository auf den neuesten Stand bringen.
3) Alle ausgefuehrten Aenderungen speichern, eine Nachricht hinzufuegen, diese Aenderungen beim Main Repository veroeffentlichen und das lokale Repository auf den neuesten Stand bringen.
4) Die aktuelle Konfiguration ansehen.
5) Die Konfiguration aendern.
6) Hilfe!
7) Beenden
Bitte waehle eine Option (1-7) oder druecke ENTER um das Menue anzuzeigen:
</pre>
#!/bin/bash
today=$(date)
timestamp=$(date +%Y%m%d%H%M%S)
remote="origin" #bitte den Namen des Remote Repository einfuegen
branch="main" #bitte den Namen des entsprechenden branches einfuegen
conflictPath="${timestamp}-conflict.txt"
SCRIPT=`realpath $0`
directory=`dirname $SCRIPT`
corpusServicesJar="../corpus-services-1.0.jar" #bitte den Pfad zur corpus-services jar Datei einfuegen
user=`git config user.name`
user="${user%\"}"
user="${user#\"}"
#Messages im Skript
conflictecho="ACHTUNG: Das lokale Repository kann nicht auf den neuesten Stand gebracht werden, weil ein Konflikt vorliegt. Der Merge Prozess wird abgebrochen und eine Nachricht wird an die Git Maintainer gesendet."
pullsuccessful="Das Updaten der Dateien war erfolgreich, vielen Dank."
jarnotfound="Die JAR Datei ist nicht verfuegbar in ${directory} von ${user}."
localchanges="ACHTUNG: There are local changes on the files. Please remove them or save them with LAMA before updating."
nolocalchanges="Es liegen keine lokalen Aenderungen vor."
#Messages fuer Mattermost oder in Konflikt Text Dateien
conflictmessage="ACHTUNG: Der Konflikt muss manuell geloest werden in ${directory} von ${user}."
#dieser Fehler kann auftreten wenn große binaere Dateien ohne git lfs comitted werden
pullerror="ACHTUNG: Der Pull konnte nicht durchgefuehrt werden in ${directory} von ${user}."
#Mattermost hook URL
mattermosturl="https://your.mattermost.server.com/mattermost/hooks/HOOKSHA"
#oder fuer mehrere repositories und entsprechende Mattermost Channels
#if [[ "$(git config --get remote.origin.url)" == reponame.git ]]; then
# mattermosturl="https://your.mattermost.server.com/mattermost/hooks/HOOKSHA"
#elif [[ "$(git config --get remote.origin.url)" == otherreponame.git ]]; then
# mattermosturl="https://your.mattermost.server.com/mattermost/hooks/HOOKSHA"
#else
# mattermosturl="https://your.mattermost.server.com/mattermost/hooks/HOOKSHA"
#fi
version="3.0-de" #Version von LAMA
echo "
.____ _____ _____ _____
| | / _ \ / \ / _ \
| | / /_\ \ / \ / \ / /_\ \
| |___/ | \/ Y \/ | \
|
|_______ \____|__ /\____|__ /\____|__ /
\/ \/ \/ \/
Willkommen bei Git mit LAMA
"
echo " "
echo "############### Konfiguration ###############"
echo "LAMA Version: ${version}"
echo "Git Version:"
git --version
echo "Java Version:"
java -version
echo "Corpus-Services version: " $corpusServicesJar
if [ -f "$corpusServicesJar" ]; then
echo "$corpusServicesJar wurde gefunden. "
else
echo "FEHLER: $corpusServicesJar wurde nicht gefunden. "
#curl -i -X POST --data-urlencode "payload={\"text\": \"${jarnotfound}\"}" ${mattermosturl}
fi
if [ "$(git ls-remote 2> /dev/null)" ]; then
echo "Git repository ist erreichbar"
else
echo "FEHLER: Git repository ist nicht erreichbar"
fi
echo "#############################################"
echo " "
#options=("Viewing your current Git configuration." "Setting up your Git configuration." "See the current state of your local Git repository." "See the changes in the files of your local Git repository." "Update your local Git repository." "Save all your changes, add a message, publish your changes to the main Git repository and update your local Git repository." "Help!" "Quit")
options=("Aktuellen Stand des lokalen Repository anschauen." "Lokales Repository auf den neuesten Stand bringen." "Alle ausgefuehrten Aenderungen speichern, eine Nachricht hinzufuegen, diese Aenderungen beim Main Repository veroeffentlichen und das lokale Repository auf den neuesten Stand bringen." "Die aktuelle Konfiguration ansehen." "Die Konfiguration aendern." "Hilfe!" "Beenden")
PS3="
Bitte waehle eine Option (1-${#options[@]}) oder druecke ENTER um das Menue anzuzeigen: "
select opt in "${options[@]}"
do
case $opt in
"Die aktuelle Konfiguration ansehen.")
echo "Name:"
git config user.name
echo "Email-Adresse:"
git config user.email
;;
"Die Konfiguration aendern.")
read -p "Vorname Nachname eingeben: " usrname
git config --global user.name "\"$usrname\""
read -p "Email-Adresse eingeben: " usrmail
git config --global user.email "\"$usrmail\""
echo "Danke dass Sie Ihren Nutzernamen zu"
git config user.name
echo "und Ihre Nutzeremail zu"
git config user.email
echo "geandert haben!"
;;
"Aktuellen Stand des lokalen Repository anschauen.")
git status
;;
"Lokales Repository auf den neuesten Stand bringen.")
CONFLICTS=$(git ls-files -u | wc -l)
if [ "$CONFLICTS" -gt 0 ]
then
echo $conflictecho
#this is important so people can work further on the files and the conflict can be solved later
git merge --abort
git status >> $conflictPath
echo $conflictmessage >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"${conflictmessage}\"}" ${mattermosturl}
read
exit 1
else
if [ -z "$(git status --porcelain)" ]
then
echo $nolocalchanges
echo "Das Updaten wird vorbereitet."
git fetch
git merge ${remote}/${branch}
CONFLICTS=$(git ls-files -u | wc -l)
if [ "$CONFLICTS" -gt 0 ]
then
echo $conflictecho
#this is important so people can work further on the files and the conflict can be solved later
git merge --abort
git status >> $conflictPath
echo $conflictmessage >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"${conflictmessage}\"}" ${mattermosturl}
read
exit 1
else
echo "Updating will be carried out."
fi
if [ -z "$(git status --porcelain)" ]
then
echo $pullsuccessful
else
git status
echo $pullerror
git status >> $conflictPath
echo $pullerror >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"${$pullerror}\"}" ${mattermosturl}
read
fi
else
git status
echo $localchanges
read
fi
fi
;;
"Alle ausgefuehrten Aenderungen speichern, eine Nachricht hinzufuegen, diese Aenderungen beim Main Repository veroeffentlichen und das lokale Repository auf den neuesten Stand bringen.")
CONFLICTS=$(git ls-files -u | wc -l)
if [ "$CONFLICTS" -gt 0 ]
then
echo $conflictecho
#this is important so people can work further on the files and the conflict can be solved later
git merge --abort
git status >> $conflictPath
echo $conflictmessage >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"${conflictmessage}\"}" ${mattermosturl}
read
exit 1
else
echo "Super, es gibt bisher keinen Merge Konflikt."
#show all the files that are changed and ask if they should be added
echo "Die geanderten Dateien sind:"
git status
read -p "Sollen folgende geaenderte Dateien im Main Repository veroeffentlicht werden? (j/n)" yn
case $yn in
[YyJj]* )
while true; do
read -p "Commit Nachricht eingeben: " message
echo "Die Commit Nachricht ist: $message"
read -p "Ist die Nachricht korrekt? (j/n)" yn2
case $yn2 in
[YyJj]* ) break;;
[Nn]* ) echo "Bitte Nachricht erneut eingeben";;
* ) echo "Bitte mit j (ja) oder n (nein) antworten.";;
esac
done
git add -A
git commit -m "$message"
java -Xmx3g -jar $corpusServicesJar -i $directory -o $directory/prettyprint-output.html -c RemoveAutoSaveExb -c PrettyPrintData -f
git add -A
git reset -- curation/CorpusServices_Errors.xml
git checkout curation/CorpusServices_Errors.xml
git commit -m "Automatically pretty printed on $today"
git fetch
git merge ${remote}/${branch}
CONFLICTS=$(git ls-files -u | wc -l)
if [ "$CONFLICTS" -gt 0 ]
then
echo $conflictecho
git merge --abort
echo $conflictmessage >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"${conflictmessage}\"}" ${mattermosturl}
echo "ACHTUNG: Der Vorgang wurde abgebrochen und LAMA-${version} wird geschlossen."
read
exit
else
echo "Merging war erfolgreich bzw. nicht noetig."
git push $remote $branch
fi
if [ -z "$(git status --porcelain)" ]
then
echo $pullsuccessful
read
else
git status
echo "ACHTUNG: Der Pull konnte nicht korrekt durchgefuehrt werden. Bitte reparieren Sie den Pull."
git status >> $conflictPath
echo $pullerror >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"$pullerror\"}" ${mattermosturl}
read
fi
;;
[Nn]* ) echo "Der Vorgang wurde abgebrochen.";;
* ) echo "Bitte mit j (ja) oder n (nein) antworten.";;
esac
fi
;;
"Hilfe!")
clear
echo "Dieses Skript kann genutzt werden, um Aenderungen, die lokal gemacht wurden, dem Main Git Repository hinzuzufuegen, sodass alle, die mit den Daten arbeiten, sie sehen und nutzen koennen. "
echo "Bitte ENTER druecken um das Menue anzuzeigen und die Nummer des Vorgangs, der ausgefuehrt werden soll, eingeben und mit ENTER bestaetigen. "
echo "Wenn ein Konflikt oder ein Fehler auftritt bitte beim technischen Team melden. "
echo " "
echo "LAMA Version: ${version}"
echo "Git Version:"
git --version
echo "Java Version:"
java -version
echo "Corpus-Services version: " $corpusServicesJar
if [ -f "$corpusServicesJar" ]; then
echo "$corpusServicesJar wurde gefunden. "
else
echo "FEHLER: $corpusServicesJar wurde nicht gefunden. "
curl -i -X POST --data-urlencode "payload={\"text\": \"${jarnotfound}\"}" ${mattermosturl}
fi
if [ "$(git ls-remote 2> /dev/null)" ]; then
echo "Git repository ist erreichbar"
else
echo "FEHLER: Git repository ist nicht erreichbar"
fi
;;
"Beenden")
clear
break
;;
*) echo "ACHTUNG: Die Option $REPLY ist nicht verfuegbar.";;
esac
done
#!/bin/bash
today=$(date)
timestamp=$(date +%Y%m%d%H%M%S)
remote="origin" #please set to the name of your remote repository
branch="main" #please set to the name of the branch you want to pull from and push to
conflictPath="${timestamp}-conflict.txt"
SCRIPT=`realpath $0`
directory=`dirname $SCRIPT`
corpusServicesJar="../corpus-services-1.0.jar" #please set to the location of the corpus-services jar
user=`git config user.name`
user="${user%\"}"
user="${user#\"}"
#messages in the script
conflictecho="ATTENTION: The local repository cannot be updated because of a conflict. The merge process will be aborted and a mattermost message will be sent to the git maintainers."
pullsuccessful="Updating of your files was successful, thank you for your time."
noconflict="Great, there are no conflicts."
localchanges="ATTENTION: There are local changes on the files. Please remove them or save them with LAMA before updating."
nolocalchanges="There are no changes in your local files."
#messages for mattermost or in the conflict text files
conflictmessage="ATTENTION: Please resolve a merge conflict manually in ${directory} by ${user}."
#this could happen if there would be large binary files without git lfs for example
pullerror="ATTENTION: The pull operation was faulty. Please fix it in ${directory} by ${user}."
#mattermost hook urls
mattermosturl="https://your.mattermost.server.com/mattermost/hooks/HOOKSHA"
#or for multiple repositories and respective Mattermost channels
#if [[ "$(git config --get remote.origin.url)" == reponame.git ]]; then
# mattermosturl="https://your.mattermost.server.com/mattermost/hooks/HOOKSHA"
#elif [[ "$(git config --get remote.origin.url)" == otherreponame.git ]]; then
# mattermosturl="https://your.mattermost.server.com/mattermost/hooks/HOOKSHA"
#else
# mattermosturl="https://your.mattermost.server.com/mattermost/hooks/HOOKSHA"
#fi
version="3.0" #version of LAMA
echo "
.____ _____ _____ _____
| | / _ \ / \ / _ \
| | / /_\ \ / \ / \ / /_\ \
| |___/ | \/ Y \/ | \
|
|_______ \____|__ /\____|__ /\____|__ /
\/ \/ \/ \/
Welcome to Git with LAMA
"
echo " "
echo "############### Configuration ###############"
echo "LAMA version: ${version}"
echo "Git version:"
git --version
if [ "$(git ls-remote 2> /dev/null)" ]; then
echo "Git repository is accessible"
else
echo "ERROR: Git repository is not accessible"
fi
echo "#############################################"
echo " "
options=("See the current state of your local repository." "Update your local repository." "Save all your changes, add a message, publish your changes to the main repository and update your local repository." "Viewing your current configuration." "Setting up your configuration." "Help!" "Quit")
PS3="
Please choose an option (1-${#options[@]}) or press ENTER to display menu: "
select opt in "${options[@]}"
do
case $opt in
"Viewing your current configuration.")
echo "Your username is:"
git config user.name
echo "Your email is:"
git config user.email
;;
"Setting up your configuration.")
read -p "Enter your user name: " usrname
git config --global user.name "\"$usrname\""
read -p "Enter your email: " usrmail
git config --global user.email "\"$usrmail\""
echo "Thank you for setting your user name to"
git config user.name
echo "and your user email to"
git config user.email
;;
"See the current state of your local repository.")
git status
;;
#uncomment here and add option "See the changes in the files of your local repository." to options if you want to display changes via git diff
#"See the changes in the files of your local repository.")
# if [[ $(git diff) ]]; then
# echo "To close the following list of differences press 'q'"
# git diff
# else
# echo $nolocalchanges
# fi
# read -n 1 -s -r -p "Press any key to continue"
# ;;
"Update your local repository.")
CONFLICTS=$(git ls-files -u | wc -l)
if [ "$CONFLICTS" -gt 0 ]
then
echo $conflictecho
#this is important so people can work further on the files and the conflict can be solved later
git merge --abort
git status >> $conflictPath
echo $conflictmessage >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"${conflictmessage}\"}" ${mattermosturl}
read
exit 1
else
if [ -z "$(git status --porcelain)" ]
then
echo $nolocalchanges
echo "Updating will be started."
git fetch
git merge ${remote}/${branch}
CONFLICTS=$(git ls-files -u | wc -l)
if [ "$CONFLICTS" -gt 0 ]
then
echo $conflictecho
#this is important so people can work further on the files and the conflict can be solved later
git merge --abort
git status >> $conflictPath
echo $conflictmessage >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"${conflictmessage}\"}" ${mattermosturl}
read
exit 1
else
echo "Updating will be carried out."
fi
if [ -z "$(git status --porcelain)" ]
then
echo $pullsuccessful
else
git status
echo $pullerror
git status >> $conflictPath
echo $pullerror >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"${$pullerror}\"}" ${mattermosturl}
read
fi
else
git status
echo $localchanges
read
fi
fi
;;
"Save all your changes, add a message, publish your changes to the main repository and update your local repository.")
CONFLICTS=$(git ls-files -u | wc -l)
if [ "$CONFLICTS" -gt 0 ]
then
echo $conflictecho
#this is important so people can work further on the files and the conflict can be solved later
git merge --abort
git status >> $conflictPath
echo $conflictmessage >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"${conflictmessage}\"}" ${mattermosturl}
read
exit 1
else
echo "Great, there is no merge conflict to begin with."
#show all the files that are changed and ask if they should be added
echo "The files that are changed by you are:"
git status
read -p "Do you want to add these changes to the main repository? (y/n)" yn
case $yn in
[Yy]* )
while true; do
read -p "Enter your commit message: " message
echo "Your commit message is: $message"
read -p "Is the message correct? (y/n)" yn2
case $yn2 in
[YyJj]* ) break;;
[Nn]* ) echo "Please enter the message again";;
* ) echo "Please answer yes or no.";;
esac
done
git add -A
git commit -m "$message"
git fetch
git merge ${remote}/${branch}
CONFLICTS=$(git ls-files -u | wc -l)
if [ "$CONFLICTS" -gt 0 ]
then
echo $conflictecho
git merge --abort
echo $conflictmessage >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"${conflictmessage}\"}" ${mattermosturl}
echo "The merge process was stopped and LAMA will be closed."
read
exit
else
echo "Merging was successful or not needed."
git push $remote $branch
fi
if [ -z "$(git status --porcelain)" ]
then
echo $pullsuccessful
read
else
git status
echo "ATTENTION: The pull was faulty. Please fix it. "
git status >> $conflictPath
echo $pullerror >> $conflictPath
curl -i -X POST --data-urlencode "payload={\"text\": \"$pullerror\"}" ${mattermosturl}
read
fi
;;
[Nn]* ) echo "The process was stopped.";;
* ) echo "Please answer yes or no.";;
esac
fi
;;
"Help!")
clear
echo "This script can be used to add changes you made to the main Git repository so everyone working with the data can receive them."
echo "Please press ENTER to display the menu and type the number of the option you want to use, confirm wit the ENTER key."
echo "If there is a conflict or something goes wrong, please contact the maintaining team."
echo " "
echo "LAMA version: ${version}"
echo "Git version:"
git --version
if [ "$(git ls-remote 2> /dev/null)" ]; then
echo "Git repository is accessible"
else
echo "ERROR: Git repository is not accessible"
fi
;;
"Quit")
clear
break
;;
*) echo "ATTENTION: The option $REPLY is not available";;
esac
done
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment