From: Junio C Hamano <gitster@pobox.com>
To: Sidhant Sharma <tigerkid001@gmail.com>
Cc: Lars Schneider <larsxschneider@gmail.com>,
Git Mailing List <git@vger.kernel.org>,
Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>,
philipoakley@iee.org, Jacob Keller <jacob.keller@gmail.com>
Subject: Re: [RFC/GSOC] Git Beginner | Warnings for potentially destructive commands
Date: Fri, 25 Mar 2016 10:38:41 -0700 [thread overview]
Message-ID: <xmqqd1qi4fvi.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <56F51089.2050703@gmail.com> (Sidhant Sharma's message of "Fri, 25 Mar 2016 15:48:49 +0530")
Sidhant Sharma <tigerkid001@gmail.com> writes:
> $ ggit rebase
>
> [WARNING] You are about to rebase your commits in <topic-branch> onto the
> $BASE_BRANCH, which will essentially replay the work done in $TOPIC_BRANCH
> since last merge onto $BASE_BRANCH.
> For instance,
> Current state:
>
> o---o---A---B $BASE_BRANCH
> \
> X---Y $TOPIC_BRANCH
>
> State after rebasing:
>
> o---o---A---B---X'---Y' $BASE_BRANCH
> \
> X---Y $TOPIC_BRANCH
>
> where X' and Y' are the commits making changes identical to those made by X and
> Y respectively.
The topology may be correct, but the branch labels are both wrong,
no? The tip of the base branch will stay at B, and the tip of the
topic will point at Y'.
> Rebasing is not usually problematic except in cases when you are rebasing
> commits that do not exist in your repository.
This cannot be correct, as you fundamentally cannot work on (not
limited to rebasing) commits that do not exist in your repository.
> $ ggit reset --hard
>
> Resetting to <destination-commit-hash>
> [WARNING] You are about to hard reset the current HEAD (master) by <n> commit(s).
If I were on B and did "git reset --hard Y", i.e.
o---o---A---B $CURRENT_BRANCH
\
X---Y $CURRENT_BRANCH_AFTER_RESETTING
does the phrasing "about to reset by <n> commit(s):" make any sense?
> This will take you back to commit <destination-commit-hash>, and discard all
> changes make thereafter. For instance,
> Current state:
>
> o---o---A---B---C---D---E $CURRENT_BRANCH
>
> After resetting 3 commits:
>
> o---o---A---B $CURRENT_BRANCH
The above two examples make me wonder if these should be static
text. "ggit rebase" and "ggit reset" have full information of the
concrete branch names, commit object names and the actual topology
of the history, so it should be able to give a description more
tailored to the user's situation. Instead of giving a fictional
drawing with "For instance, Current state:", it should be able to
draw the actual before-and-after picture based on where the end-user
actually is. I see _some_ attempts (e.g. with "<n>", mention of
"(master)" and $BASE_BRANCH, you may have meant that they will be
replaced with actual values), but I suspect that telling some truth
(i.e. use of the real branch names) while showing pictures that do
not match the reality (i.e. if the topology and the description are
done as fixed text) would only confuse the users.
next prev parent reply other threads:[~2016-03-25 17:38 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-25 10:18 [RFC/GSOC] Git Beginner | Warnings for potentially destructive commands Sidhant Sharma
2016-03-25 17:38 ` Junio C Hamano [this message]
2016-03-25 19:20 ` Jacob Keller
2016-03-26 15:12 ` Matthieu Moy
2016-03-27 7:36 ` Jacob Keller
2016-03-29 6:13 ` Sidhant Sharma
2016-03-30 15:57 ` [RFC/GSOC] Git Beginner | Warnings for potentially destructive commands (v2) Sidhant Sharma
2016-03-31 7:59 ` Remi Galan Alfonso
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqd1qi4fvi.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=git@vger.kernel.org \
--cc=jacob.keller@gmail.com \
--cc=larsxschneider@gmail.com \
--cc=philipoakley@iee.org \
--cc=tigerkid001@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.