Если вы хотите просмотреть подробную информацию о теге SOMETAG (тэггер, дата и т. Д.), Хеш коммита, на который он указывает, и немного информации о коммите, но без полной разницы, попробуйте
git show --name-status SOMETAG
Пример вывода:
tag SOMETAG
Tagger: ....
Date: Thu Jan 26 17:40:53 2017 +0100
.... tag message .......
commit 9f00ce27c924c7e972e96be7392918b826a3fad9
Author: .............
Date: Thu Jan 26 17:38:35 2017 +0100
.... commit message .......
..... list of changed files with their change-status (like git log --name-status) .....
Я сделал это, написав метод расширения с использованием LINQ. SPGroup наследуется от SPPrincipal, поэтому вы должны иметь возможность передать его в параметр Principal
:
public static bool Contains(this SPRoleAssignmentCollection rac, SPPrincipal principal)
{
XElement racXml = XElement.Parse(rac.Xml);
return racXml.Elements("permission").Any(vw => (int)vw.Attribute("memberid") == principal.ID);
}
Вы пробовали использовать RunWithElevatedPrivileges ?
SPSecurity.RunWithElevatedPrivileges(delegate()
{
//put your code here to get the group and test for the user
});
Пара способов. В группе SharePoint есть параметр, который позволяет только владельцу группы просматривать сведения о членстве или разрешать всем просматривать сведения о членстве. Если все разрешено, вы не получите ограничение безопасности, иначе вам потребуется RunWithElevatedPrivileges, и обязательно получите новый экземпляр SPSite & SPWeb, который будет использоваться внутри него.
Сказано, что ниже приведены варианты:
private Boolean isUserInGroup(SPGroup oGroupToTestFor,String sUserLoginName)
{
Boolean bUserIsInGroup = false;
try
{
SPUser x = oGroupToTestFor.Users[sUserLoginName];
bUserIsInGroup = true;
}
catch (SPException)
{
bUserIsInGroup = false;
}
return bUserIsInGroup;
}
Другой способ -
private Boolean isUserInGroup(SPGroup oGroupToTestFor, String sUserLoginName)
{
Boolean bUserIsInGroup = false;
SPUser oUser =null;
try{
oUser = SPContext.Current.Web.AllUsers[sUserLoginName];
}
catch{}
if(oUser!=null){
foreach (SPUser item in oGroupToTestFor.Users)
{
if (item.UserToken == oUser.UserToken)
{
bUserIsInGroup = true;
break;
}
}
}
return bUserIsInGroup;
}
Для того, чтобы заставить SPSecurity.RunWith .. работать, вам необходимо иметь новый экземпляр объекта SPSite и / или SPWeb и не использовать контекст, иначе он не будет работать.
У вас есть объект SPUser для использования? В таком случае можно просто использовать коллекцию SPUser.Groups.