3

VSS から TFS への移行に取り組んでいます。移行しようとしているインストールでは、複数の VSS データベース (多数) を使用しています。

既に TFS にあるコードを更新する必要があるかどうかを知ることができるように、vss データベースごとに最後のチェックインの日付と時刻を特定する簡単な方法を探しています。

大まかに言えば、次のようなメソッドを書きたいと思います。

DateTime GetLatestCheckIn(string pathToVssDatabase) {}

VSS COM API でこれを達成する方法はありますか?

4

1 に答える 1

1

わかったと思います!

これは非常に大まかなカットで、最新の更新と更新の日付を表示するコンソールアプリです。これはあまり効率的ではありません。何をすべきかがわかったので、並べ替えを削除して、最新のアイテムと比較して1回のパスを実行しますが、その要点は次のとおりです。


    class Program
    {
        static void Main(string[] args)
        {
            //Environment.CurrentDirectory = @"c:\Program Files (x86)\Microsoft Visual SourceSafe Upgrade";
            IVSSDatabase db = new VSSDatabase();

            db.Open(@"ThePath\srcsafe.ini", "Admin", "ThePassword");
            IVSSItem rootFolder = db.get_VSSItem("$/", false);
            var versions = new List();
            foreach (IVSSVersion item in rootFolder.get_Versions((int)Microsoft.VisualStudio.SourceSafe.Interop.VSSFlags.VSSFLAG_RECURSYES))
            {
                versions.Add(new VersionInfo()
                {
                    ItemName = item.VSSItem.Name,
                    ItemFullPath = item.VSSItem.Spec,
                    ItemVersionDate = item.Date,
                    ItemVersionNumber = item.VersionNumber
                });
            }

            // echo all 
            var versionInfo = versions.OrderByDescending(i => i.ItemVersionDate).First();
            Console.WriteLine("{0} {1}", versionInfo.ItemFullPath, versionInfo.ItemVersionDate);
            Console.ReadLine();
        }
    }

    class VersionInfo
    {
        public string ItemName { get; set; }
        public string ItemFullPath { get; set; }
        public DateTime ItemVersionDate { get; set; }
        public int ItemVersionNumber { get; set; }
    }
于 2013-02-28T00:19:22.990 に答える