{"thread":{"id":"41296","subject":"[bug] Possible Windows 'git mv' bug","startedAt":"2016-01-31T14:03:17Z","lastAt":"2016-02-01T06:32:19Z","messageCount":7,"participants":["Aaron Gray","Johannes Sixt","Doug Kelly","Torsten Bögershausen","Johannes Schindelin"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"277119","messageId":"CANkmNDd8GJmKGw9zToKS1ML3tg9Cx2iYQM0E8iHCO2TuQfwmAQ@mail.gmail.com","threadId":"41296","inReplyTo":null,"subject":"[bug] Possible Windows 'git mv' bug","fromName":"Aaron Gray","fromEmail":"aaronngray.lists@gmail.com","sentAt":"2016-01-31T14:03:17Z","receivedAt":"2016-01-31T14:03:17Z","isPatch":false,"sender":{"key":"aaronngray.lists@gmail.com","avatar":null},"body":"Hi,\n\nI think I have found a possible difference in behaviour between\nWindows git commandline distro and Linux git\n\nbasically If I do a :-\n\n    git mv logger.h Logger.h\n\nI get the following :-\n\n    fatal: destination exists, source=lib/logger.h, destination=lib/Logger.h\n\nIt looks and smells like a bug to me !\n\nRegards,\n\nAaron\n"},{"id":"277120","messageId":"56AE1F40.8060509@kdbg.org","threadId":"41296","inReplyTo":"CANkmNDd8GJmKGw9zToKS1ML3tg9Cx2iYQM0E8iHCO2TuQfwmAQ@mail.gmail.com","subject":"Re: [bug] Possible Windows 'git mv' bug","fromName":"Johannes Sixt","fromEmail":"j6t@kdbg.org","sentAt":"2016-01-31T14:50:40Z","receivedAt":"2016-01-31T14:50:40Z","isPatch":false,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Am 31.01.2016 um 15:03 schrieb Aaron Gray:\n> Hi,\n>\n> I think I have found a possible difference in behaviour between\n> Windows git commandline distro and Linux git\n>\n> basically If I do a :-\n>\n>      git mv logger.h Logger.h\n>\n> I get the following :-\n>\n>      fatal: destination exists, source=lib/logger.h, destination=lib/Logger.h\n>\n> It looks and smells like a bug to me !\n\nNot really. When you attempt to overwrite an existing file with 'git \nmv', you get this error message on both Windows and Linux.\n\nThe difference is that logger.h and Logger.h are the same file on \nWindows, but they are not on Linux. Hence, when you attempt to overwrite \nLogger.h on Windows, you see the error because it exists already (as \nlogger.h).\n\nAs a work-around, you can use -f.\n\n-- Hannes\n"},{"id":"277121","messageId":"CAEtYS8Qt1ewf3nAAiP_2ey5mV=9e3_To1fcaeV6f3+05uwHxgg@mail.gmail.com","threadId":"41296","inReplyTo":"56AE1F40.8060509@kdbg.org","subject":"Re: [bug] Possible Windows 'git mv' bug","fromName":"Doug Kelly","fromEmail":"dougk.ff7@gmail.com","sentAt":"2016-01-31T15:05:39Z","receivedAt":"2016-01-31T15:05:39Z","isPatch":false,"sender":{"key":"dougk.ff7@gmail.com","avatar":"https://avatars.githubusercontent.com/u/93357?v=4"},"body":"On Sun, Jan 31, 2016 at 8:50 AM, Johannes Sixt <j6t@kdbg.org> wrote:\n> Am 31.01.2016 um 15:03 schrieb Aaron Gray:\n>>\n>> Hi,\n>>\n>> I think I have found a possible difference in behaviour between\n>> Windows git commandline distro and Linux git\n>>\n>> basically If I do a :-\n>>\n>>      git mv logger.h Logger.h\n>>\n>> I get the following :-\n>>\n>>      fatal: destination exists, source=lib/logger.h,\n>> destination=lib/Logger.h\n>>\n>> It looks and smells like a bug to me !\n>\n>\n> Not really. When you attempt to overwrite an existing file with 'git mv',\n> you get this error message on both Windows and Linux.\n>\n> The difference is that logger.h and Logger.h are the same file on Windows,\n> but they are not on Linux. Hence, when you attempt to overwrite Logger.h on\n> Windows, you see the error because it exists already (as logger.h).\n>\n> As a work-around, you can use -f.\n>\n> -- Hannes\n\nIndeed.  And just to clarify, you'll get the same issue on OS X, where\nthe filesystem is also case-preserving, not case-sensitive (by\ndefault, at least).  I've never tried using -f for this, but I'll\nusually use git mv twice to achieve the same result.  Annoying, but\nthat way my local directory looks correct, too.\n"},{"id":"277122","messageId":"CANkmNDfzxf045izkZV_Ps6_s0hA7q4kziu3u+BRexX-FOkgyWA@mail.gmail.com","threadId":"41296","inReplyTo":"CAEtYS8Qt1ewf3nAAiP_2ey5mV=9e3_To1fcaeV6f3+05uwHxgg@mail.gmail.com","subject":"Re: [bug] Possible Windows 'git mv' bug","fromName":"Aaron Gray","fromEmail":"aaronngray.lists@gmail.com","sentAt":"2016-01-31T15:36:44Z","receivedAt":"2016-01-31T15:36:44Z","isPatch":false,"sender":{"key":"aaronngray.lists@gmail.com","avatar":null},"body":"On 31 January 2016 at 15:05, Doug Kelly <dougk.ff7@gmail.com> wrote:\n> On Sun, Jan 31, 2016 at 8:50 AM, Johannes Sixt <j6t@kdbg.org> wrote:\n>> Am 31.01.2016 um 15:03 schrieb Aaron Gray:\n>>> I think I have found a possible difference in behaviour between\n>>> Windows git commandline distro and Linux git\n>>>\n>>> basically If I do a :-\n>>>\n>>>      git mv logger.h Logger.h\n>>>\n>>> I get the following :-\n>>>\n>>>      fatal: destination exists, source=lib/logger.h,\n>>> destination=lib/Logger.h\n>>>\n>\n> Indeed.  And just to clarify, you'll get the same issue on OS X, where\n> the filesystem is also case-preserving, not case-sensitive (by\n> default, at least).  I've never tried using -f for this, but I'll\n> usually use git mv twice to achieve the same result.  Annoying, but\n> that way my local directory looks correct, too.\n\nAh, double up via a temporary name, cool hack !\n\nAaron\n"},{"id":"277123","messageId":"CANkmNDedU90cHon13HaFfE+Ok=5ZtcBOa7mEkZm-eHNMFJd5KA@mail.gmail.com","threadId":"41296","inReplyTo":"56AE1F40.8060509@kdbg.org","subject":"Re: [bug] Possible Windows 'git mv' bug","fromName":"Aaron Gray","fromEmail":"aaronngray.lists@gmail.com","sentAt":"2016-01-31T15:38:06Z","receivedAt":"2016-01-31T15:38:06Z","isPatch":false,"sender":{"key":"aaronngray.lists@gmail.com","avatar":null},"body":"On 31 January 2016 at 14:50, Johannes Sixt <j6t@kdbg.org> wrote:\n> Am 31.01.2016 um 15:03 schrieb Aaron Gray:\n>>\n>> Hi,\n>>\n>> I think I have found a possible difference in behaviour between\n>> Windows git commandline distro and Linux git\n>>\n>> basically If I do a :-\n>>\n>>      git mv logger.h Logger.h\n>>\n>> I get the following :-\n>>\n>>      fatal: destination exists, source=lib/logger.h,\n>> destination=lib/Logger.h\n>>\n>> It looks and smells like a bug to me !\n>\n>\n> Not really. When you attempt to overwrite an existing file with 'git mv',\n> you get this error message on both Windows and Linux.\n>\n> The difference is that logger.h and Logger.h are the same file on Windows,\n> but they are not on Linux. Hence, when you attempt to overwrite Logger.h on\n> Windows, you see the error because it exists already (as logger.h).\n>\n> As a work-around, you can use -f.\n\nThanks Hannes !\n\nStill a bug though IMHO\n\nAaron\n"},{"id":"277124","messageId":"56AE2DBF.1010502@web.de","threadId":"41296","inReplyTo":"CANkmNDd8GJmKGw9zToKS1ML3tg9Cx2iYQM0E8iHCO2TuQfwmAQ@mail.gmail.com","subject":"Re: [bug] Possible Windows 'git mv' bug","fromName":"Torsten Bögershausen","fromEmail":"tboegi@web.de","sentAt":"2016-01-31T15:52:31Z","receivedAt":"2016-01-31T15:52:31Z","isPatch":false,"sender":{"key":"tboegi@web.de","avatar":"https://avatars.githubusercontent.com/u/7138363?v=4"},"body":"On 2016-01-31 15.03, Aaron Gray wrote:\n> Hi,\n> \n> I think I have found a possible difference in behaviour between\n> Windows git commandline distro and Linux git\n> \n> basically If I do a :-\n> \n>     git mv logger.h Logger.h\n> \n> I get the following :-\n> \n>     fatal: destination exists, source=lib/logger.h, destination=lib/Logger.h\n> \n> It looks and smells like a bug to me !\nWhich version of Git are you using ?\nBecause it is fixed in the latest version in Git and Git for Windows.\n"},{"id":"277159","messageId":"alpine.DEB.2.20.1602010723510.2964@virtualbox","threadId":"41296","inReplyTo":"56AE2DBF.1010502@web.de","subject":"Re: [bug] Possible Windows 'git mv' bug","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2016-02-01T06:32:19Z","receivedAt":"2016-02-01T06:32:19Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Aaron,\n\nOn Sun, 31 Jan 2016, Torsten Bögershausen wrote:\n\n> On 2016-01-31 15.03, Aaron Gray wrote:\n> > \n> > I think I have found a possible difference in behaviour between\n> > Windows git commandline distro and Linux git\n> > \n> > basically If I do a :-\n> > \n> >     git mv logger.h Logger.h\n> > \n> > I get the following :-\n> > \n> >     fatal: destination exists, source=lib/logger.h, destination=lib/Logger.h\n> > \n> > It looks and smells like a bug to me !\n\nThanks for your bug report. Having said that, I would like to suggest a\ncouple improvements for future reference:\n\nGit for Windows' home page (https://git-for-windows.github.com/#contribute)\nasks explicitly to please open tickets on Git for Windows' bug tracker\n(https://github.com/git-for-windows/git/issues).\n\nAlso, at least one crucial bit of information is missing: the Git for\nWindows version. Typically this is enough, but the Windows version is\noften also crucial. To prevent crucial bits of information from missing, I\nhighly recommend volunteering information up front (in my mind, a good\nrule of thumb is: spend as much care crafting your bug report and thinking\nabout what to include as you would wish the combined readership would\nspend on helping you). If I may say so, I provided a good list of advices\nto help crafting bug reports:\nhttps://github.com/git-for-windows/git/wiki/Issue-reporting-guidelines\n\n> Which version of Git are you using ?\n> Because it is fixed in the latest version in Git and Git for Windows.\n\nAnother piece of advice I detail in our issue reporting guidelines is to\nsearch the existing bug tracker (one purpose of the tracker is to keep\ntrack of what has been reported and what has not yet been reported, after\nall).\n\nAnd indeed, I opened this ticket:\n\n\thttps://github.com/git-for-windows/git/issues/419\n\n... whose initial report incidentally also lacks the crucial information\nmentioned above! So I have to step up my own game, too.\n\nThis report *also* includes detailed information, though, in particular\nthat Torsten fixed this issue a long time ago, which suggests to me that\nyou are somehow still stuck with the 1.x train (run `git version` to find\nout).\n\nCiao,\nJohannes"}]}