{"thread":{"id":"39562","subject":"GIT for Microsoft Access projects","startedAt":"2015-06-08T14:45:17Z","lastAt":"2015-06-15T08:52:57Z","messageCount":12,"participants":["hackerp@suddenlink.net","Konstantin Khomoutov","Randall S. Becker","Sitaram Chamarty","Stefan Beller","Fredrik Gustafsson","Junio C Hamano","Thomas Koch"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"263220","messageId":"20150608094517.GY06Y.31914.root@txifep02","threadId":"39562","inReplyTo":null,"subject":"GIT for Microsoft Access projects","fromName":"","fromEmail":"hackerp@suddenlink.net","sentAt":"2015-06-08T14:45:17Z","receivedAt":"2015-06-08T14:45:17Z","isPatch":false,"sender":{"key":"hackerp@suddenlink.net","avatar":null},"body":"Hello,\n\nI'm Paul Hacker here in Tyler Texas.\n\nWe are looking for a software control system to keep track of our changes in software.\n\nMy question is, will GIT work with MS access forms, queries, tables, modules, etc?\n\nThanks for any help.\n\nPaul (yes my last name is Hacker!!)\n"},{"id":"263240","messageId":"20150608191458.9f6a93b0259a8ca0324c8dc0@domain007.com","threadId":"39562","inReplyTo":"20150608094517.GY06Y.31914.root@txifep02","subject":"Re: GIT for Microsoft Access projects","fromName":"Konstantin Khomoutov","fromEmail":"kostix+git@007spb.ru","sentAt":"2015-06-08T16:14:58Z","receivedAt":"2015-06-08T16:14:58Z","isPatch":false,"sender":{"key":"kostix+git@007spb.ru","avatar":null},"body":"On Mon, 8 Jun 2015 9:45:17 -0500\n<hackerp@suddenlink.net> wrote:\n\n[...]\n> My question is, will GIT work with MS access forms, queries, tables,\n> modules, etc?\n[...]\n\nGit works with files.  So in principle it will work with *files*\ncontaining your MS access stuff.\n\nBut Git will consider and treat those files as opaque blobs of data.\nThat is, you will get no \"fancy diffing\" like asking Git to graphically\n(or otherwise) show you what exact changes have been made to a\nparticular form or query between versions X and Y of a given MS access\ndocument -- all it will be able to show you is commit messages\ndescribing those changes.\n\nSo... If you're fine with this setting, Git will work for you,\nbut if not, it won't.\n\nOne last note: are you really sure you want an SCM/VCS tool to manage\nyour files and not a document management system (DMS) instead?\nI mean stuff like Alfresco (free software by the way) and the like.\n"},{"id":"263315","messageId":"002c01d0a236$c2504ac0$46f0e040$@nexbridge.com","threadId":"39562","inReplyTo":"20150608191458.9f6a93b0259a8ca0324c8dc0@domain007.com","subject":"RE: GIT for Microsoft Access projects","fromName":"Randall S. Becker","fromEmail":"rsbecker@nexbridge.com","sentAt":"2015-06-08T22:02:05Z","receivedAt":"2015-06-08T22:02:05Z","isPatch":false,"sender":{"key":"randall.becker@nexbridge.ca","avatar":"https://avatars.githubusercontent.com/u/28956764?v=4"},"body":"> -----Original Message-----\n> From: git-owner@vger.kernel.org [mailto:git-owner@vger.kernel.org] On\n> Behalf Of Konstantin Khomoutov\n> Sent: June 8, 2015 12:15 PM\n> To: hackerp@suddenlink.net\n> Cc: git@vger.kernel.org\n> Subject: Re: GIT for Microsoft Access projects\n> \n> On Mon, 8 Jun 2015 9:45:17 -0500\n> <hackerp@suddenlink.net> wrote:\n> \n> [...]\n> > My question is, will GIT work with MS access forms, queries, tables,\n> > modules, etc?\n> [...]\n> \n> Git works with files.  So in principle it will work with *files*\n> containing your MS access stuff.\n> \n> But Git will consider and treat those files as opaque blobs of data.\n> That is, you will get no \"fancy diffing\" like asking Git to graphically\n> (or otherwise) show you what exact changes have been made to a\n> particular form or query between versions X and Y of a given MS access\n> document -- all it will be able to show you is commit messages\n> describing those changes.\n> \n> So... If you're fine with this setting, Git will work for you,\n> but if not, it won't.\n> \n> One last note: are you really sure you want an SCM/VCS tool to manage\n> your files and not a document management system (DMS) instead?\n> I mean stuff like Alfresco (free software by the way) and the like.\n\nConsider also what you are specifically managing in MS Access. Are you\nlooking for management of configuration data, like settings, properties, and\nsuch, or is this transactional or user-related. If managing\nenvironment-specific content, it may be worth storing raw SQL INSERT\nstatements, with appropriate variable references, or export to XML/CSV, and\nhaving those in git so that the purpose for configuration-like data can be\nexplained and diff'ed.\n"},{"id":"263356","messageId":"5576F02B.4040002@gmail.com","threadId":"39562","inReplyTo":"20150608191458.9f6a93b0259a8ca0324c8dc0@domain007.com","subject":"Re: GIT for Microsoft Access projects","fromName":"Sitaram Chamarty","fromEmail":"sitaramc@gmail.com","sentAt":"2015-06-09T13:54:51Z","receivedAt":"2015-06-09T13:54:51Z","isPatch":false,"sender":{"key":"sitaramc@gmail.com","avatar":"https://avatars.githubusercontent.com/u/43316?v=4"},"body":"On 06/08/2015 09:44 PM, Konstantin Khomoutov wrote:\n> On Mon, 8 Jun 2015 9:45:17 -0500\n> <hackerp@suddenlink.net> wrote:\n> \n> [...]\n>> My question is, will GIT work with MS access forms, queries, tables,\n>> modules, etc?\n> [...]\n> \n> Git works with files.  So in principle it will work with *files*\n> containing your MS access stuff.\n> \n> But Git will consider and treat those files as opaque blobs of data.\n> That is, you will get no \"fancy diffing\" like asking Git to graphically\n\nMore importantly, you won't get any *merging*, which means you need to\nbe careful about two developers making changes to the same file.\n\nThis is the only situation where locking (a feature that is inherently\nat odds with the idea of a *distributed* VCS) is useful.\n\n> (or otherwise) show you what exact changes have been made to a\n> particular form or query between versions X and Y of a given MS access\n> document -- all it will be able to show you is commit messages\n> describing those changes.\n> \n> So... If you're fine with this setting, Git will work for you,\n> but if not, it won't.\n> \n> One last note: are you really sure you want an SCM/VCS tool to manage\n> your files and not a document management system (DMS) instead?\n> I mean stuff like Alfresco (free software by the way) and the like.\n> --\n> To unsubscribe from this list: send the line \"unsubscribe git\" in\n> the body of a message to majordomo@vger.kernel.org\n> More majordomo info at  http://vger.kernel.org/majordomo-info.html\n> \n"},{"id":"263380","messageId":"1433870383-7631-1-git-send-email-sbeller@google.com","threadId":"39562","inReplyTo":"5576F02B.4040002@gmail.com","subject":"git lock files (Was: GIT for Microsoft Access projects)","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2015-06-09T17:19:43Z","receivedAt":"2015-06-09T17:19:43Z","isPatch":false,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"Just because Git allows distributed workflows, doesn't mean we\nshould only focus on being distributed IMHO.\n\nThe question for content not being mergable easily pops up all\nthe time. (Game/Graphics designers, documents, all this binary\nstuff, where there is no good merge driver).\n\nI could imagine a \"git lock\" command which looks like this:\n\n    git config lock.centralServer origin\n    git config lock.defaultBranch master\n\n    git lock add [branch]  [--] <path/to/file>\n    git lock remove [branch] [--] <path/to/file>\n    git lock ls [<branch>]\n\nAnd the way this is implemented is roughly (unoptimized, just showing\nhow you would achieve this with todays command set):\n\n    git fetch --depth=1 $(git config --get lock.centralServer) refs/locks/$(git config --get lock.defaultBranch)\n    git checkout refs/locks/$(git config --get lock.centralServer)/$(git config --get lock.defaultBranch)\n    switch(option) {\n    case add:\n        if exist <path/to/file>\n            return -1\n        else\n            echo $(git config --get user.name) $(date) > <path/to/file>\n            git add <path/to/file> && git commit \"add new lock\"\n        fi\n    case remove:\n        if exist <path/to/file>\n            # todo: check if the same user locked it before\n            rm  <path/to/file>\n        else\n            return -1\n        fi\n    case ls:\n        ls -R .\n    }\n    git push $(git config --get lock.centralServer) refs/locks/$(git config --get lock.defaultBranch)\n    git <restore working tree, branch>\n\nThat said you could just manipulate the git objects directly, no need\nto check out to the working dir.\n\nThe server would only need to allow pushes to a refs/locks directory and be done.\nthe client side would need to have a plumbing command, so you could easily integrate\na git locking to your application if you don't want to provide a merge driver.\n\nThanks,\nStefan\n"},{"id":"263392","messageId":"20150609132144.ANWJW.73271.root@txifep04","threadId":"39562","inReplyTo":"1433870383-7631-1-git-send-email-sbeller@google.com","subject":"Re: git lock files (Was: GIT for Microsoft Access projects)","fromName":"","fromEmail":"hackerp@suddenlink.net","sentAt":"2015-06-09T18:21:44Z","receivedAt":"2015-06-09T18:21:44Z","isPatch":false,"sender":{"key":"hackerp@suddenlink.net","avatar":null},"body":"Thanks folks, I am digesting all you have said.\n\nNow the command line I can do (I'm a programmer) but the secretary here I doubt.\n\nSo is there at GUI interface for this? Does it work on Windows systems?\n\nThanks,\n\nPaul\n---- Stefan Beller <sbeller@google.com> wrote: \n> Just because Git allows distributed workflows, doesn't mean we\n> should only focus on being distributed IMHO.\n> \n> The question for content not being mergable easily pops up all\n> the time. (Game/Graphics designers, documents, all this binary\n> stuff, where there is no good merge driver).\n> \n> I could imagine a \"git lock\" command which looks like this:\n> \n>     git config lock.centralServer origin\n>     git config lock.defaultBranch master\n> \n>     git lock add [branch]  [--] <path/to/file>\n>     git lock remove [branch] [--] <path/to/file>\n>     git lock ls [<branch>]\n> \n> And the way this is implemented is roughly (unoptimized, just showing\n> how you would achieve this with todays command set):\n> \n>     git fetch --depth=1 $(git config --get lock.centralServer) refs/locks/$(git config --get lock.defaultBranch)\n>     git checkout refs/locks/$(git config --get lock.centralServer)/$(git config --get lock.defaultBranch)\n>     switch(option) {\n>     case add:\n>         if exist <path/to/file>\n>             return -1\n>         else\n>             echo $(git config --get user.name) $(date) > <path/to/file>\n>             git add <path/to/file> && git commit \"add new lock\"\n>         fi\n>     case remove:\n>         if exist <path/to/file>\n>             # todo: check if the same user locked it before\n>             rm  <path/to/file>\n>         else\n>             return -1\n>         fi\n>     case ls:\n>         ls -R .\n>     }\n>     git push $(git config --get lock.centralServer) refs/locks/$(git config --get lock.defaultBranch)\n>     git <restore working tree, branch>\n> \n> That said you could just manipulate the git objects directly, no need\n> to check out to the working dir.\n> \n> The server would only need to allow pushes to a refs/locks directory and be done.\n> the client side would need to have a plumbing command, so you could easily integrate\n> a git locking to your application if you don't want to provide a merge driver.\n> \n> Thanks,\n> Stefan\n> \n"},{"id":"263404","messageId":"20150609215059.dcbacca5d9fa3f7eb1683cb9@domain007.com","threadId":"39562","inReplyTo":"20150609132144.ANWJW.73271.root@txifep04","subject":"Re: git lock files (Was: GIT for Microsoft Access projects)","fromName":"Konstantin Khomoutov","fromEmail":"kostix+git@007spb.ru","sentAt":"2015-06-09T18:50:59Z","receivedAt":"2015-06-09T18:50:59Z","isPatch":false,"sender":{"key":"kostix+git@007spb.ru","avatar":null},"body":"On Tue, 9 Jun 2015 13:21:44 -0500\n<hackerp@suddenlink.net> wrote:\n\n> Thanks folks, I am digesting all you have said.\n> \n> Now the command line I can do (I'm a programmer) but the secretary\n> here I doubt.\n> \n> So is there at GUI interface for this? Does it work on Windows\n> systems?\n\nThat's why I asked whether the thing you do really want is a document\nmanagement system, not a version control system.\n\nYes, Git works on Windows thanks to folks behind the Git for Windows\nproject (often and errorneously called \"msysGit\" in the internets)\nand yes there do exist mature Windows GUI front-ends to it, with\nTortoiseGit and Git Extensions being supposedly the most visible picks.\n\nBut there's such thing as an irreducible complexity: while these tools\nstrive to be user-friendly, and TortoiseGit even tries to make you\nthink you're using Subversion rather than Git, they won't hide all the\nunderlying complexity of a DVCS tool, which Git is, from the user.\n\nSo... I bet for your random user, it would be much easier to switch to\nthe browser window and upload another version of their document there,\nwith a short note describing what they do and why.  This is how a\ntypical DMS works.  You won't get all that awesomness Git gives you to\nfiddle with your source code files but in return you'll get a system\nwhich requires next to zero training for any layman to use it.\n\nPlease rememeber about [1].  Many of the statements that post does are\noutdated but its essense remains to be true when it comes to handing\noff Git to users not possessing ninja-level computer skills.\nI especially recommend to think through this particular passage:\n\n| They often struggle to use version control at all; are you now going\n| to teach them the difference between “pull” and “update”, between\n| “commit” and “push”? Look me in the eyes and say that with a straight\n| face.\n\nI also wonder how do you intend to explain them why they can't push\nbecause someone else had just did that, and what to do about this, and\nwhy.  (And whose version should win, in the end, as the files you\nintend to work with are not subject for merging in the usual sense of\nthis word -- when it comes to plain text files.)\n\n1. http://blog.red-bean.com/sussman/?p=79\n"},{"id":"263410","messageId":"CAGZ79kbc5UuHz=MZogX2kQ8XS_CbvgW=_7hPw2LF6Gur_pKQow@mail.gmail.com","threadId":"39562","inReplyTo":"20150609132144.ANWJW.73271.root@txifep04","subject":"Re: git lock files (Was: GIT for Microsoft Access projects)","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2015-06-09T19:08:17Z","receivedAt":"2015-06-09T19:08:17Z","isPatch":false,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On Tue, Jun 9, 2015 at 11:21 AM,  <hackerp@suddenlink.net> wrote:\n> Thanks folks, I am digesting all you have said.\n\nI did not intend to answer your original question, but to start a\ndiscussion on the\nfeasibility of a dedicated \"git lock\" command.\n\nThere are lots of things which are checked in alongside the code\n(The code is which is why you want to use Git in the first place),\nsuch as Graphics, CAD, design documents (maybe in binary format such as ODF,\nMS Excel).\n\nAll I did was proposing a new command and laying out its behavior.\nBy being careful at what to use as the porcelain command line and what to use\nas a stable plumbing command, other programs could rely on that.\n(Some proprietary CAD tools such as Altium have a subversion\nintegration [1], maybe Git wants to offer an easy interface to allow\nfor Git integration as easily?)\n\n>\n> Now the command line I can do (I'm a programmer) but the secretary here I doubt.\n>\n> So is there at GUI interface for this? Does it work on Windows systems?\n\nAs all I was saying is dreaming out new concepts, there is currently no code.\n\n>\n> Thanks,\n>\n> Paul\n\n\n[1] http://techdocs.altium.com/display/ADOH/Version+Control+and+Altium+Designer\n"},{"id":"263445","messageId":"20150610074733.GM30511@paksenarrion.iveqy.com","threadId":"39562","inReplyTo":"1433870383-7631-1-git-send-email-sbeller@google.com","subject":"Re: git lock files (Was: GIT for Microsoft Access projects)","fromName":"Fredrik Gustafsson","fromEmail":"iveqy@iveqy.com","sentAt":"2015-06-10T07:47:33Z","receivedAt":"2015-06-10T07:47:33Z","isPatch":false,"sender":{"key":"iveqy@iveqy.com","avatar":"https://avatars.githubusercontent.com/u/761743?v=4"},"body":"On Tue, Jun 09, 2015 at 10:19:43AM -0700, Stefan Beller wrote:\n> Just because Git allows distributed workflows, doesn't mean we\n> should only focus on being distributed IMHO.\n> \n> The question for content not being mergable easily pops up all\n> the time. (Game/Graphics designers, documents, all this binary\n> stuff, where there is no good merge driver).\n> \n> I could imagine a \"git lock\" command which looks like this:\n\nYou do know that gitolite has locking functionality?\n\n-- \nFredrik Gustafsson\n\nphone: +46 733-608274\ne-mail: iveqy@iveqy.com\nwebsite: http://www.iveqy.com\n"},{"id":"263479","messageId":"CAGZ79kYhgBaY5UpmfK=amfM56c61vcUu8=ofagG=nPwqkPt2rg@mail.gmail.com","threadId":"39562","inReplyTo":"20150610074733.GM30511@paksenarrion.iveqy.com","subject":"Re: git lock files (Was: GIT for Microsoft Access projects)","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2015-06-10T15:22:14Z","receivedAt":"2015-06-10T15:22:14Z","isPatch":false,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On Wed, Jun 10, 2015 at 12:47 AM, Fredrik Gustafsson <iveqy@iveqy.com> wrote:\n> On Tue, Jun 09, 2015 at 10:19:43AM -0700, Stefan Beller wrote:\n>> Just because Git allows distributed workflows, doesn't mean we\n>> should only focus on being distributed IMHO.\n>>\n>> The question for content not being mergable easily pops up all\n>> the time. (Game/Graphics designers, documents, all this binary\n>> stuff, where there is no good merge driver).\n>>\n>> I could imagine a \"git lock\" command which looks like this:\n>\n> You do know that gitolite has locking functionality?\n>\n\nYes, and it's cooking its own thing, it's not upstream (in git core I mean)\n\nLocking is useful not just when using gitolite, but any hosting\nsolution I believe.\n"},{"id":"263503","messageId":"xmqqbngnmsmn.fsf@gitster.dls.corp.google.com","threadId":"39562","inReplyTo":"1433870383-7631-1-git-send-email-sbeller@google.com","subject":"Re: git lock files","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-06-10T16:32:16Z","receivedAt":"2015-06-10T16:32:16Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Stefan Beller <sbeller@google.com> writes:\n\n> I could imagine a \"git lock\" command which looks like this:\n>\n>     git config lock.centralServer origin\n>     git config lock.defaultBranch master\n>\n>     git lock add [branch]  [--] <path/to/file>\n>     git lock remove [branch] [--] <path/to/file>\n>     git lock ls [<branch>]\n>\n> And the way this is implemented is roughly (unoptimized, just showing\n> how you would achieve this with todays command set):\n> ...\n>     git fetch --depth=1 $(git config --get lock.centralServer) refs/locks/$(git config --get lock.defaultBranch)\n>     git checkout refs/locks/$(git config --get lock.centralServer)/$(git config --get lock.defaultBranch)\n>     switch(option) {\n>     case add:\n>         if exist <path/to/file>\n>             return -1\n>         else\n>             echo $(git config --get user.name) $(date) > <path/to/file>\n>             git add <path/to/file> && git commit \"add new lock\"\n>         fi\n>     case remove:\n>         if exist <path/to/file>\n>             # todo: check if the same user locked it before\n>             rm  <path/to/file>\n>         else\n>             return -1\n>         fi\n>     case ls:\n>         ls -R .\n>     }\n>     git push $(git config --get lock.centralServer) refs/locks/$(git config --get lock.defaultBranch)\n>     git <restore working tree, branch>\n>\n> That said you could just manipulate the git objects directly, no need\n> to check out to the working dir.\n>\n> The server would only need to allow pushes to a refs/locks directory and be done.\n> the client side would need to have a plumbing command, so you could easily integrate\n> a git locking to your application if you don't want to provide a merge driver.\n\nI do not think that would be very useful nor even be a good starting\npoint, even though I think it is a good tangent to think about how\nto improve the support for the centralized workflow.\n\nYou cannot afford to force clients keep polling the central server\nfor the refs/locks/my-branch, if you want a good \"everybody relies\non central-server to coordinate\" workflow experience.\n\nAnd even without \"file locking\", once you start assuming \"everybody\nrelies on central-server to coordinate\" workflow (which is common in\ncorporate settings), you would be better off introducing a mechanism\nto push notification from the server side to the clients to improve\nsupport for other things, like \"the client watches these branches,\ndoing a hanging Get or whatever, waiting for the server to notify\"\nanyway.  The kind of notification that distributed use of Git can do\nwithout.\n\nAnd once that kind of mechanism is there, \"the client is notified\nnot to touch these paths on this branch\", \"the client is notified\nthat it is now OK to touch these paths on this branch after\nupdating\", etc., would be a natural addition.\n\nI highly doubt that exchanging data via the \"git fetch\" and \"git\npush\" will be a good vehicle to implement such an async notification\nmechanism.\n"},{"id":"263840","messageId":"201506151052.57956.koch@comsolit.com","threadId":"39562","inReplyTo":"xmqqbngnmsmn.fsf@gitster.dls.corp.google.com","subject":"Re: git lock files","fromName":"Thomas Koch","fromEmail":"koch@comsolit.com","sentAt":"2015-06-15T08:52:57Z","receivedAt":"2015-06-15T08:52:57Z","isPatch":false,"sender":{"key":"koch@comsolit.com","avatar":null},"body":"might contain good thoughts about locking + git:\n\nJan 12, 2010 Interest in locking mechanism?\nhttp://git.661346.n2.nabble.com/Interest-in-locking-mechanism-td4293383.html\n\nJul 04, 2013 intend-to-edit flag \nhttp://git.661346.n2.nabble.com/intend-to-edit-flag-tp7591127.html\n\nSep 17, 2013 Locking files / git \nhttp://git.661346.n2.nabble.com/Locking-files-git-tp7596435.html\n"}]}