unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* git is screwed
@ 2015-03-22 14:17 Richard Stallman
  2015-03-22 14:53 ` Andreas Schwab
                   ` (2 more replies)
  0 siblings, 3 replies; 44+ messages in thread
From: Richard Stallman @ 2015-03-22 14:17 UTC (permalink / raw)
  To: emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

I committed some changes using C-x v v in vc-dir.
Something went wrong with lisp/ChangeLog.

It appears that my change log entries went into an old version of that
file; I don't know why this happened, since I wrote them today after
doing 'git pull'.

After this, I did 'git pull' again, and it said there was a merge
conflict in lisp/ChangeLpg.  A lot of text appears to be missing from
the file.  It said, "fix conflicts and then commit the result."

I edited lisp/ChangeLog and tried to commit it with C-x v v.
That gave me the error message

  fatal: cannot do a partial commit during a merge.

I am now stuck.  I don't know what a "merge" is; it is certainly
nothing I asked to do.

How can I get this unwedged?

Is my change to the default value of browse-url-firefox-program
visible in browse-url.el?  It should try icecat first.

My previous use of git is limited to getting the Emacs sources
to build them.

-- 
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org  www.gnu.org
Skype: No way! See stallman.org/skype.html.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-22 14:17 git is screwed Richard Stallman
@ 2015-03-22 14:53 ` Andreas Schwab
  2015-03-23  3:25   ` Richard Stallman
       [not found] ` <20150322154147.GA6808@Tron.local>
  2015-04-01 20:41 ` Harald Hanche-Olsen
  2 siblings, 1 reply; 44+ messages in thread
From: Andreas Schwab @ 2015-03-22 14:53 UTC (permalink / raw)
  To: Richard Stallman; +Cc: emacs-devel

Richard Stallman <rms@gnu.org> writes:

> I edited lisp/ChangeLog and tried to commit it with C-x v v.
> That gave me the error message
>
>   fatal: cannot do a partial commit during a merge.
>
> I am now stuck.  I don't know what a "merge" is; it is certainly
> nothing I asked to do.
>
> How can I get this unwedged?

Try 'git merge --abort'.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-22 14:53 ` Andreas Schwab
@ 2015-03-23  3:25   ` Richard Stallman
  0 siblings, 0 replies; 44+ messages in thread
From: Richard Stallman @ 2015-03-23  3:25 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > Try 'git merge --abort'.

Thanks, but I got

error: Entry 'lisp/ChangeLog' not uptodate. Cannot merge.
fatal: Could not reset index file to revision 'HEAD'.

I also tried  git merge --abort lisp/ChangeLog
and got the same error.

-- 
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org  www.gnu.org
Skype: No way! See stallman.org/skype.html.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
       [not found]   ` <E1YZszx-0004Ff-JK@fencepost.gnu.org>
@ 2015-03-23  4:52     ` Sam Gwydir
  2015-03-23  9:56       ` Harald Hanche-Olsen
  0 siblings, 1 reply; 44+ messages in thread
From: Sam Gwydir @ 2015-03-23  4:52 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Andreas Schwab, emacs-devel

-- Bringing us back to the mailing list.

On 03/22, Richard Stallman wrote:

> What OTHER effects does it have?  I don't dare try it unless I know
> it won't screw me some other way.

As far as I know, none. 'git pull' is basically an alias for 'git
fetch; git merge'. Many git users never use pull and always fetch
separately for more control.

The reason it puts you into an intermediate merge state is in order to
not screw you. If you run 'git status' you can see the current state of
your local branch.

> What does "pushing" mean?

Pushing merges your local branch with the remote branch (Savannah). 'svn
commit' for git would be 'git commit && git push'.

Take a look at this page[1] if you know svn, it lists the analogous
commands.

> I assumed that C-x v v was installing my changes.

From info: 

  ...VC supports many common Git operations, but others, such as
  repository syncing, must be done from the command line.

I don't use vc.el, but from some quick testing it appears it only
commits. You have to push separately.

Many people, myself included, use Magit[2] to interact with git through
emacs. It will simplify your life. There is a package in MELPA if you
are interested.

Sam Gwydir.

Footnotes:

[1] https://git.wiki.kernel.org/index.php/GitSvnCrashCourse
[2] https://github.com/magit/magit

-- 
Sam Gwydir
Texas A&M University
+1 713 446 0367
sam@samgwydir.com



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-23  4:52     ` Sam Gwydir
@ 2015-03-23  9:56       ` Harald Hanche-Olsen
  2015-03-24 15:54         ` Richard Stallman
  0 siblings, 1 reply; 44+ messages in thread
From: Harald Hanche-Olsen @ 2015-03-23  9:56 UTC (permalink / raw)
  To: Richard Stallman, Andreas Schwab, emacs-devel

Sam Gwydir wrote:
> As far as I know, none. 'git pull' is basically an alias for 'git
> fetch; git merge'. Many git users never use pull and always fetch
> separately for more control.

git pull --ff-only
is pretty safe. I have it aliased to up (short for update):

; git config --global alias.up 'git pull --ff-only'
; git help up
`git up' is aliased to `pull --ff-only'

It will abort the merge if it can't be done using fast-forward.
(In other words, if the local branch has diverged from the remote.)

– Harald



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-23  9:56       ` Harald Hanche-Olsen
@ 2015-03-24 15:54         ` Richard Stallman
  2015-03-24 16:26           ` Harald Hanche-Olsen
  2015-03-25  8:29           ` Steinar Bang
  0 siblings, 2 replies; 44+ messages in thread
From: Richard Stallman @ 2015-03-24 15:54 UTC (permalink / raw)
  To: Harald Hanche-Olsen; +Cc: schwab, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > It will abort the merge if it can't be done using fast-forward.
  > (In other words, if the local branch has diverged from the remote.)

I understand that.  What should I do when that occurs?

Can someone tell me a full recipe for how to repair lisp/ChangeLog
(perhaps, merge it by hand) and how to get the new version into
the real repository?


-- 
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org  www.gnu.org
Skype: No way! See stallman.org/skype.html.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-24 15:54         ` Richard Stallman
@ 2015-03-24 16:26           ` Harald Hanche-Olsen
  2015-03-26 10:54             ` Richard Stallman
                               ` (2 more replies)
  2015-03-25  8:29           ` Steinar Bang
  1 sibling, 3 replies; 44+ messages in thread
From: Harald Hanche-Olsen @ 2015-03-24 16:26 UTC (permalink / raw)
  To: rms; +Cc: schwab, emacs-devel

Richard Stallman wrote:
>    >  It will abort the merge if it can't be done using fast-forward.
>    >  (In other words, if the local branch has diverged from the remote.)
>
> I understand that.  What should I do when that occurs?

In general? I would probably stash the working tree (and index) using 
“git stash”, then try “git pull --ff-only” again. If that succeeds, I 
would try to reapply the stashed state on top of the new head with “git 
stash pop”.

> Can someone tell me a full recipe for how to repair lisp/ChangeLog
> (perhaps, merge it by hand) and how to get the new version into
> the real repository?

I think it might be useful if you posted the result of running “git 
status -s” so we can assess the damage.

If it were me, I would make sure to copy all changed files into a safe 
place outside the git working tree to minimise any fallout from a failed 
recovery attempt. Then I might try a “git reset --hard” and try to 
restore the working tree to a sane state based on what I saved earlier. 
But please note that I have never found myself in the situation you're 
in, so it is dangerous to rely on my advice. Please do post the output 
of git status -s before doing anything rash.

– Harald



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-24 15:54         ` Richard Stallman
  2015-03-24 16:26           ` Harald Hanche-Olsen
@ 2015-03-25  8:29           ` Steinar Bang
  2015-03-25 10:29             ` Artur Malabarba
  2015-03-25 12:41             ` Stefan Monnier
  1 sibling, 2 replies; 44+ messages in thread
From: Steinar Bang @ 2015-03-25  8:29 UTC (permalink / raw)
  To: emacs-devel

>>>>> Richard Stallman <rms@gnu.org>:

> Can someone tell me a full recipe for how to repair lisp/ChangeLog
> (perhaps, merge it by hand) and how to get the new version into
> the real repository?

I use magit (not (yet) on GNU Elpa, but available on marmalade (version
1.2.2) and Melpa (commit-triggered builds from magit git repo)), and
what I do, is: 

 1. 'M-x magit-status RET'
 2. This opens a buffer that looks like svn-status and pcl-cvs and it
    shows the results of the merge
     - The buffer will have three (maybe four) groups:
      - Untracked files
      - Unstaged changes
      - Staged changes
      - Unpushed commits (if you're working directly on a tracking branch)
     - Successfully merged files are shown under "Staged changes", and
       you can disregard them for now
     - Conflicted files are shown under "Unstaged changes" with a "C" in
       front of them
  3. I do 'g' in magit to ensure that any of the affected files I have
     in the buffers are reloaded from disk (this seems to happen
     automatically on emacs 24.4, but I still do the 'g')
  4. Then I enter the conflicted files and look for the conflict markers
     and see if I can make sense of them.  I usually force the file into
     fundamental-mode for this.  I try to manually fix the files and
     when I'm satisfied I move back to the magit buffer and position the
     cursor over the files and press 's" which moves the files from
     "Unstaged changes" to "Staged changes".
  5. As far as git is concerned the files are now reviewed and the merge
     can be completed, but I usually enter the file again and do "C-x v ="
     to view the diff and see if the diffs looks like I expected.
     I usually view the diffs of _all_ of the staged files before
     committing to see if they look sensible.  I also usually do a clean
     build, run unit tests and some smoke testing before committing
  6. In the magit buffer press 'c c' to commit the staged files.  The
     commit message comes up with git's default commit message. I
     usually add some comments about what I did with the conflicted
     files

The merge is now complete and resides in the newest commit locally.  To
push the changes upsteam from magit, do 'P P' (only available if you're
on a tracking branch).




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-25  8:29           ` Steinar Bang
@ 2015-03-25 10:29             ` Artur Malabarba
  2015-03-25 12:41             ` Stefan Monnier
  1 sibling, 0 replies; 44+ messages in thread
From: Artur Malabarba @ 2015-03-25 10:29 UTC (permalink / raw)
  To: emacs-devel

2015-03-25 8:29 GMT+00:00 Steinar Bang <sb@dod.no>:
>>>>>> Richard Stallman <rms@gnu.org>:
>
>> Can someone tell me a full recipe for how to repair lisp/ChangeLog
>> (perhaps, merge it by hand) and how to get the new version into
>> the real repository?
>
> I use magit (not (yet) on GNU Elpa, but available on marmalade (version
> 1.2.2) and Melpa (commit-triggered builds from magit git repo)), and
> what I do, is:

Same here. Magit essentially took me from "I know git
commit/push/pull" to being (almost) a git expert. I'd strongly
recommend it to anyone, even those strugling with the concepts of git.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-25  8:29           ` Steinar Bang
  2015-03-25 10:29             ` Artur Malabarba
@ 2015-03-25 12:41             ` Stefan Monnier
  2015-03-25 13:42               ` Steinar Bang
                                 ` (2 more replies)
  1 sibling, 3 replies; 44+ messages in thread
From: Stefan Monnier @ 2015-03-25 12:41 UTC (permalink / raw)
  To: emacs-devel

> I use magit (not (yet) on GNU Elpa,

BTW, it would be great to have Magit in GNU ELPA.  I can't remember the
outcome last time I contacted people about it, but if someone wants to
give it another try, that'd be great.


        Stefan



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-25 12:41             ` Stefan Monnier
@ 2015-03-25 13:42               ` Steinar Bang
  2015-03-25 14:32               ` Artur Malabarba
  2015-03-25 23:23               ` Jonas Bernoulli
  2 siblings, 0 replies; 44+ messages in thread
From: Steinar Bang @ 2015-03-25 13:42 UTC (permalink / raw)
  To: emacs-devel

>>>>> Stefan Monnier <monnier@iro.umontreal.ca>:

>> I use magit (not (yet) on GNU Elpa,
> BTW, it would be great to have Magit in GNU ELPA.  I can't remember the
> outcome last time I contacted people about it,

As far as I can remember both you and the Magit maintainers were
positive to getting magit into GNU ELPA.

Eli had concerns about the display code of magit, but he and one of the
magit developers entered in a discussion where they seemed to be in
agreement (my observation from following the discussion from the
sidelines...).

> but if someone wants to give it another try, that'd be great.

+1




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-25 12:41             ` Stefan Monnier
  2015-03-25 13:42               ` Steinar Bang
@ 2015-03-25 14:32               ` Artur Malabarba
  2015-03-25 23:23               ` Jonas Bernoulli
  2 siblings, 0 replies; 44+ messages in thread
From: Artur Malabarba @ 2015-03-25 14:32 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

>> I use magit (not (yet) on GNU Elpa,
>
> BTW, it would be great to have Magit in GNU ELPA.  I can't remember the
> outcome last time I contacted people about it, but if someone wants to
> give it another try, that'd be great.

I don't know what the outcome was, but the github graph says there are
42 people who've contributed at least 40 lines, so it might take some
effort.
https://github.com/magit/magit/graphs/contributors?from=2008-07-27&to=2015-03-21&type=a



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-25 12:41             ` Stefan Monnier
  2015-03-25 13:42               ` Steinar Bang
  2015-03-25 14:32               ` Artur Malabarba
@ 2015-03-25 23:23               ` Jonas Bernoulli
  2015-03-26  0:35                 ` Stefan Monnier
                                   ` (3 more replies)
  2 siblings, 4 replies; 44+ messages in thread
From: Jonas Bernoulli @ 2015-03-25 23:23 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> I use magit (not (yet) on GNU Elpa,
>
> BTW, it would be great to have Magit in GNU ELPA.  I can't remember the
> outcome last time I contacted people about it, but if someone wants to
> give it another try, that'd be great.
>
>
>         Stefan

The outcome was that I said that I would first have to make a release.

And that I was not interested in being told that this is a misconception
of mine.  I understand that a package does not have to be "finished"
before being added to GNU Elpa, but ~4200 unreleased commits is kind of
a big deal.  99% of Magit's users are currently using a version which as
far as I am concerned has been obsolete for a year now (my mistake).

Fixing that is the primary, if not only, priority right now.  I going
to release 2.1.0 once the documentation is ready and that's still quite
a bit of work.  I don't have the time to discuss the possible inclusion
into GNU Elpa until the release has happened.  (And several people here
implying that those of us who have embraced the staging area suffer from
Stockholm syndrome certainly doesn't motivate me to rethink this decision).

  Jonas



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-25 23:23               ` Jonas Bernoulli
@ 2015-03-26  0:35                 ` Stefan Monnier
  2015-03-26  1:42                 ` John Yates
                                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 44+ messages in thread
From: Stefan Monnier @ 2015-03-26  0:35 UTC (permalink / raw)
  To: Jonas Bernoulli; +Cc: emacs-devel

> The outcome was that I said that I would first have to make a release.

In the mean time, other people could try and help collect the needed
copyright paperwork.


        Stefan



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-25 23:23               ` Jonas Bernoulli
  2015-03-26  0:35                 ` Stefan Monnier
@ 2015-03-26  1:42                 ` John Yates
  2015-03-26  2:04                   ` Stefan Monnier
  2015-03-26  8:00                 ` Steinar Bang
  2015-03-26 10:27                 ` Rasmus
  3 siblings, 1 reply; 44+ messages in thread
From: John Yates @ 2015-03-26  1:42 UTC (permalink / raw)
  To: Jonas Bernoulli; +Cc: Stefan Monnier, Emacs developers

[-- Attachment #1: Type: text/plain, Size: 709 bytes --]

On Wed, Mar 25, 2015 at 7:23 PM, Jonas Bernoulli <jonas@bernoul.li> wrote:

> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
> >> I use magit (not (yet) on GNU Elpa,
>
...
> The outcome was that I said that I would first have to make a release.
>

I am using Jonas' next branch of magit, easily available from github.
I install it via el-get using a variant recipe:

(:name magit
>        :description "It's Magit! An Emacs mode for Git."
>        :website     "https://github.com/magit/magit#readme"
>        :type        github
>        :pkgname     "magit/magit"
>        :branch      "next"
>        :depends     dash
>        :compile     "magit.*\.el\\'")


It is already eminently  usable.

/john

[-- Attachment #2: Type: text/html, Size: 1776 bytes --]

^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26  1:42                 ` John Yates
@ 2015-03-26  2:04                   ` Stefan Monnier
  0 siblings, 0 replies; 44+ messages in thread
From: Stefan Monnier @ 2015-03-26  2:04 UTC (permalink / raw)
  To: John Yates; +Cc: Jonas Bernoulli, Emacs developers

> It is already eminently  usable.

Emacs-25.0.50 is eminently usable in my experience, but it's still not
ready for release.

In any case, this is not really important: collecting all the copyright
assignment is what will take time.  By the time we have them all, 2.1
will most likely have been released (2.1 might even be old by then).


        Stefan



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-25 23:23               ` Jonas Bernoulli
  2015-03-26  0:35                 ` Stefan Monnier
  2015-03-26  1:42                 ` John Yates
@ 2015-03-26  8:00                 ` Steinar Bang
  2015-03-26  8:28                   ` Alexis
  2015-03-26  8:58                   ` Artur Malabarba
  2015-03-26 10:27                 ` Rasmus
  3 siblings, 2 replies; 44+ messages in thread
From: Steinar Bang @ 2015-03-26  8:00 UTC (permalink / raw)
  To: emacs-devel

>>>>> Jonas Bernoulli <jonas@bernoul.li>:

> (And several people here implying that those of us who have embraced
> the staging area suffer from Stockholm syndrome certainly doesn't
> motivate me to rethink this decision).

FWIW the way magit displays the staging area are one of the things that
makes it really useful to me.

The way magit displays a merge with conflicts, and makes me work with
the conflicts, makes it my favourite tool for resolving the conflicts.

I even use it for merges that have no conflicts.  It's the quickest way
to walk the staged files and examining the diffs, before I commit.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26  8:00                 ` Steinar Bang
@ 2015-03-26  8:28                   ` Alexis
  2015-03-26  8:41                     ` Alexis
  2015-03-26  8:58                   ` Artur Malabarba
  1 sibling, 1 reply; 44+ messages in thread
From: Alexis @ 2015-03-26  8:28 UTC (permalink / raw)
  To: emacs-devel


Steinar Bang <sb@dod.no> writes:

>>>>>> Jonas Bernoulli <jonas@bernoul.li>:
>
>> (And several people here implying that those of us who have 
>> embraced the staging area suffer from Stockholm syndrome 
>> certainly doesn't motivate me to rethink this decision).
>
> FWIW the way magit displays the staging area are one of the 
> things that makes it really useful to me.

+1.

Also, i've found that being able to stage regions /within hunks/ 
for staging, and thus being able to group together conceptually 
related changes easily, without needing to:

* go through multiple 'push stash -> delete unwanted -> pop stash' 
cycles, and/or

* deal with unneeded branch management bureaucracy,

helps me efficiently maintain a relatively clean commit history.

Thanks for your work on magit, i really appreciate it. :-)


Alexis.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26  8:28                   ` Alexis
@ 2015-03-26  8:41                     ` Alexis
  0 siblings, 0 replies; 44+ messages in thread
From: Alexis @ 2015-03-26  8:41 UTC (permalink / raw)
  To: emacs-devel


Alexis <flexibeast@gmail.com> writes:

> * go through multiple 'push stash -> delete unwanted -> pop 
> stash'  cycles

Er, sorry, that should be more like:

    push stash -> apply stash -> delete unwanted -> commit
                \                                        /
                 -------------<------------------<-------
                
Using magit means i don't think much about such workflows 
nowadays. :-)


Alexis.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26  8:00                 ` Steinar Bang
  2015-03-26  8:28                   ` Alexis
@ 2015-03-26  8:58                   ` Artur Malabarba
  1 sibling, 0 replies; 44+ messages in thread
From: Artur Malabarba @ 2015-03-26  8:58 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 576 bytes --]

On Mar 26, 2015 8:00 AM, "Steinar Bang" <sb@dod.no> wrote:
>
> >>>>> Jonas Bernoulli <jonas@bernoul.li>:
>
> > (And several people here implying that those of us who have embraced
> > the staging area suffer from Stockholm syndrome certainly doesn't
> > motivate me to rethink this decision).
>
> FWIW the way magit displays the staging area are one of the things that
> makes it really useful to me.

Yes, in many ways, Magit helps git make sense.
The idea behind git's features is great, but most of them seemed pointless
to me until I viewed them under the light of Magit.

[-- Attachment #2: Type: text/html, Size: 804 bytes --]

^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-25 23:23               ` Jonas Bernoulli
                                   ` (2 preceding siblings ...)
  2015-03-26  8:00                 ` Steinar Bang
@ 2015-03-26 10:27                 ` Rasmus
  2015-03-26 19:01                   ` Ricardo Wurmus
  3 siblings, 1 reply; 44+ messages in thread
From: Rasmus @ 2015-03-26 10:27 UTC (permalink / raw)
  To: emacs-devel

Hi,

Jonas Bernoulli <jonas@bernoul.li> writes:

> Stefan Monnier <monnier@iro.umontreal.ca> writes:

> And that I was not interested in being told that this is a misconception
> of mine.

Out of curiosity, did anybody say that (I don't recall having seen it, and
I followed the last discussion on magit)?  If so it's obviously not OK.

> Fixing that is the primary, if not only, priority right now.  I going
> to release 2.1.0 once the documentation is ready and that's still quite
> a bit of work.

I'm excited to see this now, as I'm probably using the "obsolete" version.

> (And several people here implying that those of us who have embraced the
> staging area suffer from Stockholm syndrome certainly doesn't motivate
> me to rethink this decision).

I also haven't seen those posts either (I don't care much for "meta post
about git"), but it sounds unfortunate that somebody would use such harsh
words.

In any case, I often work on ISSUE X and thus become aware of BUGFIX Y.  I
will fix both and use magit to make different commits.  I have no idea how
to do that /without/ magit.  E.g. rebase -i and branch I find easier from
CLI, though I try to force myself to explore magit more.

—Rasmus

-- 
Lasciate ogni speranza o voi che entrate: siete nella mani di'machellaio




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-24 16:26           ` Harald Hanche-Olsen
@ 2015-03-26 10:54             ` Richard Stallman
  2015-03-26 11:11               ` Harald Hanche-Olsen
  2015-03-26 10:54             ` Richard Stallman
  2015-03-26 10:54             ` Richard Stallman
  2 siblings, 1 reply; 44+ messages in thread
From: Richard Stallman @ 2015-03-26 10:54 UTC (permalink / raw)
  To: Harald Hanche-Olsen; +Cc: schwab, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > I think it might be useful if you posted the result of running “git 
  > status -s” so we can assess the damage.

Here it is.  I can only guess what the flags mean, but if 'M' means it
is modified on this machine, I am very surprised -- I never touched
most of those files.

M  .gitattributes
M  CONTRIBUTE
M  ChangeLog
D  README.xwidget
M  admin/ChangeLog
M  admin/MAINTAINERS
M  admin/admin.el
M  admin/authors.el
M  admin/notes/repo
M  configure.ac
M  doc/emacs/ChangeLog
M  doc/emacs/ack.texi
M  doc/emacs/basic.texi
M  doc/emacs/buffers.texi
M  doc/emacs/cmdargs.texi
M  doc/emacs/custom.texi
M  doc/emacs/display.texi
M  doc/emacs/frames.texi
M  doc/emacs/killing.texi
M  doc/emacs/mini.texi
M  doc/emacs/misc.texi
M  doc/emacs/msdos-xtra.texi
M  doc/emacs/msdos.texi
M  doc/emacs/mule.texi
M  doc/emacs/programs.texi
M  doc/emacs/text.texi
M  doc/emacs/trouble.texi
M  doc/lispintro/emacs-lisp-intro.texi
M  doc/lispref/ChangeLog
M  doc/lispref/commands.texi
M  doc/lispref/control.texi
M  doc/lispref/display.texi
M  doc/lispref/elisp.texi
M  doc/lispref/frames.texi
M  doc/lispref/functions.texi
M  doc/lispref/internals.texi
M  doc/lispref/loading.texi
M  doc/lispref/minibuf.texi
M  doc/lispref/numbers.texi
M  doc/lispref/objects.texi
M  doc/lispref/os.texi
M  doc/lispref/positions.texi
M  doc/lispref/processes.texi
M  doc/lispref/searching.texi
M  doc/lispref/sequences.texi
M  doc/lispref/streams.texi
M  doc/lispref/text.texi
M  doc/misc/ChangeLog
M  doc/misc/auth.texi
M  doc/misc/calc.texi
M  doc/misc/cc-mode.texi
M  doc/misc/cl.texi
M  doc/misc/efaq-w32.texi
M  doc/misc/efaq.texi
M  doc/misc/eieio.texi
M  doc/misc/erc.texi
M  doc/misc/eshell.texi
M  doc/misc/eww.texi
M  doc/misc/gnus.texi
M  doc/misc/htmlfontify.texi
M  doc/misc/idlwave.texi
M  doc/misc/ido.texi
M  doc/misc/newsticker.texi
M  doc/misc/org.texi
M  doc/misc/pgg.texi
M  doc/misc/reftex.texi
M  doc/misc/texinfo.tex
M  doc/misc/todo-mode.texi
M  doc/misc/tramp.texi
M  doc/misc/trampver.texi
M  doc/misc/vhdl-mode.texi
M  doc/misc/vip.texi
M  doc/misc/viper.texi
M  doc/misc/woman.texi
M  etc/AUTHORS
M  etc/ChangeLog
M  etc/GNUS-NEWS
M  etc/NEWS
M  etc/NEWS.24
M  etc/TODO
M  leim/ChangeLog
M  leim/Makefile.in
M  lib-src/ChangeLog
M  lib-src/Makefile.in
M  lib-src/emacsclient.c
M  lib-src/etags.c
M  lib-src/make-docfile.c
M  lib-src/movemail.c
M  lib/dirent.in.h
A  lib/dirfd.c
M  lib/fdopendir.c
M  lib/getdtablesize.c
M  lib/getopt.c
M  lib/gnulib.mk
M  lib/signal.in.h
M  lib/tempname.c
M  lib/tempname.h
MM lisp/ChangeLog
M  lisp/ChangeLog.16
M  lisp/Makefile.in
M  lisp/autorevert.el
M  lisp/battery.el
M  lisp/bindings.el
M  lisp/calendar/solar.el
M  lisp/calendar/todo-mode.el
M  lisp/cedet/ChangeLog
M  lisp/cedet/ede.el
M  lisp/cedet/ede/auto.el
M  lisp/cedet/ede/base.el
M  lisp/cedet/ede/config.el
M  lisp/cedet/ede/cpp-root.el
M  lisp/cedet/ede/custom.el
M  lisp/cedet/ede/emacs.el
M  lisp/cedet/ede/files.el
M  lisp/cedet/ede/generic.el
M  lisp/cedet/ede/linux.el
M  lisp/cedet/ede/locate.el
M  lisp/cedet/ede/pconf.el
M  lisp/cedet/ede/pmake.el
M  lisp/cedet/ede/proj-archive.el
M  lisp/cedet/ede/proj-aux.el
M  lisp/cedet/ede/proj-comp.el
M  lisp/cedet/ede/proj-elisp.el
M  lisp/cedet/ede/proj-info.el
M  lisp/cedet/ede/proj-misc.el
M  lisp/cedet/ede/proj-obj.el
M  lisp/cedet/ede/proj-prog.el
M  lisp/cedet/ede/proj-scheme.el
M  lisp/cedet/ede/proj-shared.el
M  lisp/cedet/ede/proj.el
M  lisp/cedet/ede/project-am.el
M  lisp/cedet/ede/shell.el
M  lisp/cedet/ede/simple.el
M  lisp/cedet/ede/source.el
M  lisp/cedet/ede/speedbar.el
M  lisp/cedet/ede/util.el
M  lisp/cedet/semantic/analyze.el
M  lisp/cedet/semantic/analyze/refs.el
M  lisp/cedet/semantic/bovine/debug.el
M  lisp/cedet/semantic/complete.el
M  lisp/cedet/semantic/db-ebrowse.el
M  lisp/cedet/semantic/db-el.el
M  lisp/cedet/semantic/db-file.el
M  lisp/cedet/semantic/db-find.el
M  lisp/cedet/semantic/db-global.el
M  lisp/cedet/semantic/db-javascript.el
M  lisp/cedet/semantic/db-ref.el
M  lisp/cedet/semantic/db-typecache.el
M  lisp/cedet/semantic/db.el
M  lisp/cedet/semantic/debug.el
M  lisp/cedet/semantic/decorate/include.el
M  lisp/cedet/semantic/doc.el
M  lisp/cedet/semantic/ede-grammar.el
M  lisp/cedet/semantic/ia-sb.el
M  lisp/cedet/semantic/mru-bookmark.el
M  lisp/cedet/semantic/scope.el
M  lisp/cedet/semantic/symref.el
M  lisp/cedet/semantic/symref/cscope.el
M  lisp/cedet/semantic/symref/global.el
M  lisp/cedet/semantic/symref/grep.el
M  lisp/cedet/semantic/symref/idutils.el
M  lisp/cedet/srecode/compile.el
M  lisp/cedet/srecode/dictionary.el
M  lisp/cedet/srecode/document.el
M  lisp/cedet/srecode/extract.el
M  lisp/cedet/srecode/fields.el
M  lisp/cedet/srecode/find.el
M  lisp/cedet/srecode/insert.el
M  lisp/cedet/srecode/map.el
M  lisp/cedet/srecode/semantic.el
M  lisp/cedet/srecode/table.el
M  lisp/comint.el
M  lisp/delsel.el
M  lisp/desktop.el
M  lisp/dired.el
M  lisp/doc-view.el
M  lisp/dom.el
M  lisp/emacs-lisp/byte-opt.el
M  lisp/emacs-lisp/byte-run.el
M  lisp/emacs-lisp/bytecomp.el
M  lisp/emacs-lisp/cconv.el
M  lisp/emacs-lisp/check-declare.el
M  lisp/emacs-lisp/checkdoc.el
M  lisp/emacs-lisp/cl-generic.el
M  lisp/emacs-lisp/cl-indent.el
M  lisp/emacs-lisp/cl-lib.el
M  lisp/emacs-lisp/cl-macs.el
M  lisp/emacs-lisp/cl-preloaded.el
M  lisp/emacs-lisp/debug.el
M  lisp/emacs-lisp/easy-mmode.el
M  lisp/emacs-lisp/edebug.el
M  lisp/emacs-lisp/eieio-base.el
M  lisp/emacs-lisp/eieio-compat.el
M  lisp/emacs-lisp/eieio-core.el
M  lisp/emacs-lisp/eieio-custom.el
M  lisp/emacs-lisp/eieio-datadebug.el
M  lisp/emacs-lisp/eieio-opt.el
M  lisp/emacs-lisp/eieio.el
A  lisp/emacs-lisp/generator.el
M  lisp/emacs-lisp/gv.el
M  lisp/emacs-lisp/lisp-mode.el
M  lisp/emacs-lisp/lisp.el
M  lisp/emacs-lisp/macroexp.el
M  lisp/emacs-lisp/package-x.el
M  lisp/emacs-lisp/package.el
M  lisp/emacs-lisp/pcase.el
M  lisp/emacs-lisp/seq.el
M  lisp/emacs-lisp/smie.el
D  lisp/emacs-parallel/README.org
D  lisp/emacs-parallel/parallel-remote.el
D  lisp/emacs-parallel/parallel-xwidget.el
D  lisp/emacs-parallel/parallel.el
M  lisp/emulation/viper-cmd.el
M  lisp/emulation/viper-init.el
M  lisp/emulation/viper-keym.el
M  lisp/erc/ChangeLog
M  lisp/erc/erc-spelling.el
M  lisp/erc/erc.el
M  lisp/eshell/em-hist.el
M  lisp/eshell/em-pred.el
M  lisp/eshell/esh-mode.el
M  lisp/facemenu.el
M  lisp/faces.el
M  lisp/filecache.el
M  lisp/files.el
M  lisp/font-lock.el
M  lisp/frame.el
M  lisp/frameset.el
M  lisp/gnus/ChangeLog
M  lisp/gnus/gnus-art.el
M  lisp/gnus/gnus-int.el
M  lisp/gnus/gnus-msg.el
M  lisp/gnus/gnus-notifications.el
M  lisp/gnus/gnus-registry.el
M  lisp/gnus/gnus-start.el
M  lisp/gnus/gnus-sum.el
M  lisp/gnus/mail-source.el
M  lisp/gnus/mailcap.el
M  lisp/gnus/message.el
M  lisp/gnus/mm-decode.el
M  lisp/gnus/mm-util.el
M  lisp/gnus/mm-view.el
M  lisp/gnus/nnimap.el
M  lisp/gnus/nnir.el
M  lisp/gnus/nnmail.el
M  lisp/gnus/registry.el
M  lisp/help-fns.el
M  lisp/help-mode.el
M  lisp/help.el
M  lisp/hi-lock.el
M  lisp/ido.el
M  lisp/image-mode.el
M  lisp/info-look.el
M  lisp/international/fontset.el
M  lisp/international/quail.el
M  lisp/isearchb.el
M  lisp/json.el
M  lisp/ldefs-boot.el
M  lisp/leim/quail/hangul.el
M  lisp/mail/rmail.el
M  lisp/mail/rmailmm.el
M  lisp/mail/rmailsum.el
M  lisp/menu-bar.el
M  lisp/misearch.el
M  lisp/mouse.el
M  lisp/net/browse-url.el
M  lisp/net/dbus.el
M  lisp/net/eudcb-bbdb.el
M  lisp/net/eudcb-ldap.el
M  lisp/net/eww.el
M  lisp/net/ldap.el
M  lisp/net/network-stream.el
R  lisp/gnus/rfc2104.el -> lisp/net/rfc2104.el
A  lisp/net/sasl-scram-rfc.el
M  lisp/net/sasl.el
M  lisp/net/shr.el
M  lisp/net/tramp-adb.el
M  lisp/net/tramp-cache.el
M  lisp/net/tramp-gvfs.el
M  lisp/net/tramp-sh.el
M  lisp/net/tramp-smb.el
M  lisp/net/tramp.el
M  lisp/net/trampver.el
M  lisp/newcomment.el
M  lisp/obsolete/iswitchb.el
M  lisp/org/ChangeLog
M  lisp/outline.el
M  lisp/play/gamegrid.el
M  lisp/progmodes/cc-engine.el
M  lisp/progmodes/cc-mode.el
M  lisp/progmodes/cperl-mode.el
M  lisp/progmodes/elisp-mode.el
M  lisp/progmodes/f90.el
M  lisp/progmodes/gdb-mi.el
M  lisp/progmodes/gud.el
M  lisp/progmodes/js.el
M  lisp/progmodes/python.el
M  lisp/progmodes/ruby-mode.el
M  lisp/progmodes/sql.el
M  lisp/progmodes/verilog-mode.el
M  lisp/progmodes/vhdl-mode.el
M  lisp/progmodes/xref.el
M  lisp/rect.el
M  lisp/register.el
M  lisp/replace.el
M  lisp/server.el
M  lisp/simple.el
M  lisp/startup.el
M  lisp/subr.el
M  lisp/textmodes/artist.el
M  lisp/textmodes/css-mode.el
M  lisp/textmodes/flyspell.el
M  lisp/textmodes/ispell.el
M  lisp/textmodes/reftex-vars.el
M  lisp/textmodes/text-mode.el
M  lisp/url/ChangeLog
M  lisp/url/url-handlers.el
M  lisp/vc/vc-bzr.el
M  lisp/vc/vc-cvs.el
M  lisp/vc/vc-git.el
M  lisp/vc/vc-hg.el
M  lisp/vc/vc-hooks.el
M  lisp/vc/vc-mtn.el
M  lisp/vc/vc-rcs.el
M  lisp/vc/vc-sccs.el
M  lisp/vc/vc-src.el
M  lisp/vc/vc-svn.el
M  lisp/vc/vc.el
M  lisp/w32-vars.el
M  lisp/widget.el
M  lisp/windmove.el
M  lisp/window.el
M  lisp/winner.el
D  lisp/xwidget.el
M  lwlib/ChangeLog
M  lwlib/xlwmenu.c
A  m4/dirfd.m4
M  m4/dup2.m4
M  m4/fcntl.m4
M  m4/getdtablesize.m4
M  m4/gnulib-comp.m4
M  nt/ChangeLog
M  nt/INSTALL
M  nt/cmdproxy.c
M  nt/inc/ms-w32.h
M  src/ChangeLog
M  src/Makefile.in
M  src/alloc.c
M  src/bidi.c
M  src/buffer.c
M  src/bytecode.c
M  src/callint.c
M  src/callproc.c
M  src/character.c
M  src/character.h
M  src/charset.c
M  src/coding.c
M  src/data.c
M  src/dispextern.h
M  src/dispnew.c
M  src/editfns.c
M  src/emacs.c
M  src/emacsgtkfixed.c
M  src/emacsgtkfixed.h
M  src/eval.c
M  src/fileio.c
M  src/fns.c
M  src/font.c
M  src/frame.c
M  src/frame.h
M  src/ftfont.c
M  src/gtkutil.c
M  src/indent.c
M  src/intervals.h
M  src/keyboard.c
M  src/keymap.c
M  src/lisp.h
M  src/lread.c
M  src/menu.c
M  src/minibuf.c
M  src/nsfns.m
M  src/print.c
M  src/regex.c
M  src/search.c
M  src/sysdep.c
M  src/sysstdio.h
M  src/systime.h
M  src/termhooks.h
M  src/textprop.c
M  src/w32.c
M  src/w32fns.c
M  src/w32font.c
M  src/w32inevt.c
M  src/w32term.c
M  src/widget.c
M  src/window.c
M  src/xdisp.c
M  src/xfaces.c
M  src/xfns.c
M  src/xfont.c
M  src/xmenu.c
M  src/xml.c
M  src/xterm.c
M  src/xterm.h
D  src/xwidget.c
D  src/xwidget.h
M  test/ChangeLog
M  test/automated/cl-lib-tests.el
M  test/automated/eieio-test-methodinvoke.el
M  test/automated/eieio-test-persist.el
M  test/automated/eieio-tests.el
M  test/automated/f90.el
A  test/automated/finalizer-tests.el
A  test/automated/generator-tests.el
M  test/automated/package-test.el
M  test/automated/python-tests.el
A  test/automated/sasl-scram-rfc-tests.el
M  test/automated/seq-tests.el
M  test/automated/tramp-tests.el
M  test/automated/vc-tests.el
D  test/automated/xwidget-tests.el
M  test/cedet/srecode-tests.el
M  test/indent/Makefile
A  test/indent/js-indent-init-dynamic.js
A  test/indent/js-indent-init-t.js
M  test/indent/js.js
M  test/indent/ruby.rb
D  test/xwidget-test-manual.el

-- 
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org  www.gnu.org
Skype: No way! See stallman.org/skype.html.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-24 16:26           ` Harald Hanche-Olsen
  2015-03-26 10:54             ` Richard Stallman
@ 2015-03-26 10:54             ` Richard Stallman
  2015-03-26 15:10               ` John Wiegley
  2015-03-26 10:54             ` Richard Stallman
  2 siblings, 1 reply; 44+ messages in thread
From: Richard Stallman @ 2015-03-26 10:54 UTC (permalink / raw)
  To: Harald Hanche-Olsen; +Cc: schwab, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

Looking at man git-stash

       save [-p|--patch] [--[no-]keep-index] [-u|--include-untracked]
       [-a|--all] [-q|--quiet] [<message>]
           Save your local modifications to a new stash, and run git reset
           --hard to revert them. The <message> part is optional and gives the
           description along with the stashed state. For quickly making a
           snapshot, you can omit both "save" and <message>, but giving only
           <message> does not trigger this action to prevent a misspelled
           subcommand from making an unwanted stash.

That sounds dangerous so I didn't do it yet.  Is that what I should do?

       create
           Create a stash (which is a regular commit object) and return its
           object name, without storing it anywhere in the ref namespace.

I can't make concrete sense of that.

-- 
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org  www.gnu.org
Skype: No way! See stallman.org/skype.html.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-24 16:26           ` Harald Hanche-Olsen
  2015-03-26 10:54             ` Richard Stallman
  2015-03-26 10:54             ` Richard Stallman
@ 2015-03-26 10:54             ` Richard Stallman
  2 siblings, 0 replies; 44+ messages in thread
From: Richard Stallman @ 2015-03-26 10:54 UTC (permalink / raw)
  To: Harald Hanche-Olsen; +Cc: schwab, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

    If it were me, I would make sure to copy all changed files into a safe 
    place outside the git working tree to minimise any fallout from a failed 
    recovery attempt.

I don't know what all the changed files are.  I know which ones I changed
just recently.

-- 
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org  www.gnu.org
Skype: No way! See stallman.org/skype.html.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 10:54             ` Richard Stallman
@ 2015-03-26 11:11               ` Harald Hanche-Olsen
  2015-03-26 11:27                 ` Harald Hanche-Olsen
  2015-03-26 12:21                 ` Steinar Bang
  0 siblings, 2 replies; 44+ messages in thread
From: Harald Hanche-Olsen @ 2015-03-26 11:11 UTC (permalink / raw)
  To: rms; +Cc: schwab, emacs-devel

Richard Stallman wrote:
> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
> [[[ whether defending the US Constitution against all enemies,     ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
>    >  I think it might be useful if you posted the result of running “git
>    >  status -s” so we can assess the damage.
>
> Here it is.  I can only guess what the flags mean,

You can run “git help status” and read what it says under the heading 
“Short Format”.

 > but if 'M' means it
> is modified on this machine, I am very surprised -- I never touched
> most of those files.

The vast majority have M in the first column and a space in the second. 
That means they are modified in the index (uh, staging area is the 
modern name for it). They will be the result of the incomplete merge:
Most of them are files that have been modified in the remote repository 
but not locally. The Ds have been deleted, and the As have been added.

> M  .gitattributes
> M  CONTRIBUTE
 > […]

The only file with a non-blank second column is here:

> MM lisp/ChangeLog

That's your merge conflict.

I have to go now, no time for the next couple hours. But perhaps someone 
else will give you advice.

Perhaps it is useful if you also run these commands and report the output:

git show-ref HEAD
git show-ref master

The latter assuming you're on the master branch. Otherwise, replace 
“master” by emacs-24 or whatever branch you're on.

– Harald



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 11:11               ` Harald Hanche-Olsen
@ 2015-03-26 11:27                 ` Harald Hanche-Olsen
  2015-03-26 12:21                 ` Steinar Bang
  1 sibling, 0 replies; 44+ messages in thread
From: Harald Hanche-Olsen @ 2015-03-26 11:27 UTC (permalink / raw)
  To: rms; +Cc: schwab, emacs-devel

Harald Hanche-Olsen wrote:
> The vast majority have M in the first column and a space in the second.
> That means they are modified in the index (uh, staging area is the
> modern name for it). They will be the result of the incomplete merge:
> Most of them are files that have been modified in the remote repository
> but not locally. The Ds have been deleted, and the As have been added.

I could have added that this means those files marked M will be the 
result of successfully merging your changes with those in the remote. 
Think of it as the result piping diff output into patch. Or they are 
just the ones changed remotely, if you have made no local changes.

> I have to go now, no time for the next couple hours. But perhaps someone
> else will give you advice.

But now I *really* have to go.

– Harald



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 11:11               ` Harald Hanche-Olsen
  2015-03-26 11:27                 ` Harald Hanche-Olsen
@ 2015-03-26 12:21                 ` Steinar Bang
  2015-03-26 14:16                   ` Stefan Monnier
  2015-03-26 17:04                   ` Eli Zaretskii
  1 sibling, 2 replies; 44+ messages in thread
From: Steinar Bang @ 2015-03-26 12:21 UTC (permalink / raw)
  To: emacs-devel

>>>>> Harald Hanche-Olsen <hanche@math.ntnu.no>:

>> MM lisp/ChangeLog

> That's your merge conflict.

> I have to go now, no time for the next couple hours. But perhaps
> someone else will give you advice.

What I would do here is to open the ChangeLog in emacs and look for the
conflict markers (search for "<<" (without the quotes)) and see if they
make sense to me.  I then manually edit the result to what I want (I
remove the conflict markers, then either pick one of the alternatives,
both alternatives, or make a manual merge of the two, depending on what
the conflict is).

Once I'm satisfied with the results, I stage the ChangeLog file for the
merge commit:
 git add lisp/ChangeLog

Right now I've told git that I've seen the conflict and have manually
resolved it, and git will complete the merge when I give the following
command:
 git commit

(and as I said in a different post: I usually do this kind of merge
conflict resolution from magit)




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 12:21                 ` Steinar Bang
@ 2015-03-26 14:16                   ` Stefan Monnier
  2015-03-26 17:04                   ` Eli Zaretskii
  1 sibling, 0 replies; 44+ messages in thread
From: Stefan Monnier @ 2015-03-26 14:16 UTC (permalink / raw)
  To: emacs-devel

> What I would do here is to open the ChangeLog in emacs and look for the
> conflict markers (search for "<<" (without the quotes)) and see if they
> make sense to me.  I then manually edit the result to what I want (I
> remove the conflict markers, then either pick one of the alternatives,
> both alternatives, or make a manual merge of the two, depending on what
> the conflict is).

> Once I'm satisfied with the results, I stage the ChangeLog file for the
> merge commit:
>  git add lisp/ChangeLog

And if all went according to plan, Emacs-25 would have already done this
"git add" when you saved the file after removing the conflict markers.


        Stefan



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 10:54             ` Richard Stallman
@ 2015-03-26 15:10               ` John Wiegley
  0 siblings, 0 replies; 44+ messages in thread
From: John Wiegley @ 2015-03-26 15:10 UTC (permalink / raw)
  To: emacs-devel

>>>>> Richard Stallman <rms@gnu.org> writes:

> Looking at man git-stash

>        save [-p|--patch] [--[no-]keep-index] [-u|--include-untracked]
>        [-a|--all] [-q|--quiet] [<message>]
>            Save your local modifications to a new stash, and run git reset
>            --hard to revert them. The <message> part is optional and gives the
>            description along with the stashed state. For quickly making a
>            snapshot, you can omit both "save" and <message>, but giving only
>            <message> does not trigger this action to prevent a misspelled
>            subcommand from making an unwanted stash.

> That sounds dangerous so I didn't do it yet.  Is that what I should do?

Before you do a complex operation (such as a pull when you have both locally
committed changes, and locally uncommitted changes), you can run "git stash"
to safely squirrel away your work.  It sounds dangerous from the man page, but
it's a very safe operation.  I do it regularly.

Then, proceed with your complex operation.  Once you get everything back to a
sane and reasonable state, you can "git stash pop" to move your local changes
from the stash back to the working tree.  If these changes conflict, you will
be left with conflicted files that need manual resolution, but that is all.
Think of the stash as a highly temporary branch (which is what it really is,
behind the scenes) to which your work has been saved for the time being.

Some people have even created a "git-smart-pull" utility that automatically
does a stash save/pop when necessary before a pull, in order to be consistent
in their workflow.  I don't have a link handy, but others might also use it
and can comment.

John



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 12:21                 ` Steinar Bang
  2015-03-26 14:16                   ` Stefan Monnier
@ 2015-03-26 17:04                   ` Eli Zaretskii
  2015-03-26 19:02                     ` Steinar Bang
  1 sibling, 1 reply; 44+ messages in thread
From: Eli Zaretskii @ 2015-03-26 17:04 UTC (permalink / raw)
  To: Steinar Bang; +Cc: emacs-devel

> From: Steinar Bang <sb@dod.no>
> Date: Thu, 26 Mar 2015 13:21:04 +0100
> 
> What I would do here is to open the ChangeLog in emacs and look for the
> conflict markers (search for "<<" (without the quotes)) and see if they
> make sense to me.  I then manually edit the result to what I want (I
> remove the conflict markers, then either pick one of the alternatives,
> both alternatives, or make a manual merge of the two, depending on what
> the conflict is).
> 
> Once I'm satisfied with the results, I stage the ChangeLog file for the
> merge commit:
>  git add lisp/ChangeLog
> 
> Right now I've told git that I've seen the conflict and have manually
> resolved it, and git will complete the merge when I give the following
> command:
>  git commit
> 
> (and as I said in a different post: I usually do this kind of merge
> conflict resolution from magit)

What's wrong with smerge-mode?  It should kick in automatically when
you have conflict markers, and also invoke "git add" automatically for
every file saved after resolving all of its conflicts.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 10:27                 ` Rasmus
@ 2015-03-26 19:01                   ` Ricardo Wurmus
  2015-03-26 19:08                     ` Rasmus
  0 siblings, 1 reply; 44+ messages in thread
From: Ricardo Wurmus @ 2015-03-26 19:01 UTC (permalink / raw)
  To: Rasmus; +Cc: emacs-devel


Rasmus writes:

> to do that /without/ magit.  E.g. rebase -i and branch I find easier from
> CLI, though I try to force myself to explore magit more.

Interactive rebasing is really convenient with magit-log, in my opinion.

I just select the commit from which I want to rebase and hit E.  In the
resulting buffer I can move around commits or mark them for further
actions.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 17:04                   ` Eli Zaretskii
@ 2015-03-26 19:02                     ` Steinar Bang
  2015-03-26 20:29                       ` Eli Zaretskii
  0 siblings, 1 reply; 44+ messages in thread
From: Steinar Bang @ 2015-03-26 19:02 UTC (permalink / raw)
  To: emacs-devel

>>>>> Eli Zaretskii <eliz@gnu.org>:

> What's wrong with smerge-mode?

I haven't tried it yet.  I just heard about it 24 days ago (the thread
"smerge-mode is fantastic, but it annoys me").

> It should kick in automatically when you have conflict markers,

Um... since when...?  24.4?  Or git master HEAD?

> and also invoke "git add" automatically for every file saved after
> resolving all of its conflicts.

Is that configurable?  It sounds like a step I would like to control
myself.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 19:01                   ` Ricardo Wurmus
@ 2015-03-26 19:08                     ` Rasmus
  2015-03-26 23:41                       ` Jonas Bernoulli
  0 siblings, 1 reply; 44+ messages in thread
From: Rasmus @ 2015-03-26 19:08 UTC (permalink / raw)
  To: rekado; +Cc: emacs-devel

Ricardo Wurmus <rekado@elephly.net> writes:

> Rasmus writes:
>
>> to do that /without/ magit.  E.g. rebase -i and branch I find easier from
>> CLI, though I try to force myself to explore magit more.
>
> Interactive rebasing is really convenient with magit-log, in my opinion.
>
> I just select the commit from which I want to rebase and hit E.  In the
> resulting buffer I can move around commits or mark them for further
> actions.

Thanks for the tip.  It sounds cool, and I'll check it out.  I never
considered doing it from the the log view.  I think the manual mentions R
or something like that from the main view, but I checked it a while back.

—Rasmus

-- 
One thing that is clear: it's all down hill from here 



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 19:02                     ` Steinar Bang
@ 2015-03-26 20:29                       ` Eli Zaretskii
  2015-03-26 22:34                         ` Stefan Monnier
  2015-03-27 19:30                         ` Steinar Bang
  0 siblings, 2 replies; 44+ messages in thread
From: Eli Zaretskii @ 2015-03-26 20:29 UTC (permalink / raw)
  To: Steinar Bang; +Cc: emacs-devel

> From: Steinar Bang <sb@dod.no>
> Date: Thu, 26 Mar 2015 20:02:58 +0100
> 
> > It should kick in automatically when you have conflict markers,
> 
> Um... since when...?  24.4?  Or git master HEAD?

It needs support from the VC backend.  It was working with bzr for a
long time, but vc-git only has that support on master.

> > and also invoke "git add" automatically for every file saved after
> > resolving all of its conflicts.
> 
> Is that configurable?  It sounds like a step I would like to control
> myself.

It's a minor mode, so of course it's configurable: just switch it off.
Or remove its hook from find-file-hook.  (Not that I understand why
would you want to.)



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 20:29                       ` Eli Zaretskii
@ 2015-03-26 22:34                         ` Stefan Monnier
  2015-03-27  7:24                           ` Eli Zaretskii
  2015-03-27 19:30                         ` Steinar Bang
  1 sibling, 1 reply; 44+ messages in thread
From: Stefan Monnier @ 2015-03-26 22:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Steinar Bang, emacs-devel

>> Is that configurable?

Not currently, no.

>> It sounds like a step I would like to control myself.

There's a (recentish) bug report about that, indeed.

> It's a minor mode, so of course it's configurable: just switch it off.

The "git add" part is independent from smerge-mode (tho they're linked
by the fact that they both depend on the VC backend being able to
recognize that a file has conflicts).  So turning smerge-mode off won't help.


        Stefan



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 19:08                     ` Rasmus
@ 2015-03-26 23:41                       ` Jonas Bernoulli
  0 siblings, 0 replies; 44+ messages in thread
From: Jonas Bernoulli @ 2015-03-26 23:41 UTC (permalink / raw)
  To: Rasmus; +Cc: rekado, emacs-devel


Rasmus <rasmus@gmx.us> writes:

> Ricardo Wurmus <rekado@elephly.net> writes:
>
>> Rasmus writes:
>>
>>> to do that /without/ magit.  E.g. rebase -i and branch I find easier from
>>> CLI, though I try to force myself to explore magit more.
>>
>> Interactive rebasing is really convenient with magit-log, in my opinion.
>>
>> I just select the commit from which I want to rebase and hit E.  In the
>> resulting buffer I can move around commits or mark them for further
>> actions.

This is not git's rebase but "rewriting" which is a Magit specific and
very bad implementation of the same basic idea.  I have removed it from
the next branch.  Don't use it.

> Thanks for the tip.  It sounds cool, and I'll check it out.  I never
> considered doing it from the the log view.  I think the manual mentions R
> or something like that from the main view, but I checked it a while back.

That's one area that has seen many improvements on the next
branch.  Some preliminary documentation can be found here:
https://github.com/magit/magit/wiki/History-Manipulation.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 22:34                         ` Stefan Monnier
@ 2015-03-27  7:24                           ` Eli Zaretskii
  2015-03-27 13:09                             ` Stefan Monnier
  2015-03-27 19:35                             ` Steinar Bang
  0 siblings, 2 replies; 44+ messages in thread
From: Eli Zaretskii @ 2015-03-27  7:24 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: sb, emacs-devel

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: Steinar Bang <sb@dod.no>,  emacs-devel@gnu.org
> Date: Thu, 26 Mar 2015 18:34:21 -0400
> 
> > It's a minor mode, so of course it's configurable: just switch it off.
> 
> The "git add" part is independent from smerge-mode (tho they're linked
> by the fact that they both depend on the VC backend being able to
> recognize that a file has conflicts).  So turning smerge-mode off won't help.

It wasn't clear from the question what needs to be configurable.
There was another advice, which you elided, that would disable "git
add" as well.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-27  7:24                           ` Eli Zaretskii
@ 2015-03-27 13:09                             ` Stefan Monnier
  2015-03-27 19:35                             ` Steinar Bang
  1 sibling, 0 replies; 44+ messages in thread
From: Stefan Monnier @ 2015-03-27 13:09 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: sb, emacs-devel

>> > It's a minor mode, so of course it's configurable: just switch it off.
>> The "git add" part is independent from smerge-mode (tho they're linked
>> by the fact that they both depend on the VC backend being able to
>> recognize that a file has conflicts).  So turning smerge-mode off won't help.
> It wasn't clear from the question what needs to be configurable.
> There was another advice, which you elided, that would disable "git
> add" as well.

IIUC removing vc-find-file-hook from find-file-hook would have other
effects beside avoiding the "git add" (IIRC the main one would be to
not auto-enable smerge-mode).

To only skip the "git add", you'd need to

    (remove-hook 'after-save-hook 'vc-git-resolve-when-done 'local)

but this needs to be done after the corresponding `add-hook'.  I haven't
checked, but the following might/should work:

    (add-hook 'find-file-hook
              (lambda ()
                (remove-hook 'after-save-hook 'vc-git-resolve-when-done 'local))
              ;; Put it after VC's vc-find-file-hook.
              'append)


-- Stefan



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-26 20:29                       ` Eli Zaretskii
  2015-03-26 22:34                         ` Stefan Monnier
@ 2015-03-27 19:30                         ` Steinar Bang
  1 sibling, 0 replies; 44+ messages in thread
From: Steinar Bang @ 2015-03-27 19:30 UTC (permalink / raw)
  To: emacs-devel

>>>>> Eli Zaretskii <eliz@gnu.org>:

>> From: Steinar Bang <sb@dod.no>

>> > It should kick in automatically when you have conflict markers,

>> Um... since when...?  24.4?  Or git master HEAD?

> It needs support from the VC backend.  It was working with bzr for a
> long time, but vc-git only has that support on master.

Ok, it'll be a while until I see it, then.

(Gnus and org comes from git, but my emacs is the newest released
version)

>> Is that configurable?  It sounds like a step I would like to control
>> myself.

> It's a minor mode, so of course it's configurable: just switch it off.
> Or remove its hook from find-file-hook.  (Not that I understand why
> would you want to.)

It's just I like to inspect before I stage.

Force of habit, I guess...

(Another thing is that when I go back to magit it won't have display the
staged file, and it feels like more correct to do 's' to stage the file,
instead of 'g' to refresh magit)

Nothing important in other words.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-27  7:24                           ` Eli Zaretskii
  2015-03-27 13:09                             ` Stefan Monnier
@ 2015-03-27 19:35                             ` Steinar Bang
  2015-03-27 19:59                               ` Eli Zaretskii
  1 sibling, 1 reply; 44+ messages in thread
From: Steinar Bang @ 2015-03-27 19:35 UTC (permalink / raw)
  To: emacs-devel

>>>>> Eli Zaretskii <eliz@gnu.org>:

> It wasn't clear from the question what needs to be configurable.

I just wanted to switch off the automatic "git add" bit.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-27 19:35                             ` Steinar Bang
@ 2015-03-27 19:59                               ` Eli Zaretskii
  2015-03-27 20:36                                 ` Steinar Bang
  0 siblings, 1 reply; 44+ messages in thread
From: Eli Zaretskii @ 2015-03-27 19:59 UTC (permalink / raw)
  To: Steinar Bang; +Cc: emacs-devel

> From: Steinar Bang <sb@dod.no>
> Date: Fri, 27 Mar 2015 20:35:09 +0100
> 
> >>>>> Eli Zaretskii <eliz@gnu.org>:
> 
> > It wasn't clear from the question what needs to be configurable.
> 
> I just wanted to switch off the automatic "git add" bit.

Then I wonder why you'd want smerge-mode at all.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-27 19:59                               ` Eli Zaretskii
@ 2015-03-27 20:36                                 ` Steinar Bang
  0 siblings, 0 replies; 44+ messages in thread
From: Steinar Bang @ 2015-03-27 20:36 UTC (permalink / raw)
  To: emacs-devel

>>>>> Eli Zaretskii <eliz@gnu.org>:

> Then I wonder why you'd want smerge-mode at all.

The "is fantastic" part of the subject of the mentioned thread, makes it
quite possible that I'll try it out when it eventually comes my way.

Maybe I'll love it, maybe I'll hate it, maybe I'll disable the automated
add... who knows...?

The future is full of possibilites.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-03-22 14:17 git is screwed Richard Stallman
  2015-03-22 14:53 ` Andreas Schwab
       [not found] ` <20150322154147.GA6808@Tron.local>
@ 2015-04-01 20:41 ` Harald Hanche-Olsen
  2015-04-03 11:00   ` Richard Stallman
  2 siblings, 1 reply; 44+ messages in thread
From: Harald Hanche-Olsen @ 2015-04-01 20:41 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

Maybe it is time to revisit this one, in light of what we have learned 
since.

Richard Stallman wrote:
> I committed some changes using C-x v v in vc-dir.
> Something went wrong with lisp/ChangeLog.
>
> It appears that my change log entries went into an old version of that
> file; I don't know why this happened, since I wrote them today after
> doing 'git pull'.

(“today” in this email is March 22)

Ah, but we have the output of git reflog now:

dca743f HEAD@{0}: commit: Recognize more format variation. Automatically 
reshow decrypted text.
1a80be1 HEAD@{1}: commit: Echo area shows when displaying a mime message.
414e79f HEAD@{2}: commit: Prefer IceCat to Firefox and Iceweasel.
f1cea3e HEAD@{3}: checkout: moving from TEST to master
f1cea3e HEAD@{4}: checkout: moving from master to TEST
f1cea3e HEAD@{5}: pull: Fast-forward
3517da7 Head@{6}: clone: from rms@git.sv.gnu.org:/srv/git/emacs.git

and there are no traces here of a successful pull after those three 
commits, which by the wat were all done in quick succession on March 22. 
The commit they are based on is f1cea3e, which is indeed about 8 weeks 
old. So it appears that your git pull failed, and you did edit an old 
lisp/ChangeLog.

> After this, I did 'git pull' again, and it said there was a merge
> conflict in lisp/ChangeLpg.  A lot of text appears to be missing from
> the file.  It said, "fix conflicts and then commit the result."
>
> I edited lisp/ChangeLog and tried to commit it with C-x v v.
> That gave me the error message
>
>    fatal: cannot do a partial commit during a merge.
>
> I am now stuck.  […]
>
> How can I get this unwedged?

We have also learned that “git ls-files -u” produces no output. That 
simplifies the available options somewhat, I think, since there are no 
unmerged files to deal with (they complicate the index quite a lot, 
since there may be several versions of these files there).

The only file different in the index and your working tree is 
lisp/ChangeLog. If you run “git diff”, you should see the difference 
between those two (in that order), and nothing else. If based on the 
output, you think the version in your working tree is more appropriate 
than the one in the index, you should go ahead and run “git add 
lisp/ChangeLog”. Otherwise, edit it further until satisfied, then run 
“git add lisp/ChangeLog”, at which point your working tree and index are 
in agreement (and “git diff” should produce no output).

The next thing you could try, is to run this command:

   git diff origin/master

This shows the difference between what is now in the working tree and 
what got fetched on your last I expect you will see all the changes you 
have made in your recent work, and nothing else. If so, go ahead and run 
“git commit“, but don't try to push yet. Your repository should now be 
in a sane state.

The only problem is that your latest additions – the ones you tried to 
commit with the initial C-x v v – will now be mixed in with the merge 
commit, which obscures the history. We might want to look into fixing 
that next.

– Harald



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: git is screwed
  2015-04-01 20:41 ` Harald Hanche-Olsen
@ 2015-04-03 11:00   ` Richard Stallman
  0 siblings, 0 replies; 44+ messages in thread
From: Richard Stallman @ 2015-04-03 11:00 UTC (permalink / raw)
  To: Harald Hanche-Olsen; +Cc: emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > and there are no traces here of a successful pull after those three 
  > commits, which by the wat were all done in quick succession on March 22. 
  > The commit they are based on is f1cea3e, which is indeed about 8 weeks 
  > old. So it appears that your git pull failed, and you did edit an old 
  > lisp/ChangeLog.

Maybe I did not recognize that it failed.

-- 
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org  www.gnu.org
Skype: No way! See stallman.org/skype.html.




^ permalink raw reply	[flat|nested] 44+ messages in thread

end of thread, other threads:[~2015-04-03 11:00 UTC | newest]

Thread overview: 44+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-22 14:17 git is screwed Richard Stallman
2015-03-22 14:53 ` Andreas Schwab
2015-03-23  3:25   ` Richard Stallman
     [not found] ` <20150322154147.GA6808@Tron.local>
     [not found]   ` <E1YZszx-0004Ff-JK@fencepost.gnu.org>
2015-03-23  4:52     ` Sam Gwydir
2015-03-23  9:56       ` Harald Hanche-Olsen
2015-03-24 15:54         ` Richard Stallman
2015-03-24 16:26           ` Harald Hanche-Olsen
2015-03-26 10:54             ` Richard Stallman
2015-03-26 11:11               ` Harald Hanche-Olsen
2015-03-26 11:27                 ` Harald Hanche-Olsen
2015-03-26 12:21                 ` Steinar Bang
2015-03-26 14:16                   ` Stefan Monnier
2015-03-26 17:04                   ` Eli Zaretskii
2015-03-26 19:02                     ` Steinar Bang
2015-03-26 20:29                       ` Eli Zaretskii
2015-03-26 22:34                         ` Stefan Monnier
2015-03-27  7:24                           ` Eli Zaretskii
2015-03-27 13:09                             ` Stefan Monnier
2015-03-27 19:35                             ` Steinar Bang
2015-03-27 19:59                               ` Eli Zaretskii
2015-03-27 20:36                                 ` Steinar Bang
2015-03-27 19:30                         ` Steinar Bang
2015-03-26 10:54             ` Richard Stallman
2015-03-26 15:10               ` John Wiegley
2015-03-26 10:54             ` Richard Stallman
2015-03-25  8:29           ` Steinar Bang
2015-03-25 10:29             ` Artur Malabarba
2015-03-25 12:41             ` Stefan Monnier
2015-03-25 13:42               ` Steinar Bang
2015-03-25 14:32               ` Artur Malabarba
2015-03-25 23:23               ` Jonas Bernoulli
2015-03-26  0:35                 ` Stefan Monnier
2015-03-26  1:42                 ` John Yates
2015-03-26  2:04                   ` Stefan Monnier
2015-03-26  8:00                 ` Steinar Bang
2015-03-26  8:28                   ` Alexis
2015-03-26  8:41                     ` Alexis
2015-03-26  8:58                   ` Artur Malabarba
2015-03-26 10:27                 ` Rasmus
2015-03-26 19:01                   ` Ricardo Wurmus
2015-03-26 19:08                     ` Rasmus
2015-03-26 23:41                       ` Jonas Bernoulli
2015-04-01 20:41 ` Harald Hanche-Olsen
2015-04-03 11:00   ` Richard Stallman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).