(Этот ответ был обновлен для соответствия SVN 1.8 и 1.9's поведение)
, у Вас есть 2 вопроса:
"проигнорированным файлом" я подразумеваю, что файл не появится в списках, как раз когда "неимеющий версию": Ваш клиент SVN притворится, что файл не существует вообще в файловой системе.
Проигнорированные файлы определяются "шаблоном файла". Синтаксис и формат шаблонов файла объяснены в онлайн-документации SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Шаблоны файла в Подрывной деятельности".
Подрывная деятельность, с версии 1.8 (июнь 2013) и позже, поддерживает 3 различных способа определить шаблоны файла. Вот сводка с примерами:
global-ignores
: global-ignores
список не будет совместно использован другими пользователями, и это относится ко всему repos Вы контроль на Ваш компьютер. C:\Users\{you}\AppData\Roaming\Subversion\config
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
и в HKLM
и в HKCU
. ~/.subversion/config
svn:ignore
свойство, которое установлено на каталогах (не файлы): .gitignore
работы. svn:ignore
применяется к каталогам и нерекурсивен или наследован. Любой файл или непосредственный подкаталог родительского каталога, который соответствует Шаблону Файла, будет исключен. , В то время как SVN 1.8 добавляет понятие "унаследованных свойств", svn:ignore
, само свойство проигнорировано в ненепосредственных порожденных каталогах:
cd ~/myRepoRoot # Open an existing repo.
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt".
svn status # Check to see if the file is ignored or not.
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored.
svn propset svn:ignore "ignoreThis.txt" . # Apply the svn:ignore property to the "myRepoRoot" directory.
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory.
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt".
svn status
> ? ./subdirectory/ignoreThis.txt # ...and is is NOT ignored!
> 1 unversioned file
(Таким образом, файл ./subdirectory/ignoreThis
не проигнорирован, даже при том, что" ignoreThis.txt
" применяется на .
корень repo).
Поэтому для применения черного списка рекурсивно необходимо использовать svn propset svn:ignore
.
значение отличается в дочернем каталоге тогда, значение ребенка полностью переопределяет родителей, таким образом, нет никакого "аддитивного" эффекта.
на корне .
, тогда необходимо изменить его с [1 122] для перезаписи его на дочерних и порожденных каталогах. я отмечаю, что синтаксис командной строки парадоксален.
svn:global-ignores
свойство. Требует (июнь 2013) SVN 1.8: svn:global-ignores
с эти --recursive
, флаг, столь наследованный, игнорирует шаблоны файла, автоматически применяются, как они наследованы. Выполнение того же набора команд как в предыдущем примере, но использовании svn:global-ignores
вместо этого:
cd ~/myRepoRoot # Open an existing repo
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt"
svn status # Check to see if the file is ignored or not
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored
svn propset svn:global-ignores "ignoreThis.txt" .
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt"
svn status
> 0 unversioned files # the file is ignored here too!
Это целое расположение сбивало с толку меня, потому что терминология TortoiseSVN (как используется в их системе меню Windows Explorer) первоначально вводила в заблуждение мне - я был не уверен, что значение меню Ignore, "Добавляют рекурсивно", опции "Add *" и "Add". Я надеюсь, что это сообщение объясняет, как функция Ignore соединяется к функции SVN Properties. Однако я предлагаю использовать командную строку для установки проигнорированных файлов, таким образом, Вы получаете ощущение того, как она работает вместо того, чтобы использовать GUI, и только использовать GUI для управления свойствами после того, как Вы довольны командной строкой.
команда svn status
скроет проигнорированные файлы (то есть, файлы, которые соответствуют шаблону RGA global-ignores
, или соответствуют шаблону каталога svn:ignore
непосредственного родителя или соответствуют шаблону любого ancesor каталога svn:global-ignores
.
Использование --no-ignore
опция видеть те перечисленные файлы. Проигнорированные файлы имеют состояние [1 135], затем передают вывод по каналу к [1 136], чтобы только показать строки, запускающиеся с "I".
команда:
svn status --no-ignore | grep "^I"
, Например:
svn status
> ? foo # An unversioned file
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore
> ? foo # An unversioned file
> I ignoreThis.txt # A file matching an svn:ignore pattern
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore | grep "^I"
> I ignoreThis.txt # A file matching an svn:ignore pattern
ta-da!
Я не уверен, изменилось ли это в .NET 3.5, но <учетные данные> Элемент
имеет атрибут passwordFormat
, который определяет формат паролей в web.config
. Из документации MSDN для .NET 3.5 формат по умолчанию - SHA1.
Если вы используете незашифрованные имена пользователей и пароли в своем web.config
, вы должны использовать:
...
<credentials passwordFormat="Clear">
...
Событие, хотя это внутреннее приложение, я все же рекомендую хотя бы хешировать пароль вместо того, чтобы оставлять его открытым текстом.
Я думаю, причина в том, что вы не указали passwordFormat. http://msdn.microsoft.com/en-us/library/e01fc50a.aspx
По умолчанию - SHA1, поэтому ваш открытый текст на самом деле не используется должным образом.
Вы должны указать
, когда сохраняете пароль в виде открытого текста.
Альтернативой являются зашифрованные пароли с использованием MD5 или SHA1.
См. http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.hashpasswordforstoringinconfigfile.aspx для функции кодирования пароля.
Вы также можете подумайте об использовании некоторых из доступных пользовательских элементов управления, которые многое делают за вас автоматически. Загляните в раздел «Вход» на панели инструментов управления в Visual Studio.
На следующей странице вы найдете все необходимое для этого простого случая, а внешний вид элемента управления «Вход в систему» полностью настраиваемый:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
e.Authenticated = FormsAuthentication.Authenticate(Login1.UserName, Login1.Password);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Login</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Login ID="Login1" runat="server" onauthenticate="Login1_Authenticate">
</asp:Login>
</div>
</form>
</body>
</html>
Другая возможная ловушка состоит в том, что имя пользователя «Admin» кажется особенным и не принимается во внимание, если вы тестируете учетные данные, установленные в web.config
<credentials>
<user name="Admin" password="somepassword" /> //Authentication always returns false for me
</credentials>
<credentials>
<user name="MyName" password="somepassword" /> //Authentication works normally
</credentials>
Проблема, похоже, не применима в вашем случае, но я потратил час на то, чтобы понять это, поэтому решил записать это здесь.
Я нахожу это решение ........ сначала вам нужно получить хэш-значение, используя FormsAuthentication.HashPasswordForStoringInConfigFile ("abc", "SHA1") в текстовом поле, запустив вашу программу и затем укажите это значение в