четверг, 14 ноября 2019 г.

Запушить локальный репозиторий на bitBucket

У вас есть какой-то проект и вы подключили Git. Теперь можно следить за изменениями, переключаться между ветками, откатывать изменения и захватить мир. Но в какой-то момент возникает потребность удаленного доступа к репозиторию и тут возникает вопрос, как перенести локальный репозиторий на Битбакет (Гитхаб или любое другое хранилище)

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

В первую очередь нужно создать собственно репозиторий на битбакете.
Дальше там есть инструкция следуя которой всё должно получиться
Get your local Git repository on Bitbucket
Step 1: Switch to your repository's directory
cd /path/to/your/repo
Step 2: Connect your existing repository to Bitbucket
git remote add origin git@bitbucket.org:jeanstonic/project.git
git push -u origin master

но я получил

fatal: repository 'https://bitbucket.org/jeanstonic/project.git/' not found

*ссылка на репозиторий может быть как http так и ssh

Тут один подводный камень, о который я и споткнулся. Поскольку репозиторий локальный и создан для себя, то я не удосужился заполнить имя пользователя и главное email
$ git config user.name "php knight"
$ git config user.email "email@email.com"

$ git push -u origin master
и успех

среда, 13 ноября 2019 г.

REGEXP: найти строки с повторением паттерна

Рефакторю код по экспорту в ХМЛ
Код добавляет в ХМЛ ноды

$login->addChild('login_date', $dat['login_date']);
$login->addChild('mac', $dat['mac']);
$login->addChild('access_point', $dat['access_point']);

//и ещё строк 10-15 в том же ключе

Внутренний перфекционист кричит, что 15 одинаковых строк - это #говнокод и надо это заменить на

foreach ($dat as $key => $value) {
$login->addChild($key, $value);
}
Правда всегда есть риск, что некто злонамеренный (папиредники) сделал какую-то херню в духе
$login->addChild('mac', $dat['mac_address']);
и тогда всё в огне

Руками эту муть перебирать лень да и если попадется что вроде "cpdId", то точно пропустишь

И нас спасает regexp при чем простой как двери
~('.+?').+\1~
который подсветит всем строки в которых есть
'.+?' - символы в кавычках
.+ - потом какие-то ещё символы --
\1 - а потом то, что было найдено в первой группе в скобках
Но мы немного усложним задачу и проверим точно ли везде простое присваивание выражение приобретает вид 
('.+?'), \$dat\[\1
и мы видим
что а) в одном месте у нас обработка спецсимволов б) в остальных местах имя поля на входе и выходе совпадает

* - в последнем варианте нет ~~ потом что мы используем регулярное выражение в поиске ИДЕ, а не собственно в коде