コード例 #1
0
ファイル: Repository.cs プロジェクト: arleyschrock/opentf
        public int CheckIn(Workspace workspace, string[] serverItems, string comment,
                           ref SortedList <string, bool> undoneServerItems)
        {
            Message msg = new Message(GetWebRequest(new Uri(Url)), "CheckIn");

            msg.Body.WriteElementString("workspaceName", workspace.Name);
            msg.Body.WriteElementString("ownerName", workspace.OwnerName);

            msg.Body.WriteStartElement("serverItems");
            foreach (string serverItem in serverItems)
            {
                msg.Body.WriteElementString("string", serverItem);
            }
            msg.Body.WriteEndElement();

            // write info subtree
            msg.Body.WriteStartElement("info");

            DateTime dt = new DateTime(0);

            msg.Body.WriteAttributeString("date", dt.ToString("s"));

            msg.Body.WriteAttributeString("cset", "0");
            msg.Body.WriteAttributeString("owner", workspace.OwnerName);
            msg.Body.WriteElementString("Comment", comment);
            msg.Body.WriteElementString("CheckinNote", "");
            msg.Body.WriteElementString("PolicyOverride", "");
            msg.Body.WriteElementString("CheckinOptions", "ValidateCheckinOwner");
            msg.Body.WriteEndElement();

            int cset = 0;

            using (HttpWebResponse response = Invoke(msg))
            {
                XmlReader results = msg.ResponseReader(response);
                cset = Convert.ToInt32(results.GetAttribute("cset"));

                List <Failure> failures = new List <Failure>();

                //TODO: read <ImplicitItems />
                //<CheckInResponse xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/VersionControl/ClientServices/03"><CheckInResult cset="11486"><UndoneServerItems /><ImplicitItems /></CheckInResult><failures /></CheckInResponse>
                while (results.Read())
                {
                    if (results.NodeType == XmlNodeType.Element)
                    {
                        switch (results.Name)
                        {
                        case "Failure":
                            failures.Add(Failure.FromXml(this, results));
                            break;

                        case "string":
                            undoneServerItems.Add(results.ReadString(), true);
                            break;
                        }
                    }
                }

                foreach (Failure failure in failures)
                {
                    versionControlServer.OnNonFatalError(workspace, failure);
                }
            }

            return(cset);
        }