GitHub

Russian main discussion
  • Author
  • Message
Offline
Posts: 19
Joined: Fri Jan 14, 2011 3:29 am

GitHub

Post by lexa »

Привет.

Поискал по форуму не нашёл ни одного предложения.

Может, есть резон перевести AkelPad на гитхаб? Всё-таки это "вконтанкит для программистов": удобный интерфейс, легко делать пулл реквесты, комментировать код и коммиты.

При этом собрать всё вместе: код редактора, плагинов, файлов coder и, конечно, удобный каталог скриптов.

Сказать "спасибо тебе, cvs, но ты устарел". :)

В крайнем случае, на гитхабе завести официальное зеркло проекта.

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

Я как-то предлагал для скриптов какую-то общую репу завести, но чет никому не интересно. Себе кой-чего завел (не все авторы), ну и саму рабочую папку AP тож на гите держу - жаль только, в ini-файлах часть данных хранится в хексах: не шибко удобно версировать.

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

Да на самом деле сорсфордж сам предоставляет возможность заводить гит-репо. Но тут уж как удобно автору.

Offline
Posts: 19
Joined: Fri Jan 14, 2011 3:29 am

Post by lexa »

Fr0sT, гитхаб хорош не гитом (СКВ - вопрос привычки и религии :)), а сообществом и возможностями: отмечать закладки, форкать, слать пулл реквесты, обсуждать участки кода и т.д.

Поэтому хотелось бы хотя бы официальное зеркало проекта, куда можно будет слать реквесты. Например, там бы можно было сделать субмодуль с коллекцией скриптов F. Phoenix'а.

Люди бы слали свои coder-файлы, скрипты и т.д.

Главное, что этим было бы удобно пользоваться как Базовым Каталогом Скрипта. :)

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

Я б не прочь загрузить свои coder-файлы, включая незаконченные, на гитхаб, но хотелось бы удобный ликбез по гитхабу, его терминологии и возможностям. А то я там зарегился, а дальше - тёмный лес для меня. Да, я знаю про тамошние факи, инструкции, когда-нибудь я их сяду и основательно прочту, но хотелось бы чего-то более краткого или может заточенного под применение в виде выкладывания акельпадных кодер-файлов, а не гигантского софта с ветвлениями в разработке.

Offline
Posts: 19
Joined: Fri Jan 14, 2011 3:29 am

Post by lexa »

Lenchik, я пытался учить своего дизайнера основам систем контроля версий, но не очень вышло. Поэтому боюсь и с вами обломаюсь. :)

Но попробовать можно.

Вообще, всё что вам нужно это программа для отсылки кода на сервер гитхаба. Для Windows можно использовать
1. msysgit
2. TortoiseGit (удобная, имеет приятный интерфейс)
3. специальную программу GitHub for Windows (достаточно удобная, имеет приятный интерфейс).

Далее.

Заводите новый репозиторий у себя в акаунте:
1. перейдите на https://github.com/
2. жмёте по "New repository"
3. вводите "Repository name" - это название репозитория в УРЛе (например, если назвать test, то репозиторий будет доступен по github.com/%USERNAME%/test)
4. нажимаете "Create repository"

Теперь у вас есть репозиторий test.

Далее.

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

Для msysgit

Если вы выбрали msysgit зажмите шифт, кликните правой кнопкой на директории и выбирайте "Открыть окно команд". Откроется cmd.

Инициализируем

Code: Select all

git init
Добавляем в репозиторий все файлы (изменённые или созданные) (символ в конце - точка, она говорит "всё подряд", можно указывать директории или файлы)

Code: Select all

git add .
Делаем комит (-m это комментарий, они обязательны)

Code: Select all

git commit -m "first commit"
Указывает УРЛ внешнего репозитория куда будем сливать

Code: Select all

git remote add origin https://github.com/%USERNAME%/test.git
Отправляем (origin это название см. выше "git remote add origin", master - имя ветки; master это базовая ветка)

Code: Select all

git push -u origin master
Git спросит у вас логин и пароль. Потом отправит данные.

Теперь каждый раз при добавление файла вы пишите

Code: Select all

git add .
или (для конкетного файла)

Code: Select all

git add path/to/file.txt
Чтобы сохранить изменения

Code: Select all

git commit -m "Комментарий"
И в конце концов

Code: Select all

git push -u origin master
Чтобы синхронизировать локальный репозиторий с гитхабом.

GitHub for Windows

К сожалению я ставил эту программу только для ознакомления. Точно про неё не могу сказать.

Но в пустом репозитории (после создания нового) помимо подсказок для версии командной строки есть надпись "Quick setup — if you've done this kind of thing before" и кнопка "Setup in Windows".

Если у вас стоит GitHub for Windows клликнув по кнопке вы откроете репозиторий в нём.

TortoiseGit

По сути это интерфейс к Git-версии командной строки. Всё удобно.

Из всех команд нужно сделать

Code: Select all

git init
Это команда доступна и из интерфейса ("Repository here", кажется, называется).

Вводите УРЛ и программа всё делает сама.

Создаёте/изменяете файлы, выбираете "commit", галочками отмечаете что нужно, пишете комментарий в окошке и всё.

Pull делается тоже просто одной кнопкой.

Логин/пароль и ключи

Вообще, по-хорошему, вам следует создать RSA-ключ: публичный и приватный. Приватный будет только у вас, а публичный можно раздавать кому угодно: гитхабу, серверу для SSH, андроиду при заходе на него по SSH и т.д.

Как сгенерировать ключ?

Для Windows идёте сюда и качаете PuTTYgen (176 Кб). Ничего больше, только PuTTYgen.

Открываете PuTTYgen. В "Type of key generate" выбираете "SSH-2 RSA" (по умолчанию должно быть выбрано именно оно).

В "Number of bits in a generated key" вместо 1024 вводите 2048 (или больше, но, в целях безопасности, не меньше).

Жмёте "Generate" и возюкаете мышкой в поле чуть выше кнопки "Generate".

Затем жмёте "Save public key", сохраняете публичный ключ в файл
Затем "Save private key" и сохраняете приватный ключ в файл.

Добавить ключ в гитхаб

Если вы не закрыли PuTTYgen, то публичный ключ можно видеть в окошечке. Он выглядит примерно так

Code: Select all

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAxNDi4D6Sonkp1Vbe1w/HuJW9xMcltMgqyzADhopvdSORtVBfNOOMJcv7JQK6DKt5O3dbcPHWVOyFwZz2NvrAHsOPd5HdleFKgqLtU0+FoI4xHv9aJ0ArAAW/ZrhuHDa4zWgQV1/4gkmziBU1TLX8agTABwrZIFLNEj2SN8Ho19Zz9Lt7e6j8AhiiCiYJSm5VS9/ljggF3TvTiLcS6fZFiHEI7cmyqDfIdTU2ZscN/1azcwMQ6UYNNrR2G6KhipNGk/7NCMPzw5wXRQtRTF9oYgaKdpKRy6Zbg5ilO6tuGoy/Q0J6JsUafhs2ROj1ey9gOhdz7sq0O+jR6v0v/c3wqw== rsa-key-20130222
Если PuTTYgen зыкрыт, то этот же ключ мы сохранили в обычном текстовом файле, откройте и копируйте содержимое.

Чтобы добавить ключ в гитхаб переходите в настройки https://github.com/settings/ssh, кликаете "Add SSH Key" и вводите туда публичный ключ.

Ставить ли пароль на приватный ключ

Это следует сделать в целях безопасности. Но с гитом будут небольшие проблемы.

Может не появляться окно в которое нужно вводить пароль от ключа.

Решить проблему можно достаточно просто: отсюда скачав Pageant.

Это агент, который висит в памяти и помнит пароли от всех ваших ключей. Pageant пригодиться и просто чтобы каждый раз не вводить пароль.

Как поставить пароль на ключ?

1. Если вы уже сгенерировали ключи и зыкрыли PuTTYgen, то откройте его снова и через меню File -> Load private key загрузите приватный ключ
2. Если ключ ещё не сгенерирован, то исправьте это. :)

Под окошечком с публичным ключом будет четыре поля:
1. Key fingerprint - подпись ключа.
2. Key comment - комментарий ключа (удобно если у вас несколько ключей или на гитхабе у аккаунта несколько ключей (разные люди), так не перепутаете что, чей и откуда).
3 и 4. Key passphrase и Confirm passphrase - это и есть поле с паролем. Вводите пароль, потом подтверждаете его.

Всё. Осталось только снова сохранить приватный ключ: "Save private key" и сохраняете приватный ключ в файл.

Теперь ваш ключ запаролен.

Offline
Posts: 19
Joined: Fri Jan 14, 2011 3:29 am

Post by lexa »

Основная часть короткая, но из-за дополнений про TortoiseGit и ключи вышло длинновато. :)

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

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

Инструкции для Виндов/гуевых приложений:
http://habrahabr.ru/post/123111/
http://habrahabr.ru/post/125799/

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

Спасибо за подсказки. Кой-чего натворил: https://github.com/Lenchik/Akelpad-syntax-highlighting

А теперь отзывы начинающего
lexa
Ещё раз спасибо. Хоть как-то пролит свет, но не хватает разъяснений по терминологии, все эти репозитории, пуши, пуллы, форки...
Что-то из этого нашлось в пдфах по хабрасслыкам.

Наверно эмоциональны отзывы, но всё же:
Поставить софта, который понаделает кучу непонятной фигни в моих документах.:x
С самой страницы гитхаба под виндоуз две разных проги, которой обычному человеку тоже неинтуитивны, и даже перевод одной из них не спасает. :x
Наверно для софта это нормально - всякие настроечные файлы в скрытых папках, но чтобы делиться и править кодер-файлы, придётся либо делать их копию, либо засорять своб папку coder скрытой папкой .git :x
и добавка изменений... их еще синхронизировать надо :x
файлы залитые через изменения и синхронизацию в этих виндовых прогах числятся за другим чуваком :x
И возможно это связано с кодировкой UTF-16LE Coder файлов, а не с фейковым емэйлом, как я подумал :x
Я был морально готов к какой-нибудь жопе, но чтобы так...
Посмотрим, если кто-то внесёт правки, как оно там будет работать, может и вправду удобная система.

Там можно сделать так чтобы сразу подхватывались все изменения из другого репозитория в онлайне. То есть я в gist.github.com создал запись кодер файла, вот пускай он оттуда подхватит и сделает типа жесткой ссылки на нтфс?

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

Хз, чем тебя не устраивают скрытые папки - мне они лично ничуть не мешают. Явно удобней, чем в гребанном SVNе, по крайней мере, и перекидываются легко. Единственное, что в этом плане в винде неудобно (в отличие от пингвинов, под которые гит и делался), это что за переключением их видимости далеко тянуться. Но я себе давно настрочил переключалку да прикрутил вот так. Саму прогу можешь скачать тут, а Open++ тута. Есть и альтернативы - например, код обновления проводника я стырил из HiFiTo.

Для TortoiseGit штатный русский перевод ужасен. Я как на него взглянул, так сразу и удалил - решил, что лучше уж на инглише. Но сейчас потихоньку свой делаю (ни строчки, переведенной вслепую, куда не дотянулся, оставлено на английском). Вот, просто запихнуть dll-шки в папку TortoiseGit\Languages\ и в настройках выбрать русский. Может, попроще будет ориентироваться.
Last edited by F. Phoenix on Fri Feb 22, 2013 9:47 pm, edited 2 times in total.

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

Некоторые команды:

init (инициализировать): Создает в текущей папке новую репу.
clone (клонировать): Скачивает внешнюю репу (например с GitHub) на хард.
pull (затянуть): Обновляет текущую репу из внешней.
fetch (получить): То же самое, но без слияния хранилищ в одно (не совсем понял этот момент).
push (протолкнуть): Заливает локальные изменения во внешнюю репу.

commit (фиксировать): Фиксирует текущие изменения, т.е. состояние рабочей папки.
checkout (извлечь): Переключает рабочую папку на другое состояние, зафиксированное ранее.

cherry-pick (забрать изменения): Копирует отдельные коммиты (т.е. наборы изменений) с другой ветки на текущую; с возможной необходимостью ручного разрешения конфликтов. Одна из моих любимых команд, т.к. почти всегда юзаю более информативную фиктивную историю. А в TortoiseGit ей удобно, например, менять последовательность коммитов или редактировать их описания: просто переключаешься на последний удовлетворяющий коммит, создаешь там временную ветку и забираешь все последующие коммиты в том виде, в каком хочешь их видить. Потом старую ветку можно перекинуть на новую вариацию, а временную удалить.
rebase (перебазировать ветку): Наоборот насаждает все коммиты текущей ветки в голову выбранной (в принципе, суть примерно та же).
reset (перебросить ветку): В git-е и ветки, и метки являются просто ссылками на какой-либо коммит, и эта команда позволяет просто переместить ветвь, т.е. изменить объект, на который она указывает.

gc (собрать мусор): А-ля чистка корзины. Под мусором имеются в виду все коммиты, на которые больше не указывают никакие ссылки. По дефолту гит их удаляет только спустя 2 недели, но эта команда сразу все чистит.

Полный русскоязычный мануал
Last edited by F. Phoenix on Sun Feb 24, 2013 5:42 pm, edited 2 times in total.

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

Кстати, GitHub-у есть еще менее популярная альтернатива Bitbucket. Залил ради теста эту репу и туда: тыц. Что лучше, не знаю - от обоих не особо в восторге, но ни тот, ни другой не понимают UTF-16 (1|2), а последний вроде поменьше тормозит. Делитесь опытом, кто пробовал оба.

Offline
Posts: 19
Joined: Fri Jan 14, 2011 3:29 am

Post by lexa »

Lenchik, как альтернативу для работы с гитом можно использовать TortoiseHg. Не смотря на то, что эта программа в первую очередь для меркуриала (похожая на гит система), благодаря плагину hggit умеет работать и с гитом (можно и с svn научить работать). Интерфейс у неё самый удобный, лично для меня.

Меркуриал тоже создаёт свою папку в локальном репозитории (.hg), но она не скрыта и всегда можно легко удалить.

Вариант: можно хранить раздельно рабочие файлы и файлы репозитория. Периодически закидывать изменённые файлы в репозиторий и обновлять. Или сделать жёсткую ссылку на директорию (mkdir /j, с ключом "/d" не сработает).

F. Phoenix, я сижу на обоих. Bitbucket лучше, если нравится работать с меркуриалом (альтернативой гиту; хотя Bitbucket поддерживает и гит) и заводить приватные репозитории. Например, я храню весь рабочий код в приватных репозиториях на Bitbucket.

Фигово, что у обоих проблемы с UTF-16. Но думаю это косяки лишь веб-интерфейса.

Offline
Posts: 176
Joined: Sat Dec 24, 2011 4:05 pm

Post by F. Phoenix »

Хм, а проблемы эти, похоже, из-за самого гита. Вот он че в диффе выдает:

Code: Select all

6d0bac78efd801f996becc5a33b4a138cb5519c4
 KDJ/FindReplaceEx_1049.lng | Bin 0 -> 5562 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/KDJ/FindReplaceEx_1049.lng b/KDJ/FindReplaceEx_1049.lng
new file mode 100644
index 0000000..e984eb6
Binary files /dev/null and b/KDJ/FindReplaceEx_1049.lng differ
Хотя конкретно этот файл я без понятия, зачем KDJ сохранил в UTF-16: я его изначально переводил в UTF-8 и все прекрасно пашет - может все скрипты в него и конвертнуть... единственное, не уверен на тему поддержки китайского.

Тем не менее, основной кодировкой Акелпада является именно UTF-16, и многие файлы в UTF-8 просто будут восприняты как ошибочные. Вон, те же кодерские.

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

Offline
Posts: 19
Joined: Fri Jan 14, 2011 3:29 am

Post by lexa »

Хм, у меня coder-файлы на гитхабе лежать без проблем и видны через веб-интерфейс. При клонировании в локальный репозиторий AkelPad по-прежнему определяет их как UTF-16 LE.

С встроенным дифом есть некоторые сложности, но они отпадут, если использовать WinMerge. После обновлений плагина Coder всегда им сравниваю разности канонических файлов подсветки с моими.

Даже повесил в менюшку (в "Меню вкладок"):

Code: Select all

-"Сравнить файлы" Call("Scripts::Main", 1, "l_Merge.js") Icon("D:\WinMerge\WinMerge.exe", 0)
l_Merge.js (отдаёт WinMerge файлы с текущей вкладки и вкладки правее):

Code: Select all

var current, next;
var file1, file2
var shell;

current = AkelPad.GetEditWnd();
AkelPad.Command(4316);
next = AkelPad.GetEditWnd();
AkelPad.Command(4317);

file1 = AkelPad.GetEditFile(current);
file2 = AkelPad.GetEditFile(next);

shell = new ActiveXObject('WScript.Shell');

shell.Exec('D:\\WinMerge\\WinMerge "' + file1 + '" "' + file2 + '"');
Post Reply