carpediemevive Posted December 19, 2011 Report Share Posted December 19, 2011 I'm trying to come up with the best workflow I can to support my projects, and I'm wondering if I can take advantage of some useful features in Plastic to help me. I figured I'd ask the community at large and see what they think is the best solution. I have a common code repository that I use in basically every project I write. This library basically works as an architectural aid, and helps do a lot of the plumbing on projects. It has it's own development path that doesn't correlate to any particular project at all. What tends to happen is there will be some code written for a particular project I feel can be refactored out and put into the library and utilized moving forward on new projects, and that's done when I get around to it in-between active work on any one project. Typically, so projects compile when they are checked-out, each project has a DLL of the library (at the appropriate version), however, when I am working on the library I do sometimes use an active project and remap the dependency from the DLL to the actual checked out project. I was thinking about using XLinks, but it seems that requires an additional repository (1 for my library, 1 for the project, and 1 XLinked repository). Given that I use this on so many projects, I'm hesitant to add additional repositories just for this functionality. I then saw the use of the "mount" key word in the selector and I'm wondering if this would be useful for me. I'm thinking I'll create a second (non-versioned) project file for the active project that references the dependency on the library project, and mount the library project somewhere inside the active project. Does anyone do this now? Does it work out? Link to comment Share on other sites More sharing options...
manu Posted December 19, 2011 Report Share Posted December 19, 2011 Hi carpediemevive, the "mount" feature is not available for 4.0 sorry Can you give us more details about the common code repository? All the code is in main branch? How do you use it.... Manu Link to comment Share on other sites More sharing options...
carpediemevive Posted December 19, 2011 Author Report Share Posted December 19, 2011 Previously all the code would have been in the main branch. I am switching over the workflow to a more branch-per-task workflow so I expect in the future to have features on different branches that I would only merge in after testing. I wasn't aware the mount feature wasn't in 4.0! No real loss, as it wasn't a feature I was using in my day to day development anyway. Really the focus of the library is to aid general application architecture and make it easy to write applications the "right" way. This is in a .NET world, so I'm creating applications using a M-V-VM pattern, and since I don't want to introduce third party libraries into the environment, I've written my own M-V-VM backbone as well as some other things like an IOC container and what not. The purpose of it is to be used on every single application. Typically it evolves as the way the applications are written evolve. I come up with a great idea for a way to solve a particular architectural problem, and I implement it into an application I'm writing. If it works out I will mark that as a piece of code that I integrate into the library at a later date. In between projects I typically have some time so I use that to pull the feature out of the application and integrate it into a library. While this process is occurring, I will typically have a Visual Studio solution with the application and the library loaded inside it. Then I refactor bit by bit. If I am using a fairly new piece of code to the library in a new application I will also load a solution with the library code so I can step through the code inside Visual Studio. Link to comment Share on other sites More sharing options...
manu Posted December 19, 2011 Report Share Posted December 19, 2011 I'll write a document with an approach to your scenario. I think that is not going to be hard to use Xlinks. I'll return to you! Link to comment Share on other sites More sharing options...
carpediemevive Posted December 19, 2011 Author Report Share Posted December 19, 2011 Alright, that sounds great. Thanks a lot for the help, and it's really no big rush or anything. Link to comment Share on other sites More sharing options...
manu Posted December 19, 2011 Report Share Posted December 19, 2011 Ok, I think is much easier. First, you have to stabilize your "CommonLibrary" repository, merge all pending branches into your main branch. Then label it, let's say BL000. Imagine you have a new project, "DeathStar", this new project need the "CommonLibrary" code so you create a Xlink to the stable "CommonLibrary" label BL000. All is going fine in the "DeathStar"development, but some day you discover that you can improve the "CommonLibrary" while you are developing the task "scm1011", you change the "CommonLibrary" code, you will see that an auto created branch appears on the "CommonLibrary" repository. Once you finish changing the code you merge up the "task1011" branch into your main branch of the "DeathStar" project, you will see that in the same merge the "CommonLibrary" is also merged. You cal label the merge result in both repositories and all your projects can use the new label to perform a re-base and get the upgrade or change the Xlink to the new label. We have over the table the thing with selectors/mount, it's a thing we want to have also in 4.0 but we haven't had time to do it yet. Manu Regards, Link to comment Share on other sites More sharing options...
carpediemevive Posted December 19, 2011 Author Report Share Posted December 19, 2011 That sounds pretty awesome! I am going to be trying this out over the next few weeks. I'll try to remember to let you all know how it goes after I really work with it for a while. Link to comment Share on other sites More sharing options...
psantosl Posted December 31, 2011 Report Share Posted December 31, 2011 This topic sounds like a song... "Should I stay or should I go"?? -> "Should I Xlink or should I mount"!! XD Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.