-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 On March 13, 2015 10:56:56 AM EAT, Fredrik Gustafsson <[email protected]> wrote: >On Thu, Mar 12, 2015 at 02:38:23PM -0700, Ben Fritz wrote: >> And, Mercurial is a tool that makes it very hard to shoot yourself in >> the foot. Git makes it very easy to lose data permanently, even when >> you're doing something like a *push* which should *never* lose data >in >> my opinion. Mercurial also is a lot easier to pick up with fewer >> concepts that need understanding. So I think people who occasionally >> need to dabble in Mercurial are probably better off than people who >> occasionally need to dabble in git. > >I don't care about if vim uses mercurial or git, but please don't use >FUD as an argument. > >It's _very hard_ to loose data with git, and you can't loose data with >a >push.
... as long as you control the server. > >What you probably mean is that a push -f would move your branch >pointer, >possible to a branch that does not contain all commits. Now this is >stupid to do if it's a public branch, so hopefully this will be denied >by the server (if the server is setup correctly). Github servers are not by default. > >Second, if a commit become unrefered by any branch or tag, it will be >garbage collected, but first after 2 weeks. Which is of no use if don't control the server and don't have the commits locally. > >Third, you have a list of all commits you've been on, so a it's not >hard >to look up the previous branch position. Absolutely pointless. You can make unreachable those commits that *never* were in your repository locally. Here is the story: Background: most of the projects I develop on GH are developed in my fork and I run PRs to the upstream whether or not I have push access. Since I may develop more then one branch at once I aliased 'git p' to 'git push --all' (origin is my clone). This works well since nobody, but me pushes to my fork. One project (VAM) was different: it was the first project on GH I actively participated and after gaining push access I stopped using my fork. Once I was developing my branch, rebased it on master and squashed some commits, then force-pushed. I guess you now understand the issue: of course I was using usual shortcut. And I forgot to pull prior to this. So I happened to force-push my branch *and* master, *and* I did not have commits locally that became now unreachable. This story resolved by using commits from @MarcWeber local clone and I adjusted my development process to avoid this in the future. But there are two morals here: 1. When developing using git you need to be aware that you *can* destroy other people's work on remote repository and adjust your development process accordingly. (AFAIK GH allows you to deny non-ff pulls to certain branches. But this is not the default.) 2. You *can't* do this with mercurial. Also note that remote history rewriting using mercurial changeset evolution looks more promising if you can tell the server that you need to pull removed changesets (they are *always* there, just not send by the server by default). Unfortunately, mercurial authors for some reason think changeset evolution replaces mq... PS: Based on how many changes were made to git to the "core" concepts in past few years (== none AFAIR) I think that git architecture simply does not *allow* developers to do such changes like adding branches (git has bookmarks, mercurial also does, but they were *added* not too long ago) or changeset evolution, or phases. -----BEGIN PGP SIGNATURE----- Version: APG v1.1.1 iQI1BAEBCgAfBQJVAwKDGBxaeVggPHp5eC52aW1AZ21haWwuY29tPgAKCRB2r/1b STKPjvr7D/411ojY4KMVq7bsdb9D282Rdl4YYstG8O7bCUlSWPUzlc3DcBxnz9m0 FGuBVlaijb7LBS3/n3bMqCTz7+TliHlORharaPhprddpc9mTsZRlFf1ZoC+uwIiE wVVS8acmNyCS7cKv5548KqT7sJ1nwxrbuPyRHter784ZAFXMtHV99RffQYeg6wMM T8akkprA7V3hqNGyN75b8+9JICHWBjV1l1O6IQulIhYbqO/Rj4hfbO1SObPrhW66 PS4vm4+Ky2Fc4DgvEAWw4O1tsS0LdWkZoAxh2KVzU1/8AksMRrwjqmr9OAYnSSvy DNZ4kMlcm+cWEtshiWtLKm9QRxbhng6/7tiKTY515Flwk4VwzMD0KvJ4G759Rcde 1m9sy0FOB4752gDOPMbIcT3zszrhKT9Dtec5Nk0I6VTHm6/EbsOnWrumnDuR0z+I O4PZO9jz6XWAzKOg1Jgpp1H3KEUK8plMp2ujTLJIHvOihshH5x1MRSIzrrC01s+N XZ5lTU0Mn+smk0G+MSJnMBkfLCvm+aMZEbjuGwxSxV8dYx/WK8RsDxjY7PFe7ydP Eh0QLdUPa2OTcXKEkX6yF9pmD8NyEEV8MVQbXRgCvp8FKD7+W05BhLCzCBMspUws x0uzqX11HsuRnI6MKSBEm1M+H4ltDLIkcoKAS5wSXK+PYJd0UsiOzA== =UfGO -----END PGP SIGNATURE----- -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
