Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   ПО для одновременной разработки (https://javascript.ru/forum/offtopic/32326-po-dlya-odnovremennojj-razrabotki.html)

greatilya 11.10.2012 19:02

ПО для одновременной разработки
 
Доброго дня!

Возможно кто встречал программное обеспечение для совместной разработки веб-сайтов. В идеале было бы конечно что-то похожее на google docs (имеется в виду одновременная работа над одним документом).
Конечно я понимаю, что правильным вариантом будет установка Subversion и т.п. Но возможно есть альтернативы?

Спасибо.

kobezzza 11.10.2012 21:25

https://c9.io/

Maxmaxmахimus 11.10.2012 22:32

github.com

п.с. c9 говённый недоредактор для быдла

failbowl 11.10.2012 23:10

гитхаб для опенсорс больше подходит. если нужно бесплатно и чтобы не кто другой не имел доступа то советую меркуриал (Mercurial). под винду клиент есть удобный TortoiseHG. под линукс тоже есть что то, вроде даже говорят удобнее чем для SVN (могут врать).

failbowl 11.10.2012 23:15

Maxmaxmахimus,
что не для быдла?

Maxmaxmахimus 11.10.2012 23:20

то что работает и не требует бабла, например phpstorm + системы контроля версий и плагины для одновременного быдлокодинга в реальном времени.

monolithed 12.10.2012 02:14

Цитата:

Сообщение от greatilya
Конечно я понимаю, что правильным вариантом будет установка Subversion и т.п. Но возможно есть альтернативы?

Git + Github, если нужен закрытый репозиторий, то его могут предоставить за $7 в месяц (цена зависит от количества участников)
Если денег нет, тогда можно завести проект на Bitbucket (закрытый репозиторий до 5 юзеров, бесплатно).

failbowl 12.10.2012 09:03

Цитата:

Bitbucket
угу, я его и имел ввиду

nerv_ 12.10.2012 23:00

меня тут приперло: в кротчайшие сроки надо научиться пользоваться гитхабом. Можно для тупых ссылку на русском? (нет, особо не загугливал)

Maxmaxmахimus 12.10.2012 23:07

мне тоже приперло но гуглить вломы)

melky 12.10.2012 23:13

Цитата:

Сообщение от nerv_ (Сообщение 209735)
меня тут приперло: в кротчайшие сроки надо научиться пользоваться гитхабом. Можно для тупых ссылку на русском? (нет, особо не загугливал)

я думал, я один такой :)

лучшее, по-моему мнению, средство для обучения GIT - книжка PROGIT:
http://habrahabr.ru/post/150673/

главное - открыть консоль и практиковаться сразу же - так быстрее в память войдёт и осознание происходящего быстрее придёт :)

dmitry111 14.10.2012 04:46

melky,

не, не один!
спасибо за ссылку :thanks:

greatilya 20.10.2012 09:46

melky,
действительно, ссылка очень хороша! ... Переборол себя и начал разбираться. Оказалось совсем не сложно.
Есть ли у кого на примете редакторы кода с интеграцией для GIT? Или может кто-то умеет дружить GIT с Dreamweaver?

kobezzza 20.10.2012 10:42

Цитата:

Есть ли у кого на примете редакторы кода с интеграцией для GIT? Или может кто-то умеет дружить GIT с Dreamweaver?
По моему в любой современной IDE это можно либо из коробки, либо плагином. В DW через плагины. Но меня как то всегда раздражала такая интеграция, удобней просто работать с консолькой.

nerv_ 20.10.2012 12:37

Цитата:

Сообщение от greatilya
Есть ли у кого на примете редакторы кода с интеграцией для GIT?

могу ошибаться, но PHPStorm

Livanderiaamarum 20.10.2012 13:06

в шторме все системы кнтроля версий есть + одна встроенная)

Shaci 20.10.2012 13:09

Цитата:

Сообщение от nerv_ (Сообщение 209735)
меня тут приперло: в кротчайшие сроки надо научиться пользоваться гитхабом. Можно для тупых ссылку на русском? (нет, особо не загугливал)

если на винде сидишь - есть http://windows.github.com/
Хорошая книжка, мне помогла -
http://git-scm.com/book/ru (глава 2 и 3, дальше читать не надо, но эти главы - оооочень полезные)

x-yuri 20.10.2012 17:15

Цитата:

Сообщение от failbowl
гитхаб для опенсорс больше подходит. если нужно бесплатно и чтобы не кто другой не имел доступа то советую меркуриал (Mercurial).

никто не мешает на своем сервере разместить закрытый git-репозиторий

Цитата:

Сообщение от kobezzza
Но меня как то всегда раздражала такая интеграция, удобней просто работать с консолькой.

+1

monolithed 20.10.2012 17:41

Цитата:

Сообщение от kobezzza
Но меня как то всегда раздражала такая интеграция, удобней просто работать с консолькой.

Особенно если нужно сделать что-то вроде этого:
git stash
git pull origin branch
....
git stash apply
git cherry-pick -nm 1 ...
git revert -nm 1 ...
...
git stash drop

melky 20.10.2012 18:06

Цитата:

Сообщение от monolithed (Сообщение 211365)
Особенно если нужно сделать что-то вроде этого:
git stash
git pull origin branch
....
git stash apply
git cherry-pick -nm 1 ...
git revert -nm 1 ...
...
git stash drop

cкажите, зачем после stash apply делать всё, что есть ниже? (до проф. уровня пользования git'ом ещё не дошло)

monolithed 20.10.2012 18:25

Цитата:

Сообщение от melky
cкажите, зачем после stash apply делать всё, что есть ниже? (до проф. уровня пользования git'ом ещё не дошло)

Представь что ты находишься в какой-то ветке, и тебе кидают таск с критическим статусом.
Если внесенных изменений не достаточно для полноценного комита, то логично сделать git stash, чтобы потом к ним вернуться.

В тот момент когда ты делал другой таск в твою ветку что-то запушили. И для того чтобы работать с актуальной версией нужно сделать pull и накатить свои изменения (git stash apply). Тоже самое можно сделать с помощью git stash pop.

Но вот не задача, ты случайно закоммитил файл c каким-то багом, и хочешь убрать из его ветки, для этого есть git cherry-pick.

А git revert -nm 1 ... нужно для того чтобы вырвать пуш из мержда.

И вот ты вернулся к своему таску, все сделал, теперь можно сделать git stash drop, чтобы удалить из стека stash

melky 20.10.2012 22:45

monolithed, разве не было бы легче просто вести изменения в свою ветку.ю и иметь track под рукой?

... сколько бы я ни читал, всё равно не могу понять работу cherry-pick. Не могли бы вы обьяснить простым языком, зачем она нужна?

monolithed 20.10.2012 23:41

Цитата:

Сообщение от melky
разве не было бы легче просто вести изменения в свою ветку

До недавнего времени у меня была такая структура проекта:

master
workspace


Сейчас:
master
alpha
feature


Если мне нужно пофиксить какой-то баг или ввести новую фичу, то я создаю ветку feature-1 (постфикс инкрементируется), тестирую, если все гуд, то вливаю в alpha.

Когда протестирую в альфе, переношу в мастер и удаляю feature

alpha нужна потому, что параллельно может делаться несколько фич и если их сразу мерджить в мастер, то все может взорваться.

У меня стандартный workflow выглядит примерно так:
...
git checkout alpha
git checkout -b feature-8628
git pull origin alpha
...
git status
git commit -am 'feature-8628: description'
git push origin feature-8628
git log -p
git checkout alpha
...
git diff HEAD feature-8628
git merge origin/feature-8628
git status
git commit -a
git push origin alpha
git log --graph
git checkout master
git pull origin master
git merge alpha
git diff --staged
git commit -a
git branch -d feature-8628
git push origin master
git log --stat


PS: Для меня такая структура оптимальна, однако для многопользовательской работы над ответственным проектом не помешает еще одна промежуточная ветка test

Цитата:

Сообщение от melky
иметь track под рукой?

Причем тут трек?

Я лично использую JetBrains YourTrack, в котором и создаю таски

Цитата:

Сообщение от melky
... сколько бы я ни читал, всё равно не могу понять работу cherry-pick. Не могли бы вы обьяснить простым языком, зачем она нужна?

Выдергивает коммит из ветки, путем создания нового коммита (патч)

x-yuri 24.10.2012 02:06

monolithed, давай еще раз
Код:

# надо исправить критический баг
git stash  # откладываешь текущие изменения
git pull origin branch  # получаешь актуальное содержимое ветки
....  # исправляешь баг, commit, push
git stash apply  # возвращаешься к тому, чем до этого занимался
...  # понимаешь, что надо отменить коммит abcdef
git cherry-pick -nm 1 abcdef  # применяешь коммит (из другой ветки?)
git revert -nm 1 abcdef  # отменяешь его действие

А про -m 1 можешь подробнее рассказать? Насколько я понимаю, это на случай если в том коммите будет merge? Можно сказать, что там должна быть единица, не смотря в журнал?

Цитата:

Сообщение от melky
... сколько бы я ни читал, всё равно не могу понять работу cherry-pick. Не могли бы вы обьяснить простым языком, зачем она нужна?

Давай еще я попробую. Копирует отдельный коммит (или несколько коммитов) в текущую ветку, при этом связь (типа merge) не образуется. В первую очередь нужно когда есть несколько веток (репозиториев), которые не предполагается мерджить. Например, кто-то форкнул твой проект, и вносит туда изменения. Часть изменений тебя интересует. Или если надо пофиксить баг в предыдущей версии программы. Cherry pick - это что-то типа "выбирать лучшее".

melky 24.10.2012 11:27

спасибо, очень просто и в то же время подробно. теперь наконец-то стало понятно, что такое cherry-pick.

карма не плюсюется (

Цитата:

Сообщение от x-yuri
Например, кто-то форкнул твой проект, и вносит туда изменения. Часть изменений тебя интересует.

кстати, как забирать изменения из форков?

x-yuri 24.10.2012 16:10

Цитата:

Сообщение от melky
кстати, как забирать изменения из форков?

$ git remote add fork url
$ git fetch fork
$ git cherry-pick ...

monolithed 24.10.2012 20:49

Цитата:

Сообщение от x-yuri
А про -m 1 можешь подробнее рассказать? Насколько я понимаю, это на случай если в том коммите будет merge?

Верно понимаешь :)

x-yuri 24.10.2012 22:35

Цитата:

Сообщение от monolithed
Верно понимаешь

Но не до конца
Код:

git cherry-pick -nm 1 abcdef  # применяешь коммит (из другой ветки?)
git revert -nm 1 abcdef  # отменяешь его действие

Раз ты делаешь cherry-pick, значит ты хочешь отменить коммит в другой ветке. Но зачем отменять коммит из другой ветки в текущей ветке? Почему не переключиться на нужную ветку и там сделать git revert?

И еще там был вопрос: можно сказать, что там должна быть единица, не смотря в журнал?

monolithed 25.10.2012 01:13

Цитата:

Сообщение от x-yuri
Раз ты делаешь cherry-pick, значит ты хочешь отменить коммит в другой ветке.

Может мне наоборот нужно накатить чей-то коммит из другой ветки в свою :)

Цитата:

Сообщение от x-yuri
Но зачем отменять коммит из другой ветки в текущей ветке? Почему не переключиться на нужную ветку и там сделать git revert?

Преположим что есть ветка alpha, в которую мы подмерджили beta. Помимо ветки beta в мердже участвовали и другие ветки.
И в какой-то момент стало понятно что ветку beta нужно вырвать из итерации. Сделать это безопасно можно так:
git revert -nm 1 hash


Цитата:

Сообщение от x-yuri
И еще там был вопрос: можно сказать, что там должна быть единица, не смотря в журнал?

В большинстве случаев, да (-m 1 первый коммит)

x-yuri 25.10.2012 17:27

значит получается так:
Код:

# ВНЕЗАПНО! надо исправить критический баг
$ git stash  # откладываешь текущие изменения
$ git pull origin branch  # получаешь актуальное содержимое ветки
....  # исправляешь баг
$ git commit
$ git push
...
$ git stash pop  # возвращаешься к тому, чем до этого занимался
...
$ git cherry-pick -nm 1 a12345  # копируешь один коммит из другой ветки
...
$ git revert -nm 1 b67890  # отменяешь другой коммит из текущей ветки

по поводу -m, получается, что -m 1 - для той ветки, в которую делали merge:
Код:

git init

echo '1
2
3' > 1
git add .
git commit -m 1

git checkout -b 2
echo '1
2
33' > 1
git add .
git commit -m 2

git checkout master
echo '11
2
3' > 1
git add .
git commit -m 2

# git checkout 2        # не работает, если раскомментировать
# git merge master      # и комментарий к reverse неправильный (reversing changes made to ...)
# git checkout master  # потому что в этом случае должно быть -m 2
git merge 2

git revert -m 1 HEAD


x-yuri 25.10.2012 17:44

вот вариант для cherry-pick:
Код:

git init

echo '1
2
3' > 1
git add .
git commit -m 1

git checkout -b 2
git checkout -b 3
echo '11
2
3' > 1
git add .
git commit -m 2

git checkout 2
echo '1
2
33' > 1
git add .
git commit -m 2

# git checkout 3  # не работает если раскомментировать
# git merge 2
# git checkout 2
git merge 3

git checkout master
git cherry-pick -m 1 2

или еще другими словами, main line - ветка в которую делался merge


Часовой пояс GMT +3, время: 09:11.