{"action":"created","issue":{"url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/3636","repository_url":"https://api.github.com/repos/MarlinFirmware/Marlin","labels_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/3636/labels{/name}","comments_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/3636/comments","events_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/3636/events","html_url":"https://github.com/MarlinFirmware/Marlin/issues/3636","id":151679506,"number":3636,"title":"Making forks for machines manageable","user":{"login":"Alex9779","id":6394581,"avatar_url":"https://avatars.githubusercontent.com/u/6394581?v=3","gravatar_id":"","url":"https://api.github.com/users/Alex9779","html_url":"https://github.com/Alex9779","followers_url":"https://api.github.com/users/Alex9779/followers","following_url":"https://api.github.com/users/Alex9779/following{/other_user}","gists_url":"https://api.github.com/users/Alex9779/gists{/gist_id}","starred_url":"https://api.github.com/users/Alex9779/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Alex9779/subscriptions","organizations_url":"https://api.github.com/users/Alex9779/orgs","repos_url":"https://api.github.com/users/Alex9779/repos","events_url":"https://api.github.com/users/Alex9779/events{/privacy}","received_events_url":"https://api.github.com/users/Alex9779/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/MarlinFirmware/Marlin/labels/Discussion:%20Developers","name":"Discussion: Developers","color":"FF77AA"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2016-04-28T15:56:11Z","updated_at":"2016-05-06T09:46:11Z","closed_at":"2016-05-06T09:46:11Z","body":"Hey dear Dev team,\r\nI have been thinking about this for a few days now and maybe I am missing something but I try to describe what I am looking for.\r\n\r\nI forked the repo to make a version of Marlin for my machine.\r\nThen I changed the files with the configuration to fit my machine.\r\nI changed Configuration.h, Configuration_adv.h, dogm_bitmaps.h, the PINs file for my board and Version.h.\r\nThen I tried to keep up with the Marlin development in RC and RCBugFix branch, you may have noticed, I opened some issues that you fixed very quick. Many thanks for that. I like to be at the bleeding edge, solve problems, help to find bugs and stuff, to improve the stuff I use. Either by real contributions or by testing and reporting.\r\nBut every now and then I was not able to merge the changes cleanly into my repo because of changes in the files, in lines, I had to change for my configuration.\r\n\r\nI am not a Git star, I am using it and I think I cover the basics so maybe I am not aware of some magic option or workflow which could solve my problems. So correct me if I am wrong...\r\n\r\nWhat I want to propose is that the base Marlin repo, which is not really functional for any machine, should move the files you typically have to change to configure Marlin to some other location, maybe a \"Default configuration\" folder or something.\r\nSo when loading the repo the firmware would not compile because necessary files are missing, but this could be covered in some documentation: \"To start copy file x, y, z, to the root directory and modify them.\"\r\n\r\nThis way the changes to configure Marlin for a machine are always in files which are not in the original repo. So they will be never changed by the Devs and merges will not end in conflicts.\r\nTo keep the \"user\" safe from using deprecated options in his config file you could use the already installed sanity checks. For example if an option is removed or renamed the check could add compiler warnings or errors just like you do now.\r\n\r\nThe result will be a fork that can easily keep up with changes in the main repo without having to solve conflicts because only one line of comment or something minor or unimportant for your specific config changed.\r\n\r\nI thought about other options, writing an own config file and include it, using undef so I have not to change the original file but there are borders I cannot cross, like the const for the bitmaps, or nested defines in if clauses.\r\n\r\nSo I wrote this to get some feedback if I do something wrong or if I understand something wrong. And if not if it would be possible to change something to make life easier...\r\n\r\nKind reagards,\r\nAlexander"},"comment":{"url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/comments/217399347","html_url":"https://github.com/MarlinFirmware/Marlin/issues/3636#issuecomment-217399347","issue_url":"https://api.github.com/repos/MarlinFirmware/Marlin/issues/3636","id":217399347,"user":{"login":"Alex9779","id":6394581,"avatar_url":"https://avatars.githubusercontent.com/u/6394581?v=3","gravatar_id":"","url":"https://api.github.com/users/Alex9779","html_url":"https://github.com/Alex9779","followers_url":"https://api.github.com/users/Alex9779/followers","following_url":"https://api.github.com/users/Alex9779/following{/other_user}","gists_url":"https://api.github.com/users/Alex9779/gists{/gist_id}","starred_url":"https://api.github.com/users/Alex9779/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Alex9779/subscriptions","organizations_url":"https://api.github.com/users/Alex9779/orgs","repos_url":"https://api.github.com/users/Alex9779/repos","events_url":"https://api.github.com/users/Alex9779/events{/privacy}","received_events_url":"https://api.github.com/users/Alex9779/received_events","type":"User","site_admin":false},"created_at":"2016-05-06T09:46:11Z","updated_at":"2016-05-06T09:46:11Z","body":"Thanks, I really did it.\r\nBut I still don't get what you wanna tell me. Since this is a beginners guide you are pointing me at, I assume I am too dumb to get it.\r\n\r\nI though about all the alternatives again and again.\r\nMerging: produces more conflicts and I have to take care that my altered config values are not overwritten again.\r\nRebasing: produces less conflicts because git tries to do my commit on top of the new changes\r\nCherry picking: is cool, I used it before but I have to select what I want.\r\n\r\nI had a look at the Dev repo, there you change the config structure to something that may be what I request now. Didn't dig into it very deep but it looks like...\r\n\r\nMy goal is to do an automated nightly build of the RCBugFix branch but this does not work out and maybe will not work in the current development state.\r\nThere are several prerequisites, at first the config has to be independent from the code base and the changes made may not include changes to configuration options, deprecate options or introduce new ones.\r\nLooking back at what happend this is not guaranteed at the moment, RCBugFix does not only fix bugs but also reorganizes the code...\r\n\r\nSo I am going to wait and do it with merging as I do not want to rewrite the history in a public repo every time with rebasing..."}}