Отправка в репозиторий Git из сценария оболочки

[1183312] После долгих и плодотворных обсуждений в комментариях, а также после [1183614] по этой ссылке[1183615] пользователю удалось решить проблему добавления

  • --n-perms --omit-dir-times
  • в опции [1183618]rsync[1183619].

    • Предварительные попытки решить проблему:
    • Думаю, если безопасность не касается вас в течение короткого периода времени, вы можете попробовать

    , а затем попробовать записать в эту директорию. Обратите внимание, что если есть подкаталоги, вы должны сделать это рекурсивно с:

    Если это успешно, то вы можете начать постепенно удалять разрешения, и это поможет вам точно определить проблему.

    Убедитесь, что пользователь jenkins уже является членом группы apache с помощью

    1
    02.09.2015, 10:56
    2 ответа

    В каком режиссере (ах | у) вы хотите это сделать? Это не понятно из вашего сценария. Попробуйте перейти в каталог 1 , например:

    #!/bin/sh
    
    GIT=`which git`
    REPO_DIR=/home/username/Sites/git/repo/
    cd ${REPO_DIR}
    ${GIT} add --all .
    ${GIT} commit -m "Test commit"
    ${GIT} push git@bitbucket.org:username/repo.git master
    

    Или вы можете выполнить git add --all / path / to / git / repo / files .

    Правка :

    Запуск сценария из командной строки не обязательно аналогичен запуску его из cron; см. этот вопрос и ответ: Что такое «рабочий каталог», когда cron выполняет задание , особенно ответ Жиля .

    1 Некоторые идеи о том, как проверить успешность выполнения команды

    4
    27.01.2020, 23:20

    Я столкнулся с той же проблемой, и вот как я ее исправил:

    1. Во-первых, попытайтесь выяснить, в чем заключается ошибка вашего push. Вы можете получить журнал ошибок, добавив 2> & 1 в конец вашего скрипта.В вашем случае это будет:

       $ {GIT} push (скрытый) мастер >> $ {LOG} 2> & 1 
       
    2. Толчок не работает изнутри оболочки по нескольким причинам. Проверьте следующие критерии:

      • ваше имя пользователя и пароль правильно сохранены / кэшированы. Вы можете напрямую нажать на git URL, включая ваш User / Pass, только для тестирования (НЕ забудьте удалить их). например:

         $ {GIT} push --repo (hidden) 
         
      • Убедитесь, что Git не жалуется на SSL (вы можете временно игнорировать его, добавив эту команду перед вашим push в вашем скрипте:

         export GIT_SSL_NO_VERIFY = 1 
         
    3. Если это не так, если git push выполняется в правильном каталоге, вы можете перейти в желаемый каталог перед выполнением сценария путем добавления предварительного шага в задание cron следующим образом:

       * / 20 * * * * cd / home / '$ {USER}' / Sites / git / bitbucket / kb && /home/username/Sites/git/repo/commit.sh
      
    0
    27.01.2020, 23:20

    Теги

    Похожие вопросы