Контакты
Местоположение
Россия, Калининградская обл., Калининград (Кенигсберг)

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (39)

Лучшие ответы пользователя

Все ответы (56)
  • Git как держать одновременно две ветки в рабочей копии?

    Lobotomist
    @Lobotomist
    Software Developer
    Я вижу два варианта:

    1. Использовать два репозитория.

    Вы просто клонируете репозиторий еще в одно место и работаете с ним отдельно.
    - Весь репозиторий дублируется, но если он не очень большой по размеру - в этом нет ничего страшного
    - Переносить изменения между репозиториями надо будет через pull/push, просто commit-ов будет недостаточно. Например, в репозитории (а) делается коммит в ветку (1), в репозитории (б) делается fetch из репозитория (а) ветки (1) и дальше ее коммиты могут уже черри-пикаться или как-то еще переносится в ветку (2).

    2. Использовать дополнительную рабочую директорию (git 2.5+)

    В новой версии git 2.5 появилась команда для создания дополнительной рабочей директории: git worktree. Если есть возможность обновить git, это наиболее удобный вариант. Нужно иметь ввиду, что фича пока эксперементальная.
    Ответ написан
  • Как ускорить rsync?

    Lobotomist
    @Lobotomist
    Software Developer
    В процессе выяснения деталей в комментариях к вопросу было найдено решение.

    В данном случае синхронизация выполнялась без использования опции `--times`, которая сохраняет время модификации файла при синхронизации. При этом не была использована опция `--size-only`, благодаря которой файлы с одинаковыми размерами считаются одинаковыми вне зависимости от времени изменения.
    И получается, что даты изменения у всех уже синхронизированных файлов отличаются, и rsync при повторном запуске считает эти файлы потенциально разными и считает их контрольные суммы, чтобы сравнить их по содержимому. На это и уходило время.

    Добавление опции `--size-only` существенно сократило время анализа файлов перед началом передачи.
    Хотя, на мой взгляд лучше вместо этого по умолчанию всегда использовать `--times` (в том числе в составе `-a`), если возможно.

    Кроме того, была использована опция `-v`, которая выводит информацию о синхронизируемых файлах, что тоже могло замедлять процесс, хотя, скорее всего ,не значительно.
    Ответ написан
  • Как обновлять код в двух репозиториях?

    Lobotomist
    @Lobotomist
    Software Developer
    В таком случае стоит вынести бэкенд в отдельный репозиторий и подключать его как зависимость. Нормальных вариантов решать это через git мне не известно и я очень сомневаюсь что они есть по той простой причине, что git для решения таких задач не предназначен. По сути у вас получается три продукта, связанных между собой разными связями. Две версии фронтэнда (два продукта) связаны между собой общей "основой" (кодом), то есть это аналогично "наследованию" в ООП от общего базового класса. А от бэкенда они "зависят". Причем, могут зависеть от разных его версий (скорее всего будут, рано или поздно). То есть это больше похоже на "композицию" в терминах ООП. Так вот git - он не призван решать проблему зависимостей одного проекта от другого. Для этого нужно использовать менеджер зависимостей. Не знаю, на чем у вас написан проект, но для php это будет composer, для nodejs - npm, для python - pip(pyenv, poetry) и т.п.

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

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

    Lobotomist
    @Lobotomist
    Software Developer
    Добавлю еще одну возможную причину. На время написания комментария человек не знает - является ли это решением или нет. А если оказывается, что комментарий решает проблему - автор вопроса доволен, проблема решена. А то, что нужно отметить вопрос как решенный - об этом он (и тот, кто ему отвечал) забывает (вообще не думает). Я часто встречаю такие вопросы, заранее не понятно - решит твой вопрос проблему человека или нет. Например, не работает у кого-то соединение по ssh. И причин может быть много разных. Тебе в голову пришла пара возможных вариантов - ты пишешь их в комментариях, задаешь уточняющие вопросы. А потом оказывается, что какое-то из твоих продположений подошло.

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

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

    Lobotomist
    @Lobotomist
    Software Developer
    Как я понимаю, проблема ваша в том, что вы ищете не в том репозитории =) Это репозиторий libssh2.
    Вот новость об исправлении уязвимости на оф. сайте libssh. Оттуда мы можем получить ссылку на клонирование репозитория:
    git clone https://git.libssh.org/projects/libssh.git libssh


    Кроме того, доступен просмотр через веб интерфейс. Можно найти там тег libssh-0.8.4 и посмотреть соответствующие коммиты: https://git.libssh.org/projects/libssh.git/log/?h=...
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (1)