Локальные копии скетчей или контроль версий
- Войдите на сайт для отправки комментариев
Втр, 25/12/2018 - 16:10
Здравствуйте. Приходится постоянно переносить скетчи с одного компа на другой при помощи флешки. В итоге часто путаюсь и случайно заменяю последнюю версию более старой. Где-то попадалась инфа что среда ардуина может архивировать скетчи, но к сожалению найти не получается. Ткните носом как это настроить пожалуйста.
Git настроить, и всё.
или подключить ко всем компам, к примеру. Гуглдиск и редактировать скетчи на нем
DIYMan, а можно типа курсов по этому? Ну или гайд какой-то. Типа пойти туда, нажать там.
Сейчас имею представление о коммите изменений в гитхаб как о кнопке "запостить", то есть по факту я редактирую файл в вебинтерфейсе гитхаба.
Редактор - встроенный в FAR, так что как-то давайте без Атома (не встаёт на 7 без дотнетфрамеворка, шваль). А потому что дроволёт мой на 32-нанометровом ноутбучном пне, которому 6 лет, и хрен будет работать без фризов под дотнетфрамеворком, и плевать ему будет сколько там у меня гектаров памяти и какой ссд. А я эти микрофризики когда я мышкой по меню тыкаю, а оно не сразу отзывается, и там делей то тьфу сотни миллисекунд, но меня эти сотни мсек ой как бесят, я прям ярость выхватываю.
Максимум что соглашусь поставить себе - сублайм, если есть на него какие-то плуги для гита, и всё это пашет благополучно на 7 и не надо обновлять директх или накатывать десятку. КОМП ДРЕВНИЙ. вот прям древний древний. И бабла обновлять не предвидится.
В общем, хочу приобщиться к благам современной девелопцивилизации, и желательно бесплатно. А? А? Возможно, не?
Меня не обламывает сделать F5 в папку Windows-Git клиента, закоммитить и синкнуть. Но я и нечасто бегаю между компами.
Нашел! Ключевое слово openWindAir.
Про Git тоже подумаю.
openWindAir синхронизирует папки?
DIYMan, а можно типа курсов по этому?
Про то, как работать с гитом? Курсов всяких есть, например: https://githowto.com/ru Графические оболочки тоже есть, например, если юзать сервис Github, то тамошний Github desktop.
Если вкратце, то: создаём на одном компе репозиторий, добавляем в него файлы, коммитим, пушим в хранилище. Потом на любом из компов клонируем репозиторий изханилища, и всё. Далее - редактируем на любом из компов любой файл в репозитории, коммитим, делаем push. На другом компе делаем pull, при необходимости - разруливаем конфликты, коммитим, делаем push. В любой момент (например, для тестирования "скользких" изменений) можно сделать ветку, переключиться на неё, работать с ней.
Короче, там возможностей - мама не горюй, сам пользуюсь далеко не всеми. Для меня самое основное - это версионность и отсутствие необходимости тягать между компами все потроха (выкачиваются только изменения). Ну и, когда в проекте не один разработчик - снимаются головняки вида "ты сюда не ходи, снег башка попадёт".
Для совместной работы юзаю Github, да и не для совместной - тоже. Необходимости заходить на сайт гитхаба при этом - нет совсем, всё делается через гит.
В общем же разрезе - любой git-клиент по вкусу, и пофиг. Многие IDE уже давно умеют работать с git, вопрос только настроек.
Я ни разу не объяснялкин, хотя бы потому, что там реально кучу всяких фишек. По ссылке, что я привёл - самые основы, надеюсь, они лучше прояснят.
Пользуюсь ЯндексДиском(200Гб на всю оставшуюся бесплатно) .
И ИДЕ(несколько версий портабл для разных случаев) ,и , само собой , папка со скетчами находится на Яндекс диске.Захожу с трех компов когда мне удобно.Синхронизация быстрая т.к. скетчи занимают мало места.
До этого скетчи были в Dropbox.Просто в Дропбоксе на шару более 3Гб не получилось добыть.
openWindAir синхронизирует папки?
Нет конечно. Там есть бат файл и написано как при компиляции его запускать. Сам батник копирует скетч и бинарник при компиляции в определенное место.
Если использовать облачные диски, то какой там контроль версий?
Не представляю как делать ветки от мастера (или просто метки поставить) если пользоваться этими сервисами.
Если отвечать на "Локальные копии скетчей или контроль версий" то:
Локальные копии скетчей - HET! ;(
контроль версий - Обязательно и никак иначе.
Я за GIT. Пользовался как-то GIT + Bitbucket, вполне удобно.
Если использовать облачные диски, то какой там контроль версий?
В смысле? Какой контроль версий? С Яндекс Диск и Дропбох ты как -будто на одном компе работаешь- сохранил скетч дома ,пришел на работу и тот -же скетч продолжаешь кодить.Завершил , сохранил и ,придя домой, залил в дуню.Или я тебя не понял?А версии - при помощи "сохранить как" и новое имя.
DIYMan, спасибо за инфу, почитаю.
nikolaki - вы реально не знаете такого термина, как "система контроля версий" - или это просто в полемическом запале написано? С CVS , RCS итому подобное - никогда не работали?
Попробуйте - узнаете много нового.
А версии - при помощи "сохранить как" и новое имя.
В разрезе темы: это не версии, это просто файлы с разным содержимым. Система контроля версий - позволяет несколько больше (несколько - это сильное такое преуменьшение). И обеспечивает версионность, исходя из совсем другого набора данных, нежели просто "копия файла". Очень актуально, когда над проектом работают хотя бы полтора землекопа. Да даже если и один пахарь - тоже очень удобно: я всегда могу по желанию вытащить проект в любом промежуточном состоянии (а проект почти никогда из одного файла не состоит) и отдать его юзеру на съедение. При этом продолжая работать над проектом, и даже имея в гите все новые, но ещё не выпущенные в продакшн изменения.
Короче, гит надо юзать, двадцать первый век, как никак. Конечно, если есть потребность. Т.е. я не настаиваю, и сам копии проектов скидываю на гугльдиск и на флешку (давнишняя паранойя про яйца в одной корзине), но каждодневные свидания - с гитом определённо имею.
Короче, гит надо юзать, двадцать первый век, как никак. Конечно, если есть потребность. Т.е. я не настаиваю, и сам копии проектов скидываю на гугльдиск и на флешку (давнишняя паранойя про яйца в одной корзине), но каждодневные свидания - с гитом определённо имею.
я в линуксе раньше начинал c RCS, сейчас в основном WinCVS пользую с размещением репозитория на Гугль-диске. В итоге как бы сетевая система получается с доступом с любого компа.
Единственное, что никак не могу освоить - это ветви (branch). Вот, скажем, в какой-то момент я выделил в проекте новую ветвь, и написал в ней новый метод А. А в основном проекте за это время добавил метод В. В обоих ветках по-отдельности все отладил. Как мне теперь слить ветви, чтобы в конечной версии были последние изменения из обоих ветвей?
Как мне теперь слить ветви, чтобы в конечной версии были последние изменения из обоих ветвей?
https://git-scm.com/book/ru/v1/%D0%92%D0%B5%D1%82%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2-Git-%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-%D0%B2%D0%B5%D1%82%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B8-%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D1%8F
Вкратце: создаём ветку "git checkout -b "имя ветки"", переходим в неё, делаем там, что надо, убеждаемся, что всё зашибись, переходим обратно в master "git checkout master", потом "git merge "имя ветки, с которой сливаем"". И всё сольётся, конфликты слияния, ессно (если возникнут) - надо будет разрешить, и всё.
По ссылке - годная статья ;)
nikolaki - вы реально не знаете такого термина, как "система контроля версий" - или это просто в полемическом запале написано? С CVS , RCS итому подобное - никогда не работали?
Попробуйте - узнаете много нового.
Честно сказать - не знал , т.к. не нуно было. Работаю сам , быдлокодом не делюсь.Поэтому даже не искал что то подобное. А теперя , почитав, понял- нуная штука.После праздников -сразу с утра 24 февраля- начну внедрять в свою систему.
Всех с НАСТУПАЮЩИМИ НОВОГОДНИМИ ПРАЗДНИКАМИ!Заранее.А то потом не смогу написать.
DIYMan, спасибо за инфу!
DIYMan, ты бы какой пошаговый ликбез\мастеркласс провел, штоли. Если время есь, канеш.
Да там все просто. Поставил себе GUI к git. Теперь управлять стало проще и надежнее. Пожалуй на нем и остановлюсь.
Самый простой способ: редактировать файлы на флешке - тогда там будет самая последняя версия.
Для командной строки есть программка 10-летней давности nnBackup (http://www.nncron.ru/index_ru.shtml) - она может синхронизировать каталоги. Каталоги и файлы с русскими именами она нормально обрабатывает, но иногда были проблемы когда в имени попадались некоторые нестандарные символы типа кавычек.
На том же сайте есть и более свежая программа nnSync (которая по описанию тоже может синхронизировать каталоги), но я ей не пользовался (пока хватает nnBackup).
http://habrahabr.ru/post/205204/
мож до пользы будет.
Смысл следующий: указываешь какие папки обрабатывать и куда класть.
Оно берет те папки и помещает в НАЗНАЧЕНИЕ. В назначении делает папку с именем текущей даты и времени.
Главный прикол в том, что те файлы, которые небыли изменены в предыдущей копии - они ложаться как хардлинки на ту предыдущую копию. То есть место тратится только на измененные файлы.
Не самое лучшее решение, но вполне себе годящееся!
по науке - корзин должно быть три и в разных географических координатах. Только это обеспечит минимальный достаточный уровень надежности! Да, яйцы придеццо разрывать! Не покладешь их рядушком, и не почухаешь все скопом.
Но мы ведь о целкости и сохранкости говорим, и не об удобстве и радости почухиваний )
Всех с Новым годом!
Подскажите по глупому вопросу. Использую Ардуино IDE. Как известно, перед компилированием или даже перед проверкой скетча IDE сохраняет скетч, без разницы, новый ли это скеч или ранее сохраненный. Как делать откат в случае, если внесенные изменения не принесли желаемого результата и скеч вообще перестал работать должным образом? Каждый раз делать копию папки и из нее начинать редактирование скеча?
Подскажите по глупому вопросу. Использую Ардуино IDE. Как известно, перед компилированием или даже перед проверкой скетча IDE сохраняет скетч, без разницы, новый ли это скеч или ранее сохраненный. Как делать откат в случае, если внесенные изменения не принесли желаемого результата и скеч вообще перестал работать должным образом? Каждый раз делать копию папки и из нее начинать редактирование скеча?
Вся эта тема - ответ на Ваш вопрос. Используйте любую систему контроля версий, например, git.
Всех с Новым годом!
....... Как известно, перед компилированием или даже перед проверкой скетча IDE сохраняет скетч,
без разницы, новый ли это скеч или ранее сохраненный........
Чтобы этого не происходило достаточно убрать вот тут мааааааааааааленькую птичку:
Чтобы этого не происходило достаточно убрать вот тут мааааааааааааленькую птичку:
намек понял. Пошел на охоту! Спасибо за подсказку! Еще раз с Новым годом!
А вот тут этот символ появляется если скетч изменён и не сохранён
и исчезает после сохранения:
Подскажите по глупому вопросу. Использую Ардуино IDE. Как известно, перед компилированием или даже перед проверкой скетча IDE сохраняет скетч, без разницы, новый ли это скеч или ранее сохраненный. Как делать откат в случае, если внесенные изменения не принесли желаемого результата и скеч вообще перестал работать должным образом? Каждый раз делать копию папки и из нее начинать редактирование скеча?
Вся эта тема - ответ на Ваш вопрос. Используйте любую систему контроля версий, например, git.
Вобще не совсем так. Система контроля версий предполагает что разраб делает комит. И если он не забывает это - ОК. Откат разумеется до закомиченой ревизии. И если не комитить каждый раз то система контроля версии не спасет от потерь самого свежего. А вот если дисциплинировано комитить каждый чих, то.. можна ограничится и копированием дорабатываемого файла ))) В общем систему контроля версий для професиональной работы, да еще и в коллективе - незаменимая и обязательная. Без бранчей, мерджей откатов и истории доработок просто немыслемо. Много лет пользуюсь SVN. Но дома для ардуины ограничиваюсь копиями дорабатываемого файла после успешного этапа разработки и в ответственных точках. Кесарю - кесарево, слесарю - слесарево ;)
Интересно бы автоматизировать процес, чтоб из IDE после каждой успешной сборки автоматом вызывался некий батничек который делел нужное, в git-е комитил или копированием и архивированием - не суть. В VS такое делается запросто, при рабооте просто с gcc тоже запросто. А тут - надо поискать возможность.
Для этого в Arduino IDE есть хуки (hooks). В platform.txt настраивается. Можно запускать до компиляции или после любые батники.
http://arduino.ru/forum/obshchii/nastroika-kompilyatsii-v-arduino-ide#co...
Спасибо, гляну.
Для комита как раз временная директория не интересна, а интересна директория с оригинальными исходниками, из которых делается копия.
Вот переменной для этой директории и не удалось найти (может плохо искал).
Не оно?
{source_file} - the path to the source file
Немножко не оно, на нашелся как то сам собой build.source.path
в платформ.локал.тхт вызываю постбилд.локал передавая переменные
recipe.hooks.sketch.postbuild.0.pattern = {runtime.platform.path}/postbuild.local {build.source.path} {build.path} {build.project_name} {source_file}
в постбилд.локал просто вывожу то что передали
#!/bin/bash
echo build.source.path $1
echo build.path $2
echo build.project_name $3
echo source_file $4
вывод:
build.source.path /home/alex/Arduino/sketch_jan05b
build.path /tmp/arduino_build_333029
build.project_name sketch_jan05b.ino
source_file {source_file}
Типа от build.source.path и плясать можно.
Ноты для пляски наковырял.
The pre- and post- build hooks are listed as:
For linking, objcopy and savehex, these are incorrect. The software currently recognises:
It looks like I can edit the wiki myself, but I'm not sure if that's the correct thing to do. I'm new to this.
Но не вытанцовывается в целом.
В файл \Arduino\hardware\arduino\avr\platform.txt докинул строку
Победил вобщем.
WinRAR.exe в папку с arduino.exe закинул. Всю папку свежесобраного проекта ужимает и именует архив по текущему времени. Теперь еще с либами аналогично запилить бы.
Что-то тема про GIT заглохла, пора реанимировать )))
Лично я пользуюсь гитом для всех своих проектов. Для каждого проекта сделал отдельный репозиторий на bitbucket.org + один репозиторий для библиотек.
Стараюсь коммитить и заливать все изменения вносимые за один подход к компу. Очень удобно, можно потом отследить какие изменения вносил и откатить, если нужно. Ветвлением практически не пользуюсь.
Для изменений в коде пользуюсь редактором Visual Stusio Code с установленным плагином для Ардуино. В нем есть интеграция с гитом. Все локальные незакоммиченные изменения подсвечиваются с возможностью отката. Единственное что не научился еще делать - это заливать скетчи в ардуинку из этого редактора, т.к. он почему-то не видит подключаемых библиотек и вообще выдает ошибку "The working file "/xxx.ino" is not under the workspace folder, the arduino extension might not work appropriately."
Если кто подскажет как настроить заливку скетчей, или даст ссыль, где это уже сделано - буду благодарен.
Победил вобщем.
WinRAR.exe в папку с arduino.exe закинул. Всю папку свежесобраного проекта ужимает и именует архив по текущему времени. Теперь еще с либами аналогично запилить бы.
А под LINUX стандартными средствами?
Для изменений в коде пользуюсь редактором Visual Stusio Code с установленным плагином для Ардуино. В нем есть интеграция с гитом. Все локальные незакоммиченные изменения подсвечиваются с возможностью отката. Единственное что не научился еще делать - это заливать скетчи в ардуинку из этого редактора, т.к. он почему-то не видит подключаемых библиотек и вообще выдает ошибку "The working file "/xxx.ino" is not under the workspace folder, the arduino extension might not work appropriately."
Если кто подскажет как настроить заливку скетчей, или даст ссыль, где это уже сделано - буду благодарен.
Плюс там есть плагин Git Graph (и еще куча других))) - чуть удобнее пользоваться. По поводу заливки скетчей - никаких проблем никогда не было. Плагин - Arduino от Microsoft. Сразу заработало из коробки. Все пути берет из установленной Arduino IDE
По поводу заливки скетчей - никаких проблем никогда не было. Плагин - Arduino от Microsoft. Сразу заработало из коробки. Все пути берет из установленной Arduino IDE
Я понял в чем у меня была проблема. У меня было установлено расширение С/C++ и поэтому язык в скетчах определялся как C++ (http://joxi.ru/8234VNQiDNlv4A), а нужно было выбирать arduino-output (http://joxi.ru/GrqK5QNHkeqLl2).
В этой панельке я кликнул на название языка и в выпадающем меню http://joxi.ru/v29DV0KTz0wxom выбрал Configure File Assotiation for .ino и там уже выбрал arduino-output в списке. Теперь все скетчи определяются нормально и ошибок не выдают. Может кому поможет.
Я понял в чем у меня была проблема. У меня было установлено расширение С/C++ и поэтому язык в скетчах определялся как C++ (http://joxi.ru/8234VNQiDNlv4A), а нужно было выбирать arduino-output (http://joxi.ru/GrqK5QNHkeqLl2).
Расширение С/С++ там стоит по умолчанию. У меня в скетчах в строке состояния тоже стоит С++, но все работает. Видимо, у вас другое расширение Ардуино, потому нужна дополнительная настройка
У меня Линукс, может быть в этом дело. А может я сам каким-то образом привязку к языку неправильную сделал.
У меня Линукс, может быть в этом дело.
А это легко лечится - http://www.oszone.net/27683/windows_10_clean_install
Нет, спасибо, не хочу на Винду возвращаться. Оно того не стоит.
надо попробовать под Линуксом, под виндой получилось и, даже понравилось, правда пока только с одного рабочего места, всё достаточно просто оказалось, не всё понятно с fork-нутыми правда