Отрекитесь от случайной регистрации

Для начала вам нужно сначала создать и передать хранилище userState в ваш файл index.js.

const { ConversationState, MemoryStorage, UserState } = require('botbuilder');

[...]

const conversationState = new ConversationState(memoryStorage);
const memoryStorage = new MemoryStorage();
const userState = new UserState(memoryStorage);

[...]

const bot = new ExampleBot(conversationState, userState);

В своем файле bot.js включите и создайте экземпляр userState и назначьте профиль пользователя:

class ExampleBot {
    constructor(conversationState, userState) {
    [...]

    const USER_PROFILE = 'userProfile';
    this.userProfile = userState.createProperty(USER_PROFILE);
    this.userState = userState;

    [...]
}

Теперь вы можете получить доступ к userState. Вы можете сделать это как часть OnTurn:

async onTurn(turnContext) {
    if (turnContext.activity.type === ActivityTypes.Message) {
        const userProfile = await this.userProfile.get(turnContext, {});
        const conversationData = await this.conversationData.get(
            turnContext, { promptedForUserName: false });
        if (!userProfile.name) {
            if (conversationData.promptedForUserName) {
                userProfile.name = turnContext.activity.text;
                await turnContext.sendActivity(`Thanks ${userProfile.name}.`);
                conversationData.promptedForUserName = false;
            } else {
                await turnContext.sendActivity('What is your name?');
                conversationData.promptedForUserName = true;
            }
            await this.userProfile.set(turnContext, userProfile);
            await this.userState.saveChanges(turnContext);
        }
    }
}

или как часть водопада / шага:

async someWaterfallStep(step) {
        const user = await this.userProfile.get(step.context, {});

        if (!user.name) {
            [do something]
        } else {
            await step.context.sendActivity(`Hello ${user.name}. Nice to meet you!`);
            return step.endDialog()
        }
    }

Вы можете узнать больше о настройке состояния пользователя в этом документ .

Надежда на помощь!

57
задан Anto 15 June 2015 в 19:03
поделиться

8 ответов

См. SVNBook , в частности раздел «Отмена изменений», и обратное слияние.

Другое распространенное использование svn merge - откат уже внесенных изменений. Предположим, вы удачно работаете над рабочей копией / calc / trunk и обнаруживаете, что изменение, внесенное в редакцию 303, которая изменила integer.c, совершенно неверно. Это никогда не должно было быть совершено. Вы можете использовать svn merge, чтобы «отменить» изменения в вашей рабочей копии, а затем зафиксировать локальное изменение в хранилище. Все, что вам нужно сделать, это указать обратную разницу:

$ svn merge -r 303: 302 http://svn.example.com/repos/calc/trunk

Чтобы уточнить, ваше первоначальное изменение будет все еще находиться в хранилище . Но теперь вы отозвали его в более поздней редакции. я. е. репозиторий захватил все ваши изменения (это действительно то, что вы хотите! Если вы не проверили пароль в открытом виде или подобный!)

70
ответ дан bahrep 24 November 2019 в 19:29
поделиться

Используя TortoiseSVN, выберите Показать журнал и найдите ревизию, к которой вы хотите вернуться. В контекстном меню выберите «Вернуться к этой ревизии». При этом выполняется обратное слияние с вашей рабочей копией, поэтому вам нужно будет зафиксировать свою рабочую копию для завершения операции.

См. Также Как мы отслеживаем ветвь нашей рабочей копии? : -)

12
ответ дан Community 24 November 2019 в 19:29
поделиться

Если вы имели в виду, как мне удалить историю случайной регистрации: Это сложно.

svn не позволяет вам ничего отменять, поскольку сохраняет ревизии как наборы изменений. Тем не менее, есть некоторые инструменты, которые позволяют вам делать практически все в дампе хранилища. Вы могли бы :

  1. Дамп своего репо.

  2. Используйте svndumpfilter из svn admin tools , чтобы избавиться от проверки.

  3. Положите его обратно в репо.

Но это может полностью испортить ваше репо, поэтому никогда не пытайтесь делать это, если только вы не знаете, что делаете, и у вас есть резервные копии.

6
ответ дан mskfisher 24 November 2019 в 19:29
поделиться

Да, это действительно то, для чего нужна Subversion.

Вам нужно просто заменить свою копию на предыдущая ревизия в репозитории SVN.

Есть несколько вариантов:

  1. Заменить на ревизию.
  2. Заменить на URL
  3. Последние из репозитория (но в вашем случае у вас уже есть последняя версия)
  4. Заменить на Ветвь

Но я настоятельно рекомендую вам сделать следующее, прежде чем заменять свою локальную копию:

  1. Сделайте «Сравнить с репозиторием / ревизией / URL».
1
ответ дан 24 November 2019 в 19:29
поделиться

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

2
ответ дан 24 November 2019 в 19:29
поделиться

Я бы в этом сомневался. Одна из основных идей управления исходным кодом заключается в том, что хранилище не теряет никакой истории. Вы не можете удалить историю. Лучшее, что вы можете сделать, это получить старую версию и перезаписать текущую. Но журналы истории все равно покажут вашу ошибку.

(Оффтоп: Какую IDE вы используете, что-то в этом роде?)

0
ответ дан Vilx- 24 November 2019 в 19:29
поделиться

вы не можете отозвать ревизию, самое большее, что вы можете сделать, это вернуться к предыдущей ревизии и сделать еще одну регистрацию.

0
ответ дан Nuno Furtado 24 November 2019 в 19:29
поделиться

To comment on this as well: This is a series of commands that I did on a repository to revert it from revision 2 back to revision 1. You'd need to checkin at the end as well though.

Last login: Mon Apr 13 16:01:34 on ttys004
[wlynch@orange ~] cd /tmp
[wlynch@orange /tmp] svnadmin create foo
[wlynch@orange /tmp] svn co file:///tmp/foo foo-repo
Checked out revision 0.
[wlynch@orange /tmp] cd foo-repo/
[wlynch@orange foo-repo] ls
[wlynch@orange foo-repo] touch blah
[wlynch@orange foo-repo] touch repl
[wlynch@orange foo-repo] touch bar
[wlynch@orange foo-repo] svn add *
A         bar
A         blah
A         repl
[wlynch@orange foo-repo] svn ci
Adding         bar
Adding         blah
Adding         repl
Transmitting file data ...
Committed revision 1.
[wlynch@orange foo-repo] echo "hi" > bar
[wlynch@orange foo-repo] echo "oh no" > blah
[wlynch@orange foo-repo] svn ci
Sending        bar
Sending        blah
Transmitting file data ..
Committed revision 2.
[wlynch@orange older-foo] svn diff -r 1:2 file:///tmp/foo
Index: bar
===================================================================
--- bar (revision 1)
+++ bar (revision 2)
@@ -0,0 +1 @@
+hi
Index: blah
===================================================================
--- blah    (revision 1)
+++ blah    (revision 2)
@@ -0,0 +1 @@
+oh no

[wlynch@orange foo-repo] svn diff -r 1:2 file:///tmp/foo | patch -R
patching file bar
patching file blah    
0
ответ дан Bill Lynch 24 November 2019 в 19:29
поделиться
Другие вопросы по тегам:

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