Extend NTFS with "version" of file and "version" of folder, also optionally GIT integration or something like it.

Nov 19, 2018 8 Replies

As far as I know currently NTFS is missing a key feature for code developme nt and compare: "versioning information" per file and per folder.



This sucks badly.



Currently I have files as follows:



folder version 0.01\ some_source_code_file_version_1.pas some_other_source_code_file_version1.pas



and



folder version 0.02\ some_source_code_file_version_2.pas some_other_source_code_file_version2.pas



Now it's impossible to "code compare" these files with "code compare" tool.



It does not recgonize these files.



For code compare to work it would have to be:



folder version 0.01\ some_source_code_file_version_1.pas some_other_source_code_file_version1.pas



and



folder version 0.02\ some_source_code_file_version_1.pas some_other_source_code_file_version1.pas



However losing versioning information per file is dangerous in case folders are renamed or files are moved.



Encoding versioning information in project files is also highly undesired i n case project files are lost or corrupted.



There is a very clear and distinct need to include versioning in folders an d files.



I hope to see NTFS extended in the future to incorporate these changes/addi tional features.



I also highly recommend to include some GIT like versioning system integrat ion with windows explorer.



It would be highly desireable to "view/browse" and even edit or change prev ious GIT versions via a windows explorer and also to be able to open differ ent version folders/branches for code compare purposes and other editing to ols.



Currently this GIT integration is missing, tortuise GIT does offer some int egration/icon overlays but that's about it, advanced browsing of NTFS/GIT r elated folder tree structure is currently not possible cause ofcourse this functionality is missing.



Furthermore deep branching is desireable to allow very deep folders.



Also file path and folder path lengths must be incredibly large to allow de ep branching and deep versioning of source code files.



GIT on top of NTFS would currently never be possible because of very limite d path and folders length. A little bit of branching and it hits limits.



Also for a next-generation GIT version the following features are desired:


1A. Splitting of original source code file into multiple small files.
+
1B. Rebasing changes in original split file into multiple small files. Curr ently GIT is too limited in this and does not recgonize these changes in or iginal to be copied/rebased into split files. A very serious GIT limitation . This is "pattern recgonition" technology that must be advanced to the nex t level of technology. Perhaps DEEP learning might offer some possibilities here or new algorithms to detect "movements and code changes" of 1 file in to multiple files.

This feature will allow:


1.1. Splitting files into multiple files, without approval of original fork maintainer by "rebel" fork maintainer.


1.2. Continueing to work on multiple files by "rebel" fork, and rebasing ch anges of original fork maintainer, without original fork maintainer to comm it these changes (from "rebel fork").



For as long as the pattern recgonizer can handle these differences it would be nice to have.



Currently GIT is limitted to splitting files by maintainer, forks cannot sp lit files and then continue to benefit from original unsplitted source, if original source does not split.



Splitting files is in my oppinion necessary to keep software projects maint ainable and functioning. Compilers/Editors/Analyzers/Visualizers/Parsers th ese are allow limited in their technology and implementation and can handle only so much due to limitations and especially bugs. The larger the source file the more like it is to contain some weird text which bugs out these t ools, especially if the large file was written by a person that does not kn ow the tools or the language well, strange bugs will occur especially but t hese kinds of programmers not knowing tool limitations and bugs.



Splitting off files can reduce these problems and solve them one by one bet ter and offer more possibility for diagnosis of tool-related bugs and probl ems, plus possibly higher recompile times since not entire file needs to be re-compiled.



Also splitting files in relation to history and changing history/rebasing w orks bad currently in git as already indicated, somebody did write a script to try and solve it via branching per file, but as far as I know this scri pt did not work.



In principle I am against changing history in a versioning system, though t he re-base feature itself could be interesting if it works.



Think of this as "applieing a change in history towards the future", like t ime travel or something, perhaps a different term could be used for it.



"Apply change in past to future".


  1. Better visualization of history/branches.

Currently I cannot make sense of how branches are merged, this would be nic e if this was better indicated, ofcourse visualizating history of different time-related branches is more difficult because of more time/versions past and these "lines will run longer" especially in a multi-user/programmer pr oject.



Though I still feel GIT currently falls a bit short in this, another contri buting factor to confusion is the "hashing" approach.



Commits are numbered by "hash number", this kinda makes it harder to follow what branch is integrated/merged with what branch.



For guy like me being used to seeing 0.01 and 1.03 and such this is not so ideal.



I would like to see something like:



version 0.01 and version 0.05 were integrated/merged.



However this is not a branch by slight changes moved from 0.01 to 0.05 whic h would be a bit weird.



Better example:



version 0.05 main branch version 0.05 alternative branch



integrate these two branches into version 0.06 or even back into version 0.



05 main branch.

Versions should be indicated as follows:



version



Other example:



version 0.10 based on version 0.03 of some other folder.



version



This way branches can be based on a base version.



It's kinda thinking the other way around.



The branch could and probably will become the main branch, and instead the version which it was based off is now history.



Therefore re-merging is not required, and the branch can continue to run as main branch.



This resembles evolution more appriorately and naturally then currently GIT does.



In git a branch can be created of of a version number... but it will never become the main branch until it is merged back into main, this is wrong in some ways.



However perhaps this example was more ment for creating new software based of older/different software and re-using it's source code base, so in that sense GIT may not be wrong, but does lack tracking of these "bases" so to s peak.



It can be done but it's a bit weird.



Re-basing is dangerous also downloading and doing pull requests is dangerou s, especially if maintainer screwed up the git respository. I do not like t his at all, and want to keep my local versions 100% intact.



Therefore there must be a disconnect between the remote and the local.



A download from a remote must always re-create a local new version, to then continue work on perhaps.



Re-incorporating changes from a remote to new local copy, to final destinat ion copy where my work was done will have to be "supervised" to some degree , it can be partially automated, but user must indicate first that this is desired.



This way there will always be 3 copies:


  1. the remote
  2. the local working remote, whose changes cannot be changed by a download from remote with supervisor, this download should not be possible at all.
  3. the local download from remote, this one can be downloaded and then appl ied to the local 2.


For multi-user branching approach a better way might be to use the followin g:



version 0.05-Jack version 0.08-Skybuck version 0.06-Jason



The branches created by the users are indicated by their username.



However this doesn't really describe what the branch functionality is about but at least it does give some sense who worked on it but this is not the most important part.



So a description of the branch is possible:



version 0.05-Jack - New feature version 0.08-Skybuck - Further development of main version 0.06-Jason - Bug fixes



Eventually these branches can and may be integrated into main 0.08 or 0.09.



This branch description is very important and must be part of the windows e xplorer view/visibility.



Creating branches should be as simply as a copy & paste operation in window s explorer, and then renaming the copy.



This functionality could be integrated into the windows explorer pop-up men u.



For example:



"Rename version to branch" (this allows to copy main first and then decide if to branch it) "Create branch" (when sure it must be a branch, create branch directly)



Eventually a branch can also be made main again. "Turn branch into main version"



And some automation might also be nice:



"Apply branch to main version"



This would work by "copy" a branch by selecting it and then click copy, the instead of pasting it, it will be pasted into main.



So it can also be called: "Paste branch into main"



Or simply into folder or merge "Merge with" or "Merge changes with" for a slightly better description for new users.



Windows Explorer and NTFS should evolve in such a way that it is more suite d for "evolution like development of files"



That would be very nice.



This definetly means deep branching and perhaps some splitting and merging capabilities and change tracking plus history visualization.



I hope to see some of this in a next version of windows, this will also mak e it more competitive with linux and git in general.



Bye, Skybuck.


snipped-for-privacy@hotmail.com wrote in news:58671180-b235-4afc-9cb6-5a53b0e0ccd7 @googlegroups.com:

Look! It's SkyTard Posting (stupid s*it again).

How about using all the extensions they use for pictures and media files ? Look at them in Explorer and it gives all kinds of s*it, dimensions, durati on, video size, camera make and model, aperature, lens, album, artist, year , date taken, all kinds of s*it.

Seems to me if you can program you should be able to figure out how to get to those descriptors and just adapt them. So the album is "version 1.072" a nd all that. Or the year could be the version.

???

snipped-for-privacy@gmail.com wrote in news: snipped-for-privacy@googlegroups.com:

One can right click on any file and add information about the file.

There is a dialog box that pops up when one selects the 'properties' menu selection under a right click.

Can you guys really be such Windows LUSERS (not users) that you never use or familiarize yourselves with any of the right click functions?

Wow. Been there for years.

? Look at them in Explorer and it gives all kinds of s*it, dimensions, dura tion, video size, camera make and model, aperature, lens, album, artist, ye ar, date taken, all kinds of s*it.

t to those descriptors and just adapt them. So the album is "version 1.072" and all that. Or the year could be the version.

I put version numbers in the filename. Makes life easy.

NT

Yes, it's called TortoiseSVN. It's a Windows implementation of SVN. The repo is stored locally in a filesystem, usually. Is that "extension" enough for you? :^)

AFAIK, media fields are NOT in NTFS, they are read by Explorer when looking at files of those types. It automatically reads the files for IDn tags, JPEG data, etc. It's a file-read process, just like making icon thumbnails. (I don't know if the ID info is cached, but thumbnails are, at least since XP something or other. Maybe since the beginning (Win95), I don't know.)

Given your misinterpretation -- Tortoise probably is exactly what you want, _shell integration_ of those features.

Tim

-- Seven Transistor Labs, LLC Electrical Engineering Consultation and Design Website:

formatting link

Seems to me if you can program you should be able to figure out how to get to those descriptors and just adapt them. So the album is "version 1.072" and all that. Or the year could be the version.

???

Where does that go BTW ? Is it in the filename or the file ? At the moment I guess filename because sometimes when copying files I have seen something about "you will lose the extended file information bla bla bla".

But then I have renamed media files and some players still read the origina l when playing, even though Windows displays the new name.

So which is it ? Or both ?

And with what I wrote I was talking about using that function actually chan ging the parameters names, like no album or artist, dimensions, lens and al l that s*it and change the fields to like version, feature set, s*it like t hat. Not sure if THAT is doable. Never had to try.

snipped-for-privacy@gmail.com wrote in news: snipped-for-privacy@googlegroups.com:

NTFS file headers are pretty big. Along with longer file name capacity, there is also a place for a lot of metadata.

For example, I can construct an Excel spreadsheet workbook, and then later right click on the filename and enter a huge description field of info, which pops up when the file gets hovered over. Sometimes simply within the file manager, and sometimes only once within an 'open file' dialog within Excel. My workbooks will state a lot of info from this info dialog page. Far more than just the description field.

Here is a page containing an image of the dialog. I am not this person, nor is the topic of the page what we are on. But close.

Apparently, it may only be office files that allow this level of editing. Also Windows dll files have extensive metadata inclusions. Not sure about regular files. cmd.exe uields similar field, but are likely not editable. They get incorporated into an executable at the time they are compiled.

It would be. Until the authors of the file system choose some version naming/numbering system that doesn't fit your requirements. Then you are stuck with what they give you. Or you still have to write your own.

Object versioning is application specific. I'm not calling it file versioning because some applications go as far as storing everything in one blob (from the O/S point of view) to providing its own database and managing the object to file relationship out of view of the user.

If you really like your file system to handle versioning, just use OpenVMS.

Paul Hovnanian mailto:Paul@Hovnanian.com ------------------------------------------------------------------ I want to die quietly in my sleep, like my grandfather, not screaming in terror, like his passengers.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required