Jump to content

Should I XLink or Mount?


carpediemevive

Recommended Posts

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

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

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

  • 2 weeks later...

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...