понедельник, 24 октября 2011 г.

Как восстановить в git файл, удаленный с помощью git rm ?

Октябрь 24, 2011

Предположим, что мы для некого файла выполнили команду git rm.
А потом вдруг неожиданно решили, что этот файл нам все-таки нужен!

Спасенье есть! Вот оно:

git checkout – <deleted_file>


P.S.: 
Есть еще замечательная команда:
git ls-files --deleted 

, возвращает список удаленных файлов.

среда, 19 октября 2011 г.


Октябрь 19, 2011

11:31 am: (Git) Revert files with changed mode, not content
(repost http://www.commandlinefu.com/commands/view/3527/git-revert-files-with-changed-mode-not-content)

Скрипт модифицирован.
git diff --numstat | awk '{if (($1 == "0" && $2 == "0") || ($1 == "-" && $2 == "-")) print }' | cut -c 5- | sed 's%^\(.*\)$%"\1"%' | xargs git checkout HEAD

вторник, 30 августа 2011 г.

Как с помощью git создать патч, а потом применить его не используя git ?


Август 30, 2011

Создание патча
git diff --no-prefix > some_thing.patch

Применение патча
patch -p0 < some_thing.patch

И не забывайте про опцию -pN. От нее зависит в какой директории вы должны находиться при выполнении команды patch

Она задает кол-во слешей, которое будет "отброшено" при определении пути к файлу, который нужно пропатчить (см. содержимое файла some_thing.patch)

Детальную информацию про patch можно почитать тут:
https://www.evernote.com/shard/s27/sh/3ac87731-9990-4e4c-870d-9a970a359fea/188b8af9e105e7431bb706f6d784ad4c

вторник, 23 августа 2011 г.

JavaScript in Internet Explorer...

Август 23, 2011

Mozilla Firefox и Google Chrome (оба под Linux) воспринимают символ "евро" € как один "физический" символ, а вот Internet Explorer 7/8 -- как 2 символа.

Сие поведение было обнаружено сегодня.
Нижеприведенная функция (JavaScript) в IE7/8 возвращала false, тогда как в "остальных" браузерах (см. выше) -- true.

function() {
var regExp = /^[^\d\s]\s\d+[.,]\d+$/;
return regExp.test('€ 123.00');
}

А вот следующая функция работает корректно уже и в IE7/8

function() {
var regExp = /^[^\d\s]+\s\d+[.,]\d+$/;
return regExp.test('€ 123.00');
}

"Мистика"! :-D

четверг, 3 марта 2011 г.

Решена проблема с поломкой конфигурационных файлов в /etc в Linux


Март 3, 2011

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

В общем вот выход из ситуации.
- Устанавливаете Linux. Устанавливаете git.
- Переходите в директорию /etc.
- Создаете репозитогий git:
git init
- Добавляете все файлы:
git add
- Делаете коммит:
git commit

Все! Теперь любые изменения можно увидеть выполнив команду
git diff


четверг, 6 января 2011 г.

Git. "Для тех, кто в танке..."


Январь 6, 2011

Последние несколько дней понемногу читаю и разбираюсь с git.

Несколько заметок.

1. Как я понял, gitosis служит для того, чтобы реализовывать нормальные права доступа к git-репозитариям для разных пользователей. В противном случае (при использовании ssh и если gitosis не использовать) все пользователи будут иметь права на запись в репозитарий. Хотя может быть я что-то не так понял. Я не уверен на счет вышенаписанного.

gitosis работает следующим образом. В когда мы добавили в файл /home/git/.ssh/autorized_keys ключ для пользователя, который имеет права администрирования репозитариев, то в данный файл не просто добавился ключ,а добавилась команда, которая будет запускаться при входе через ssh на данный сервер. Т.е. при входе через ssh на сервере запускается команда gitosis-serve, которая перехватывает соединение и обрабатывает все последующие команды. Таким образом мы не можем зайти с помощью клиента ssh на сервер под пользователем git (для которого настроен gitosis). Под данным пользователем может работать только git.

2. Есть возможность более тонкой настройки прав. Для этого можно использовать Gitolite.
http://progit.org/book/ch4-8.html
Gitolite allows you to specify permissions not just by repository, but also by branch or tag names within each repository. That is, you can specify that certain people (or groups of people) can only push certain “refs” (branches or tags) but not others.

3. Книга про git.
http://progit.org/book/