QuillMeantTen has asked for the wisdom of the Perl Monks concerning the following question:

Greetings fellow monks,
I'm currently working on my second project using catalyst and, as before, I do all my work under git. Thing is, I haven't the foggiest about what files (beside the model, views, controller) should really be pushed. Since one should not push to a repository anything that can be generated from what is already there I'd really like to know the current best practices.

Replies are listed 'Best First'.
Re: Catalyst versionning
by anonymized user 468275 (Curate) on May 06, 2016 at 18:22 UTC
    Applying a trick I learned from Edward de Bono, create a good idea out of an absurd one, namely become a time traveller...

    Although design including code design moves forward in time, as soon as those are complete, you should ideally jump mentally into the future, starting with how the system will be supported and maintained after it is live and work backwards to the last relevant task which might be deployment of a given release into production. Does git cover it or do you need additional tools such as puppet? Will there be configuration files and installation scripts? What will the UAT and test environments be like and how will they be provisioned from your repository? How will you create the configuration data that distinguishes between say production, test and development environments and what tools will use that data? Only when you know that can you wind the clock back to the end of the development cycle where you can now make a list of deliverables by type, from your code design and implementation plan. After that you can jump back to where you are now in reality, design your git repository using your own correct rule (only push what is custom-built otherwise configure it to be installed wherever its needed) and you are good to go forward.

    One world, one people

      I read your answer right away but I had to spend at least a night sleeping on it before it started making sense. I, for now, do not have enough experience in the field to apply your advice immediatly but thanks for the guideline and telling me where (and more importantly, how) to look.

        Real world example to help you understand:

        Some of the source code for our projects is generated from Math Lab models. If we didn't push the source code generated from those models, building would require having Math Lab and the code generation tools installed. These are both very expensive, so the company, understandably, wants to only provide it to the developers who actually do the modeling.

        Other reasons for pushing generated code include the use of custom tools to generate the code. Sometimes such tools are difficult to support. Other times, they must be kept private for various reasons.