swellaby / vsts-mirror-git-repository

A straightforward utility to mirror one Git repository to another location
MIT License
25 stars 15 forks source link

Branch/Tags #14

Open calebcartwright opened 6 years ago

calebcartwright commented 6 years ago

I was reviewing the Reports for the extension in the VSTS marketplace, and saw a couple Uninstalls where the reason given was "didn't include features I was expecting". One of those uninstalls actually added detail stating: We need to sync specific branches/tags.

Based on my understanding of git's mirror functionality, git mirror syncs all refs, including all branches, tags, etc. and I don't think it's possible to use mirror in a selective way. As such, I'm not sure that the mirror functionality of git is the right/best solution for scenarios for syncing single/specific branches or tags (and accordingly I think that means the Mirror Extension is feature complete/working as designed)

However, I'm wondering if it'd be a good idea to some documentation detailing what mirror is/what it does and when it should not be used (i.e. wanting to push single tags, etc.) for end users who may not be aware.

Thoughts @traviskosarek?

traviskosarek commented 6 years ago

I saw this too and your understanding is correct. I think it is a good idea to update the documentation to better reflect what mirroring does (copies everything tags/branches/commits) and that piece meal copying is not what the extension is meant to do.

That said, it is a possibility to add another VSTS task that would serve the functionality of pushing specific branches or tags. My opinion would be that this functionality would be it's own entry in the VSTS Marketplace rather than bundled with the Mirror Task. Thoughts?

calebcartwright commented 6 years ago

I need to think on this one a bit, but I'm currently thinking about it in two parts:

1) does it warrant a task 2) if 1 is true, then how to package/distribute

For 1, I would think that it is pretty easy to add another git remote and push a single branch/tag/etc. via a one or two line script, and in those simple-script scenarios I always wonder if a custom task is worth it I.e.:

git remote add foo https://foo.git.website.stuff
git push -u foo [other options] <stuff>

Additionally, there's a lot of git related extensions on the marketplace already. Therefore, if we do decide to make a task, I think we'd first need to investigate what exists already to make sure we aren't creating a duplicate of something that exists/works.

On 2, If we were starting from scratch, my inclination would be to create a single Extension (called git utilities or something along those lines) that contained what I view to be very related tasks in mirror and other. However, I know that would be problematic given our current state with an existing/fairly well known extension that is all about mirroring (from the names to the docs to the icons) :)

traviskosarek commented 6 years ago

I agree with you on 1, the functionality does not really need to be wrapped in a task because the script is so short. That said, I think people like the extension just because it makes the build pipeline more visually streamlined and it makes it extremely easy to repeat similar functionality across pipelines. (Same concept for the mirror task)

Is it worth doing? Maybe. Definitely need more research on this. There is the task "Git Tasks" on the marketplace that currently only has mirroring capabilities, but I haven't done a thorough enough job to weed out other available tasks.

For 2, I am torn. I believe most people want to use VSTS more like a piecemeal package manager and only to install specific tools that they would use. Similar to how you would install a small package from NPM.

I do like the idea of having a suite of tools, but I do think the majority of people look through the marketplace for individual functionality rather than an entire suite of tools. Personally, I am less worried about a potential notoriety loss and more worried that the scope of the task would be too broad, causing people to shy away from downloading it to begin with.

Regardless, I think this is a good discussion to have with much more depth than maybe GitHub boards can provide, haha

calebcartwright commented 6 years ago

Couple things in there that I'd disagree with, but I do agree that we shouldn't take this issue too far OT. I'd suggest we use this issue to track work related to updating the docs for the Mirror Extension/Repo and discuss the more philosophical points offline