GitSharp.Core.Repository.IsValidRefName C# (CSharp) Method

IsValidRefName() public static method

Check validity of a ref name. It must not contain character that has a special meaning in a Git object reference expression. Some other dangerous characters are also excluded.
public static IsValidRefName ( string refName ) : bool
refName string
return bool
        public static bool IsValidRefName(string refName)
        {
            int len = refName.Length;

            if (len == 0) return false;

            if (refName.EndsWith(".lock")) return false;

            int components = 1;
            char p = '\0';
            for (int i = 0; i < len; i++)
            {
                char c = refName[i];
                if (c <= ' ') return false;

                switch (c)
                {
                    case '.':
                        switch (p)
                        {
                            case '\0':
                            case '/':
                            case '.':
                                return false;
                        }

                        if (i == len - 1) return false;
                        break;

                    case '/':
                        if (i == 0 || i == len - 1) return false;
                        components++;
                        break;

                    case '{':
                        if (p == '@') return false;
                        break;

                    case '~':
                    case '^':
                    case ':':
                    case '?':
                    case '[':
                    case '*':
                    case '\\':
                        return false;
                }
                p = c;
            }

            return components > 1;
        }

Usage Example

Example #1
0
 /// <summary>
 /// Check validity of a ref name. It must not contain a character that has
 /// a special meaning in a Git object reference expression. Some other
 /// dangerous characters are also excluded.
 /// </summary>
 /// <param name="refName"></param>
 /// <returns>
 /// Returns true if <paramref name="refName"/> is a valid ref name.
 /// </returns>
 public static bool IsValidName(string refName)
 {
     return(CoreRepository.IsValidRefName(refName));
 }