, чтобы получить атрибут из enum, я использую:
public enum ExceptionCodes
{
[ExceptionCode(1000)]
InternalError,
}
public static (int code, string message) Translate(ExceptionCodes code)
{
return code.GetType()
.GetField(Enum.GetName(typeof(ExceptionCodes), code))
.GetCustomAttributes(false).Where((attr) =>
{
return (attr is ExceptionCodeAttribute);
}).Select(customAttr =>
{
var attr = (customAttr as ExceptionCodeAttribute);
return (attr.Code, attr.FriendlyMessage);
}).FirstOrDefault();
}
// Используя
var _message = Translate(code);
РЕДАКТИРОВАНИЕ : С Мерзавца 2.19, это наконец возможно, как видно в этом ответе: https://stackoverflow.com/a/52269934/2988.
Считают upvoting тем ответом.
Примечание: в Мерзавце 2.19, только реализована клиентская поддержка, поддержка серверной стороны все еще отсутствует, таким образом, она только работает при клонировании локальных репозиториев. Также обратите внимание, что крупный Мерзавец hosters, например, GitHub, на самом деле не используют сервер Мерзавца, они используют свою собственную реализацию, поэтому даже если поддержка обнаруживается в сервере Мерзавца, это автоматически не означает, что это работает над Мерзавцем hosters. (OTOH, так как они не используют сервер Мерзавца, они могли реализовать его быстрее в их собственных реализациях, прежде чем он обнаружится в сервере Мерзавца.)
<час>нет, это не возможно в Мерзавце.
Реализация что-то вроде этого в Мерзавце было бы существенным усилием, и это будет означать, что целостность клиентского репозитория больше не могла гарантироваться. Если Вы интересно, ищете обсуждения "редкого клона" и "редкой выборки" на мерзавце mailinglist.
В целом, согласие в сообществе Мерзавца состоит в том, что, если у Вас есть несколько каталогов, которые всегда проверяются независимо, тогда они - действительно два различных проекта и должны жить в двух различных репозиториях. Можно склеить их назад вместе использование Подмодули Мерзавца .
Если Вы никогда не планируете взаимодействовать с репозиторием, из которого Вы клонировались, можно сделать полное клон мерзавца и переписать репозиторий с помощью ответвление фильтра мерзавца - фильтр подкаталога . Таким образом, по крайней мере, история будет сохранена.
Я записал .gitconfig
[alias]
для выполнения "редкого контроля". Проверьте его (никакая предназначенная игра слов):
В Windows, запущенном в cmd.exe
git config --global alias.sparse-checkout "!f(){ [ $# -eq 2 ] && L=${1##*/} L=${L%.git} || L=$2; mkdir -p \"$L/.git/info\" && cd \"$L\" && git init --template= && git remote add origin \"$1\" && git config core.sparseCheckout 1; [ $# -eq 2 ] && echo \"$2\" >> .git/info/sparse-checkout || { shift 2; for i; do echo $i >> .git/info/sparse-checkout; done }; git pull --depth 1 origin master;};f"
Иначе:
git config --global alias.sparse-checkout '!f(){ [ $# -eq 2 ] && L=${1##*/} L=${L%.git} || L=$2; mkdir -p "$L/.git/info" && cd "$L" && git init --template= && git remote add origin "$1" && git config core.sparseCheckout 1; [ $# -eq 2 ] && echo "$2" >> .git/info/sparse-checkout || { shift 2; for i; do echo $i >> .git/info/sparse-checkout; done }; git pull --depth 1 origin master;};f'
Использование :
# Makes a directory ForStackExchange with Plug checked out
git sparse-checkout https://github.com/YenForYang/ForStackExchange Plug
# To do more than 1 directory, you have to specify the local directory:
git sparse-checkout https://github.com/YenForYang/ForStackExchange ForStackExchange Plug Folder
git config
команды 'уменьшены' для удобства и устройства хранения данных, но вот расширенный псевдоним:
# Note the --template= is for disabling templates.
# Feel free to remove it if you don't have issues with them (like I did)
# `mkdir` makes the .git/info directory ahead of time, as I've found it missing sometimes for some reason
f(){
[ "$#" -eq 2 ] && L="${1##*/}" L=${L%.git} || L=$2;
mkdir -p "$L/.git/info"
&& cd "$L"
&& git init --template=
&& git remote add origin "$1"
&& git config core.sparseCheckout 1;
[ "$#" -eq 2 ]
&& echo "$2" >> .git/info/sparse-checkout
|| {
shift 2;
for i; do
echo $i >> .git/info/sparse-checkout;
done
};
git pull --depth 1 origin master;
};
f
Использование Linux? И только хотите легкий получить доступ и убрать рабочее дерево? не беспокоя отдых кода Вашей машины. попробуйте символьные ссылки !
git clone https://github.com:{user}/{repo}.git ~/my-project
ln -s ~/my-project/my-subfolder ~/Desktop/my-subfolder
Тест
cd ~/Desktop/my-subfolder
git status
Git 1.7.0 имеет «разреженные проверки». Видеть «Core.sparseCheckout» в git config справочной странице , «Редкая проверка» в git read-tree справочной странице и «Пропустить бит рабочего дерева» на странице руководства git update-index .
Интерфейс не так удобен, как у SVN (например, во время первоначального клонирования нет способа выполнить разреженную проверку), но базовая функциональность, на основе которой можно было бы построить более простые интерфейсы, теперь доступна.