Makale Özeti

Bu makalede Team Foundation Server custom check-in policy geliştirmenin nasıl gerçekleştirilmesi gerektiğini aktaracak ve Team Foundation Server Source Control sistemine yapılan her dosya checkininde çalışacak kurallar oluşturabileceğiz.

Makale

Team Foundation Server  - Check-in Policy Geliştirme

Bu makalede Team Foundation Server custom check-in policy geliştirmenin nasıl gerçekleştirilmesi gerektiğini aktaracak ve Team Foundation Server Source Control sistemine yapılan her dosya checkininde çalışacak kurallar oluşturabileceğiz.

Team Foudation Server checkin policy geliştirmek için PolicyBase sınıfından türeyen bir sınıf oluşturmak ve bu sınıfı Serializable olarak işaretlemek yeterli olacaktır.

PolicyBase sınıfından türeyen sınıfımız içerisinde Evaluate methodunu override ederek policy içerisinde çalışmasını istediğimiz kuralı kodlayabiliriz.

Custom checkin policyler organizasyonunuzun/kurumunuzun gereksinimlerine göre tasarlayabileceğiniz bileşenlerdir.

Yapılan her checkinde yorum girilmesini zorunlu kılan bir checkin policy gerçekleştirelim.

Checkin Policy oluşturmak için;

1-      YorumPolicy adında bir classlibray projesi açın, Projenin referanslarına PolicyBae sınıfını içerisinde yer alan Microsoft.TeamFoundation.VersionControl.Client.dll assembly dosyasını referans olarak ekleyin.
Dosya C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies lokasyonunda bulunmaktadır.




2-      PolicyBase’den türettiğinizde aşağıda gözükmekte olan tüm methodları implemente etmek zorunda olduğunuz anlaşılıyor. Edit seçeneği ile Policy yapılandırması ve konfigurasyonu yapılabiliyor olacak. Bunu daha sonra tekrar detaylandıracağız.

 

using Microsoft.TeamFoundation.VersionControl.Client;

 

namespace YorumPolicy

{

[Serializable]

    public class YorumPolicy : PolicyBase

    {

        public override string Description

        {

            get { return "Yorum Zorunluluğu Policy"; }

        }

 

        public override bool Edit(IPolicyEditArgs policyEditArgs)

        {

            return true;

        }

 

        public override PolicyFailure[] Evaluate()

        {

            //TODO: evaluation kodu gelecek.

            return null;

        }

 

        public override string Type

        {

            get { return "YorumPolicy"; }

        }

 

        public override string TypeDescription

        {

            get { return "YorumPolicy"; }

        }

    }

}

 

Type,TypeDescription ve Description propertysi checkin policy ile ilgili tür ve açıklama alanlarıdır.

Evaluate methodunu en basit haliyle aşağıdaki şekilde implemente edebiliriz.

 

        public override PolicyFailure[] Evaluate()

        {

            string checkinAciklamasi= this.PendingCheckin.PendingChanges.Comment;

 

            if (String.IsNullOrEmpty(checkinAciklamasi))

            {

                return new PolicyFailure[] {

                    new PolicyFailure("Lütfen checkin işlemlerinizde açıklama giriniz.", this),

                };

            }

            else

            {

                return null;

            }

        }

 

Policy’i register etmek için aşağıdaki adımlar takip edilmelidir.

Registry Editor (regedit.exe) veya herhangi bir araç ile (bir .reg dosyası  vs) 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\TeamFoundation\SourceControl\Checkin Policies

lokasyonuna yeni bir String Value (Dize Değeri) oluşturun. Bu string değerine policy dosyasının DLL adını uzantısı olmadan verin. Örneğimizde; YorumPolicy. Dosya adı ve buradaki ismin birebir aynı olması custom policynin çalışması için bir zorunluluktur.

 

 

Daha sonra policynin çalışıp çalışmadığını test etmek için Team menüsünden Team Project Settings ve Source Control seçilmelidir.

 

 

Daha sonra yorum yazmadan bir checkin yapmaya çalıştığınızda Error List penceresinde yorum girilmesi gerektiğini bildiren bir hata mesajınızı (Lütfen checkin işlemlerinizde açıklama giriniz.) göreceksiniz.

 

Cengiz Han