У меня есть следующие настройки, касающиеся Git:
- Небольшой сервер под управлением Arch Linux и Git-клиент по умолчанию. У меня есть эта настройка, чтобы автоматически вносить изменения в определенные файлы, а затем помещать эти изменения в мой репозиторий Github.
- Мой ПК с Windows 8.1 с установленным SmartGit. Иногда я делаю изменения в файлах, которые затем вручную помещаю в свой репозиторий Github.
Проблема, с которой я столкнулся, заключается в том, что когда я вносил некоторые изменения в файлы на моем ПК с Windows, а затем отправлял эти изменения, мой сервер Arch Linux, по-видимому, терял способность передавать свои изменения в удаленный репозиторий. Клиент Arch Linux может без проблем отправлять свои автоматические изменения до тех пор, пока я не запрошу что-нибудь на ПК с Windows. После этого что-то ломается. Единственный способ, который я нашел для решения этой проблемы, - это удалить локальный репозиторий на моем сервере Arch Linux, а затем создать новый локальный репозиторий, потянув его с удаленного компьютера.
Я написал сценарий клиента Arch Linux для извлечения и извлечения данных из удаленного репозитория, прежде чем вносить какие-либо изменения, и я делаю то же самое при внесении изменений на моем ПК.
Кто-нибудь может помочь мне выяснить, почему это происходит и что я могу сделать, чтобы предотвратить возникновение этой проблемы в будущем? Помощь будет принята с благодарностью.
Вот сценарии, которые я использую на своем сервере Arch Linux:
Основной скрипт:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
# Test if an internet connection is present
ping -c 3 google.com > /dev/null 2> /dev/null
if [ $? != 0 ]; then
exit 1
fi
# Git requires that the working directory be the repository I am working with
cd /home/git-user/repositories/xjdhdr-random-code
# Update local repository to ensure no conflicts exist before I make changes
/home/git-user/bin/expect-gitpull.sh
# snip: Everything between these two commands basically make a lot of changes to a lot of text files. Probably has nothing to do with Git or my problem.
# Commit changes to remote repository.
cd /home/git-user/repositories/xjdhdr-random-code
git add -A -f --ignore-errors --
git commit -m "Automatic commit of machine generated changes to repository" --no-edit --
/home/git-user/bin/expect-gitpush.sh
exit 0
/home/git-user/bin/expect-gitpull.sh
#!/bin/expect
set password {*don't need anyone to see my passphrase*}
cd /home/git-user/repositories/xjdhdr-random-code
spawn git pull origin
expect "Enter passphrase for key '/home/git-user/.ssh/id_rsa':"
send -- "$password\r"
send -- "\r"
expect "%PROMPT%"
spawn git fetch -p origin
expect "Enter passphrase for key '/home/git-user/.ssh/id_rsa':"
send -- "$password\r"
send -- "\r"
expect "%PROMPT%"
/home/git-user/bin/expect-gitpush.sh
#!/bin/expect
set password {*ditto*}
cd /home/git-user/repositories/xjdhdr-random-code
spawn git push --recurse-submodules=check
expect "Enter passphrase for key '/home/git-user/.ssh/id_rsa':"
send -- "$password\r"
send -- "\r"
expect "%PROMPT%"