Пробуя контроль версий (git), я делаю это правильно? - PullRequest
0 голосов
/ 18 декабря 2011

Я никогда не использовал контроль версий, но я знаю, что это хорошая практика, поэтому я решил попробовать. Мне нравится Git, поэтому я использую это. У меня есть локальный сервер Ubuntu (отдельная коробка), где я делаю всю свою локальную разработку.

Итак, я установил gitosis (следуя документам сообщества Ubuntu) и настроил весь этот джаз.

Моя IDE - Eclipse, поэтому я установил Eclipse EGit.

У меня есть общий доступ к документации Apache с Samba, поэтому на моем ПК с Windows (где я разрабатываю) я просто загружаю свои проекты в Eclipse и сохраняю их непосредственно в docroot (например, \ webserver \ www \ projectname - это моя сетевая папка).

Итак, я понимаю, что Git должен создавать свои репозитории в / srv / gitosis / repositories. Но при использовании EGit он просто сохраняет репозиторий в /var/www/projectname/.git - это нормально? Я немного озадачен тем, как все это должно работать.

Ответы [ 2 ]

5 голосов
/ 18 декабря 2011

Прежде всего, вам не нужно настраивать Gitosis, Git очень гибок, я просто создаю каталог на сервере и использую ваши обычные учетные данные SSH.

Во-вторых, GIT этораспределенный, что означает, что каждый, кто клонирует проект, имеет всю историю, поэтому вы видите каталог .git.Чтобы использовать его с сервером Ubuntu, вы должны добавить пульт.Базовое использование Git из командной строки будет выглядеть примерно так:

Создать проект

user@local:~$ mkdir project
user@local:~$ cd project
user@local:~/project$ nano filename.py

Сделать его репозиторием git

user@local:~/project$ git init
user@local:~/project$ git add filename.py
user@local:~/project$ git commit -m "My first commit"

Создать удаленный

user@local:~/project$ ssh ubuntu-server
user@ubuntu-server:~$ mkdir project.git
user@ubuntu-server:~/project.git$ cd project.git
user@ubuntu-server:~/project.git$ git init --bare
user@ubuntu-server:~/project.git$ exit

Добавить пульт дистанционного управления

user@local:~/project$ git remote add origin ubuntu-server:/home/username/project.git
user@local:~/project$ git push origin master

Я не слишком много комментировал, но он может дать вам представление о рабочем процессе и о том, как его использовать с Eclipse ...

3 голосов
/ 18 декабря 2011

Поскольку вы используете общий сетевой ресурс, вы, по сути, работаете непосредственно на своем сервере, поэтому вам не нужно все, что связано с Gitosis.

В обычной ситуации с хранилищем исходного кода у человека не будет общего сетевого ресурса с централизованным сервером. Они просто получат доступ по SSH. В этом случае Gitosis - это решение, которое они могут использовать для предоставления определенным пользователям доступа на чтение / запись к хранилищу. Они будут отправлять свои обновления на сервер и извлекать обновления других.

Однако, в вашем случае, вы обращаетесь к каталогам сервера из общего сетевого ресурса, поэтому, что касается git, это то же самое, что и локальный каталог. Все, что вам нужно сделать, это код и коммит. Не нужно толкать и тянуть.

Однако работать непосредственно с каталогом содержимого вашего веб-сервера, вероятно, не то, что вам нужно. Причина в том, что когда вы вносите изменения, переключаете ветки и т. Д., Вы в конечном итоге переводите свой веб-сервер в плохое состояние. Думаю об этом. У вас есть полностью функциональный веб-сайт на главной ветке. Затем вы извлекаете ветку "my_website_2.0", которая еще не завершена. Внезапно все файлы, на которые указывает ваш веб-сервер, находятся в этом полузаполненном состоянии. Не хорошо.

Есть много решений этой проблемы, некоторые сложные, некоторые нет. Например, вы можете настроить общий репозиторий на сервере, на который нужно отправить основную ветку, а затем клонировать его в каталог веб-материалов. (Обратите внимание, что все это будет выполняться с помощью простых путей из-за общего сетевого ресурса.)

Эта страница: Использование git для управления веб-сайтом подробно описывает, как использовать git и как автоматически вносить общие изменения в каталог содержимого вашего веб-сервера без необходимости клонирования на сервере.

Я уверен, что если вы загляните в Google, вы найдете дополнительные решения.


Вот некоторые дополнительные детали, учитывая вашу путаницу ниже.

Egit (и сам git) работают в локальных репозиториях. Нет команды для настройки удаленных репозиториев. Вы нажимаете и извлекаете данные из удаленных репозиториев, и на этом все. Вы ожидаете, что Egit будет делать то, чего не делает.

Вот что вам нужно сделать:

  1. Создайте пустой репозиторий на вашем сервере. Поскольку вы используете сетевой ресурс, это будет выглядеть примерно так: «git init --bare / mynetworkshare / usr / repositories / my_central_repo»
  2. Клонируйте этот репозиторий локально: git clone / mynetworkshare / usr / repositories / my_central_repo my_local_repo
  3. Добавьте файлы вашего веб-сервера в локальный репозиторий: cp -r my_webserver_files / * my_local_repo
  4. перейдите в локальный репозиторий: cd my_local_repo
  5. Добавьте файлы в git: git add. (отметьте точку)
  6. Commit: git commit -m "Начальная фиксация файлов веб-сервера"
  7. Передать файлы в центральное хранилище. "git push origin master"

Там. Теперь у вас есть копия файлов в вашем централизованном хранилище. Как указывалось ранее, теперь задача состоит в том, чтобы перенести эти файлы оттуда в каталог веб-материалов. Это можно сделать, клонировав центральный репозиторий в каталог веб-материалов, или воспользовавшись более сложным решением, например, тем, которое я связал, или другим, которое вы можете найти через Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...