Exemplo n.º 1
0
        public ITfsChangeset GetShelvesetData(IGitTfsRemote remote, string shelvesetOwner, string shelvesetName)
        {
            shelvesetOwner = shelvesetOwner == "all" ? null : (shelvesetOwner ?? GetAuthenticatedUser());
            var shelvesets = VersionControl.QueryShelvesets(shelvesetName, shelvesetOwner);

            if (shelvesets.Length != 1)
            {
                throw new GitTfsException("Unable to find " + shelvesetOwner + "'s shelveset \"" + shelvesetName + "\" (" + shelvesets.Length + " matches).")
                      .WithRecommendation("Try providing the shelveset owner.");
            }
            var shelveset = shelvesets.First();

            var change = VersionControl.QueryShelvedChanges(shelveset).Single();
            var wrapperForVersionControlServer =
                _bridge.Wrap <WrapperForVersionControlServer, VersionControlServer>(VersionControl);
            // TODO - containerify this (no `new`)!
            var fakeChangeset = new Unshelveable(shelveset, change, wrapperForVersionControlServer, _bridge);
            var tfsChangeset  = new TfsChangeset(remote.Tfs, fakeChangeset, _stdout, null)
            {
                Summary = new TfsChangesetInfo {
                    Remote = remote
                }
            };

            return(tfsChangeset);
        }
Exemplo n.º 2
0
        public int Unshelve(Unshelve unshelve, IGitTfsRemote remote, IList <string> args)
        {
            var shelvesetOwner = unshelve.Owner == "all" ? null : (unshelve.Owner ?? GetAuthenticatedUser());

            if (args.Count != 2)
            {
                _stdout.WriteLine("ERROR: usage: unshelve -u <shelve-owner-name> <shelve-name> <git-branch-name>");
                return(GitTfsExitCodes.InvalidArguments);
            }
            var shelvesetName     = args[0];
            var destinationBranch = args[1];

            var shelvesets = VersionControl.QueryShelvesets(shelvesetName, shelvesetOwner);

            if (shelvesets.Length != 1)
            {
                _stdout.WriteLine("ERROR: Unable to find shelveset \"" + shelvesetName + "\" (" + shelvesets.Length + " matches). Maybe you've forgot to set owner name?");
                WriteShelvesetsToStdout(shelvesets);
                return(GitTfsExitCodes.InvalidArguments);
            }
            var shelveset = shelvesets.First();

            var destinationRef = "refs/heads/" + destinationBranch;

            if (File.Exists(Path.Combine(remote.Repository.GitDir, destinationRef)))
            {
                _stdout.WriteLine("ERROR: Destination branch (" + destinationBranch + ") already exists!");
                return(GitTfsExitCodes.ForceRequired);
            }

            var change  = VersionControl.QueryShelvedChanges(shelveset).Single();
            var gremote = (GitTfsRemote)remote;
            var wrapperForVersionControlServer =
                _bridge.Wrap <WrapperForVersionControlServer, VersionControlServer>(VersionControl);
            var fakeChangeset = new FakeChangeset(shelveset, change, wrapperForVersionControlServer, _bridge);
            var tfsChangeset  = new TfsChangeset(remote.Tfs, fakeChangeset, _stdout)
            {
                Summary = new TfsChangesetInfo {
                    Remote = remote
                }
            };

            gremote.Apply(tfsChangeset, destinationRef);
            _stdout.WriteLine("Created branch " + destinationBranch + " from shelveset \"" + shelvesetName + "\".");
            return(GitTfsExitCodes.OK);
        }