TFS: Перезапишите ответвление с другим

Это - возможная перезапись ответвление с другим?

Или единственное решение состоит в том, чтобы удалить ответвление B и сделать новое ответвление из Ответвления A?

21
задан Henrik 19 January 2010 в 10:49
поделиться

2 ответа

Если вы не используете TFS 2010, я бы рекомендовал использовать Merge + Resolve, чтобы снова синхронизировать две ветки.

# cancel out of conflict dialog
tf merge A B -r -force -version:T
tf resolve B -r -auto:acceptTheirs

Это должно уравнять все, кроме файлов, которые были созданы только в B и никогда не сливались обратно. Используйте Folder Diff, чтобы найти и согласовать их.

Удаление + повторное ветвление в 2005/2008 чревато конфликтами пространств имен между кошмаром и отладкой в ​​будущем. Другой вариант, если у вас 2008, - Уничтожить + переразветвить. Очевидно, это предполагает, что вы не против потерять всю историю из исходной копии B.

22
ответ дан 29 November 2019 в 20:17
поделиться

Ваш метод может иметь одну строку кода:

public static <T> T parseObjectFromString(String s, Class<T> clazz) throws Exception {
    return clazz.getConstructor(new Class[] {String.class }).newInstance(s);
}

Тестирование с различными классами:

Object obj1 = parseObjectFromString("123", Integer.class);
System.out.println("Obj: " + obj1.toString() + "; type: " + obj1.getClass().getSimpleName());
BigDecimal obj2 = parseObjectFromString("123", BigDecimal.class);
System.out.println("Obj: " + obj2.toString() + "; type: " + obj2.getClass().getSimpleName());
Object obj3 = parseObjectFromString("str", String.class);
System.out.println("Obj: " + obj3.toString() + "; type: " + obj3.getClass().getSimpleName());
Object obj4 = parseObjectFromString("yyyy", SimpleDateFormat.class);
System.out.println("Obj: " + obj4.toString() + "; type: " + obj4.getClass().getSimpleName());

Выходные данные:

Obj: 123; type: Integer
Obj: str; type: String
Obj: 123; type: BigDecimal
Obj: java.text.SimpleDateFormat@38d640; type: SimpleDateFormat
-121--3796841-

Вы не можете просто предотвратить DoS-атаки, связывая их с одним IP-адресом или именем пользователя. Черт, ты даже не можешь предотвратить попытки быстрого входа с помощью этого метода.

Почему? Потому что атака может охватывать несколько IP-адресов и учетных записей пользователей, чтобы обойти ваши попытки регулирования.

Я видел опубликованное в другом месте, что в идеале вы должны отслеживать все неудачные попытки входа в систему по всему сайту и связывать их с отметкой времени, возможно:

CREATE TABLE failed_logins (
    id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(16) NOT NULL,
    ip_address INT(11) UNSIGNED NOT NULL,
    attempted DATETIME NOT NULL,
    INDEX `attempted_idx` (`attempted`)
) engine=InnoDB charset=UTF8;

Краткое примечание в поле ip_address: Вы можете хранить данные и извлекать данные, соответственно, с помощью INET_ATON () и INET_NTOA (), которые по существу приравниваются к преобразованию IP-адреса в неподписанное целое число и из него.

# example of insertion
INSERT INTO failed_logins SET username = 'example', ip_address = INET_ATON('192.168.0.1'), attempted = CURRENT_TIMESTAMP;
# example of selection
SELECT id, username, INET_NTOA(ip_address) AS ip_address, attempted;

Определите определенные пороги задержки на основе общего количества неудачных входов в систему за заданное время (в данном примере - 15 минут). Следует основывать это на статистических данных, полученных из таблицы failed _ logins , так как они будут изменяться с течением времени в зависимости от количества пользователей и количества пользователей, которые могут отозвать (и ввести) свой пароль.


> 10 failed attempts = 1 second
> 20 failed attempts = 2 seconds
> 30 failed attempts = reCaptcha

Запросите таблицу при каждой неудачной попытке входа в систему, чтобы найти количество неудачных входов в систему за заданный период времени, скажем, 15 минут:


SELECT COUNT(1) AS failed FROM failed_logins WHERE attempted > DATE_SUB(NOW(), INTERVAL 15 minute);

Если количество попыток за данный период времени превышает ваш предел, либо принудительно регулируйте, либо заставьте всех пользователей использовать captcha (т.е. reCaptcha) до тех пор, пока число неудачных попыток за данный период времени не станет меньше порогового значения.

// array of throttling
$throttle = array(10 => 1, 20 => 2, 30 => 'recaptcha');

// retrieve the latest failed login attempts
$sql = 'SELECT MAX(attempted) AS attempted FROM failed_logins';
$result = mysql_query($sql);
if (mysql_affected_rows($result) > 0) {
    $row = mysql_fetch_assoc($result);

    $latest_attempt = (int) date('U', strtotime($row['attempted']));

    // get the number of failed attempts
    $sql = 'SELECT COUNT(1) AS failed FROM failed_logins WHERE attempted > DATE_SUB(NOW(), INTERVAL 15 minute)';
    $result = mysql_query($sql);
    if (mysql_affected_rows($result) > 0) {
        // get the returned row
        $row = mysql_fetch_assoc($result);
        $failed_attempts = (int) $row['failed'];

        // assume the number of failed attempts was stored in $failed_attempts
        krsort($throttle);
        foreach ($throttle as $attempts => $delay) {
            if ($failed_attempts > $attempts) {
                // we need to throttle based on delay
                if (is_numeric($delay)) {
                    $remaining_delay = time() - $latest_attempt - $delay;
                    // output remaining delay
                    echo 'You must wait ' . $remaining_delay . ' seconds before your next login attempt';
                } else {
                    // code to display recaptcha on login form goes here
                }
                break;
            }
        }        
    }
}

Использование reCaptcha при определенном пороге гарантирует, что атака с нескольких фронтов будет остановлена и обычные пользователи сайта не будут испытывать значительную задержку для законных неудачных попыток входа в систему.

-121--1018869-

Удалить ветвь B и создать новую ветвь A.

Есть ли причина, по которой вы не хотите этого делать?

-1
ответ дан 29 November 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: