Git Удаленный Pu sh Развертывание рабочего процесса на Windows - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь следовать этому руководству на windows для удаленного пу sh для развертывания на windows сервере.

https://ma.ttias.be/simple-git-push-workflow-deploy-code-server/

  1. клонированное хранилище с сервера git на моем ноутбуке

  2. добавлено удаленное расположение на моем сервере.

    $ git remote add live \\\\hostname\\E\\myapp\\.git

git конфиг выглядит так:

[remote "live"]
    url = \\\\hostname\\E\\myapp\\.git
    fetch = +refs/heads/*:refs/remotes/live/*
создал голое хранилище на сервере приложений. Использование git bash

    cd \e
    mkdir myapp
    mkdir .git
    cd .git
    git init --bare
    git clone /e/.git /e/myapp

добавлен пост-прием в папку e: \ myapp.git \ hooks

    #!/bin/sh
    git --work-tree=E:\\myapp --git-dir=E:\\myapp\\.git checkout -f
    git --work-tree=E:\\myapp --git-dir=E:\\myapp\\.git pull
    echo "Hooray, the new version is published!"
    exit 0

Тест 1: git pu sh живой мастер

Enumerating objects: 201, done.
Counting objects: 100% (201/201), done.
Delta compression using up to 4 threads
Compressing objects: 100% (198/198), done.
Writing objects: 100% (201/201), 86.90 KiB | 7.00 KiB/s, done.
Total 201 (delta 117), reused 0 (delta 0)
remote: Resolving deltas: 100% (117/117), done.
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: is denied, because it will make the index and work tree inconsistent
remote: the work tree to HEAD.
remote:
remote: You can set the 'receive.denyCurrentBranch' configuration variable
remote: to 'ignore' or 'warn' in the remote repository to allow pushing into
remote: its current branch; however, this is not recommended unless you
remote: other way.
remote:
remote: To squelch this message and still keep the default behaviour, set
remote: 'receive.denyCurrentBranch' configuration variable to 'refuse'.

Я выполнил следующую команду

git config receive.denyCurrentBranch updateInstead

Тест 2:

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 281 bytes | 281.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To \\patlbearing02\E\bot-live\.git
 ! [remote rejected] master -> master (Working directory has staged changes)

Я застрял в этом сейчас, не уверен, что не так. Я новичок в git, я много пробовал, но пока не повезло.

1 Ответ

1 голос
/ 19 марта 2020

Я нашел решение, с помощью моего друга.

Изменения на стороне сервера

Ошибка 1.

Одна большая ошибка, которую я делал, заключается в том, что мое понимание клона было неправильно. Клон делает клон репо и поддерживает связь. Мне пришлось использовать основной репо как удаленный, а не клонированный репо, как я делал выше. Мне пришлось изменить код для клона (не нужно было, но иметь. git на root был плохой выбор, я собирался удалить это, думая, что это было бесполезно после копирования в myapp, но я был неправ), а также для добавив пульт на моем ноутбуке.

Я удалил myapp и. git на сервере. И я изменил Шаг 3. Как показано ниже

Старый:

    cd \e
    mkdir myapp
    mkdir .git
    cd .git
    git init --bare
    git clone /e/.git /e/myapp

Новый:

cd \e
mkdir myapp
mkdir myapp.git
cd myapp.git
git init --bare
git clone /e/myapp.git /e/myapp

Ошибка 2.

крюк после получения необходим для завершения UN C, он работает удаленно, но не определяет локальные пути. Я не уверен, почему, может быть, windows Speci c. Люблю знать ответ от экспертов.

поэтому я изменил № 4 на

Старый:

  #!/bin/sh
    git --work-tree=E:\\myapp --git-dir=E:\\myapp\\.git checkout -f
    git --work-tree=E:\\myapp --git-dir=E:\\myapp\\.git pull
    echo "Hooray, the new version is published!"
    exit 0

Новый:

    #!/bin/sh
    git --work-tree=\\\\hostname\\e\\myapp --git-dir=\\\\hostname\\e\\myapp.git checkout -f   #notice I am pointing to myapp.git not myapp\\.git (it is there but its cloned we need to use main bare repo here)
    git --work-tree=\\\\hostname\\e\\myapp --git-dir=\\\\hostname\\e\\myapp.git pull
    echo "Hooray, the new version is published!"
    exit 0

На стороне ноутбука / разработчика:

Я добавлял клонированное репо git, вместо этого я должен был использовать основное репо.

Старый

$ git remote add live \\\\hostname\\E\\myapp\\.git

Новый:

$ git remote add live \\\\hostname\\E\\myapp.git  #notice I am pointing to myapp.git not myapp\\.git (it is there but its cloned we need to use main bare repo here)

Тест: git пу sh живой мастер

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 280 bytes | 93.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Checking connectivity: 3, done.
remote: There is no tracking information for the current branch.
remote: Please specify which branch you want to merge with.
remote: See git-pull(1) for details.
remote:
remote:     git pull <remote> <branch>
remote:
remote: If you wish to set tracking information for this branch you can do so with:
remote:
remote:     git branch --set-upstream-to=<remote>/<branch> master
remote:
remote: Hooray, the new version is published!
To \\hostname\E\myapp.git
   1460906..1ec756d  master -> master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...