Ahoy me TextMateys, I just had a kindof a neat idea.
TextMateHistoryManagement
Currently, when you do a thousand changes in textmate and then close your document, all your changes are totally lost :(
What if every time you saved your document, I caught that action, backed up your original version and the new one and then archived it away in a magical forrest for safekeeping. Then when you open that document up again you have the option to undo every previous save you've ever made to the document? And you can even see how many changes were made every time you saved with a timestamp and a full diff and all kinds of crazy stuff?
I know tons of people use some kind of SCM like subversion or mercurial or something, but you normally only commit working changes and projects that you're working on. Instead, this TextMateHistoryManagement would keep track of every single change you make to every single document you ever save, good changes or bad ones, who cares, just everything.
Personally, I think this would be stinking awesome to the power of infinity -1 squared! (aka, it'd be nifty)
So, as far as UI goes…
I want a new history to be saved every time I save the document. I want to have a nice GUI palette like photoshop to see a list of changes. That list shows the filename, hide-able full file path, timestamp and the number of lines added, removed or changed in that version. There should be a hide-able diff drawer or area with a tabbed safari- esque view with tabs for each diff available. Diff that version to it's parent, the selected items to eachother, or the selected item with your open version.
There are some obvious technical hurdles to leap, but it's all totally doable. The purpose of this poll is to see if anyone would be interested in this from a fronend user interface level. I already know how I'm likely going to actually build this thing, and we can talk more about that later.
What I'm most interested in is workflow. I'd like us all to come up with the best and most genericly usable workflow for everyone. Maybe some advanced stuff for the nerds, but I want this as mostly a noob feature and for people who don't want to have to care about version control or whatever.
For example, with the implementation that I just suggested, you could do this…
You're working on a version of some random webpage, then someone emails you a changed version. You could just replace your current file with that one and open it up and check your history palette to see the changes. (assuming you had opened and saved the original file in textmate at some point)
You'd never had to install or configure or set up anything. It should all just work™
Thoughts?
thomas Aylott — subtleGradient — CrazyEgg — bundleForge
Hey all,
Really good idea. Can you make the UI so if we use an SCM the the rev number is associated with that submission? i.e
[10:25 8/10/07] AutoSaved [10:27 8/10/07] Saved - Commited Rev #12654 [11:33 8/14/07] Saved [11:34 8/14/07] AutoSaved [11:35 8/14/07] Saved - Commited Rev #12672
And alternatively we can wipe the history to a value ( like 500 saves or 20 SCM commits/submits ) Are we planning to take advantage of time machine on this??
---
Steven M. Klass
Strategic Manager, Design Automation - Analog Mixed Signal
SMSC 3930 East Ray Road, Suite 200 Phoenix, Arizona 85044 (480) 704-7046 (Desk) (480) 225-1112 (Mobile) steven.klass@smsc.com
"Thomas Aylott (subtleGradient)" oblivious@subtlegradient.com Sent by: textmate-bounces@lists.macromates.com 08/15/07 01:39 PM Please respond to TextMate users textmate@lists.macromates.com
To TextMate users textmate@lists.macromates.com cc
Subject [TxMt] [POLL] Infinite UNDOs / Transparent History management?
Ahoy me TextMateys, I just had a kindof a neat idea.
TextMateHistoryManagement
Currently, when you do a thousand changes in textmate and then close your document, all your changes are totally lost :(
What if every time you saved your document, I caught that action, backed up your original version and the new one and then archived it away in a magical forrest for safekeeping. Then when you open that document up again you have the option to undo every previous save you've ever made to the document? And you can even see how many changes were made every time you saved with a timestamp and a full diff and all kinds of crazy stuff?
I know tons of people use some kind of SCM like subversion or mercurial or something, but you normally only commit working changes and projects that you're working on. Instead, this TextMateHistoryManagement would keep track of every single change you make to every single document you ever save, good changes or bad ones, who cares, just everything.
Personally, I think this would be stinking awesome to the power of infinity -1 squared! (aka, it'd be nifty)
So, as far as UI goes…
I want a new history to be saved every time I save the document. I want to have a nice GUI palette like photoshop to see a list of changes. That list shows the filename, hide-able full file path, timestamp and the number of lines added, removed or changed in that version. There should be a hide-able diff drawer or area with a tabbed safari-esque view with tabs for each diff available. Diff that version to it's parent, the selected items to eachother, or the selected item with your open version.
There are some obvious technical hurdles to leap, but it's all totally doable. The purpose of this poll is to see if anyone would be interested in this from a fronend user interface level. I already know how I'm likely going to actually build this thing, and we can talk more about that later.
What I'm most interested in is workflow. I'd like us all to come up with the best and most genericly usable workflow for everyone. Maybe some advanced stuff for the nerds, but I want this as mostly a noob feature and for people who don't want to have to care about version control or whatever.
For example, with the implementation that I just suggested, you could do this…
You're working on a version of some random webpage, then someone emails you a changed version. You could just replace your current file with that one and open it up and check your history palette to see the changes. (assuming you had opened and saved the original file in textmate at some point)
You'd never had to install or configure or set up anything. It should all just work™
Thoughts?
thomas Aylott — subtleGradient — CrazyEgg — bundleForge
______________________________________________________________________ For new threads USE THIS: textmate@lists.macromates.com (threading gets destroyed and the universe will collapse if you don't) http://lists.macromates.com/mailman/listinfo/textmate
On Aug 15, 2007, at 4:49 PM, Steven.Klass@smsc.com wrote:
Hey all,
Really good idea. Can you make the UI so if we use an SCM the the rev number is associated with that submission? i.e
[10:25 8/10/07] AutoSaved [10:27 8/10/07] Saved - Commited Rev #12654 [11:33 8/14/07] Saved [11:34 8/14/07] AutoSaved [11:35 8/14/07] Saved - Commited Rev #12672
And alternatively we can wipe the history to a value ( like 500 saves or 20 SCM commits/submits ) Are we planning to take advantage of time machine on this??
Steven M. Klass
Strategic Manager, Design Automation - Analog Mixed Signal
SMSC
Awesome.
That's a good idea. Group the timestamps together in a logical way. If there are a bunch close to one another make the last one take precedence and group the rest under it like a folder in list mode.
Then tagging the change with the revision number that your real SCM uses is a great idea!
I'm not sure I can do anything with timemachine, but that sounds awesome.
Allan, any official plans for this kind of thing? Time Machine support would be lovely. Maybe we should port E.exe[0] to the mac, it has really great history management and undo ;)
[0] http://e-texteditor.com/blog/2006/making-undo-usable
thomas Aylott — subtleGradient — CrazyEgg — bundleForge
On 15 Aug 2007, at 21:38, Thomas Aylott (subtleGradient) wrote:
You'd never had to install or configure or set up anything. It should all just work™
I'm interested.
I'd only want full files available to revert to though, the one character at a time undo is a pain at the best of times.
and also I'd only want to revert to points where I hit save and closed the file I think. In other words all those file saves that I have automatically when TM loses focus I can undo changes while the file is open, but if I do a manual save or save as then I'm committing my changes - an undo for each of those would be good, if this new function was simple enough it would provide chunked undo, wouldn't it?
e.g. make a small change use TM's char by char. Make a big change and save and then step backwards using this new function?
it would be the recovery from "oh, that actually didn't work after all, go back a step and start again" type issues that I'm currently getting round by making back ups of directories of files...
(I mostly use TM for XHTML/PHP/CSS, and it's usually cross browser compatibility issues that make me want to backtrack)
looking forward to seeing it develop.
Hm... whats wrong with setup personal SVN server? Why Editor should aware of file backup?
Anyway - if it will be implemented it must be "disableable".
But I vote for making UnDo action more agregate... Not char-by-char - maybe word-by-word or similar... Sometimes to undo semi-long changes i have to press +Z for long time
On 8/16/07, Tony Crockford tonyc@boldfish.co.uk wrote:
On 15 Aug 2007, at 21:38, Thomas Aylott (subtleGradient) wrote:
You'd never had to install or configure or set up anything. It should all just work™
I'm interested.
I'd only want full files available to revert to though, the one character at a time undo is a pain at the best of times.
and also I'd only want to revert to points where I hit save and closed the file I think. In other words all those file saves that I have automatically when TM loses focus I can undo changes while the file is open, but if I do a manual save or save as then I'm committing my changes - an undo for each of those would be good, if this new function was simple enough it would provide chunked undo, wouldn't it?
e.g. make a small change use TM's char by char. Make a big change and save and then step backwards using this new function?
it would be the recovery from "oh, that actually didn't work after all, go back a step and start again" type issues that I'm currently getting round by making back ups of directories of files...
(I mostly use TM for XHTML/PHP/CSS, and it's usually cross browser compatibility issues that make me want to backtrack)
looking forward to seeing it develop.
For new threads USE THIS: textmate@lists.macromates.com (threading gets destroyed and the universe will collapse if you don't) http://lists.macromates.com/mailman/listinfo/textmate
On 16 Aug 2007, at 08:12, Tony Crockford wrote:
I'd only want full files available to revert to though, the one character at a time undo is a pain at the best of times.
Is it possible to have a checkbox somewhere in the preferences pane that toggles between 1-char undo and 1-word undo? If the checkbox is ticked then when you undo something it keeps doing undo steps until the undo that was just undone matches either of these criteria: - The next undo and this undo are on different lines in the document - The next undo is a whitespace character (tab, space, newline)
That's the simplest way I can think of to use a single-char undo to do word-level undo with not much coding required.
Gaby
-- Junkets for bunterish lickspittles since 1998! http://www.playr.co.uk/
On 16 Aug 2007, at 08:50, Alexey Blinov wrote:
Hm... whats wrong with setup personal SVN server?
because it's the one time you didn't use SVN on a project that you find you need it.
I'm still struggling with the discipline required to have all my web projects (several hundred) in SVN as sometimes a bundle of files is created in two days of frenzied editing and then never touched again (by me) - SVN'ing that seems a faff, but having the editor enable the undoing of errors or reverting to a previous save point would be far simpler.
P.S. on SVN, anyone got a simple walkthrough link/tutorial for setting up and using (in a workflow with TM preferably) a local SVN system - for file bundles (such as websites) rather than application code, with revisions, branches and suchlike)
On Aug 16, 2007, at 3:50 AM, Alexey Blinov wrote:
Hm... whats wrong with setup personal SVN server? Why Editor should aware of file backup?
Anyway - if it will be implemented it must be "disableable".
But I vote for making UnDo action more agregate... Not char-by-char - maybe word-by-word or similar... Sometimes to undo semi-long changes i have to press +Z for long time
Don't get me wrong, I'm all for SCM. I use Subversion or Git on every single project I work on. Absolutely.
However, I find I only ever commit solid changes that I can write a good commit message for, like… [FIXED] No longer eats small children
That's really how you're supposed to use SCM, especially with a shared project with more than a single developer.
What I'm talking about with this feature is handling all the in between steps that aren't good enough to commit, but nothing as tiny as a few characters.
And also getting SCM used by people on single-developer projects and individual random files.
But, yes. This system would have to be optional.
to really do this right it would have to be a part of TextMate itself instead of just a textmate bundle. And since I have no clue how to program textmate plugins and don't have the source code for textmate handy, I'm going to have to settle for making this as a textmate bundle and overwriting command-s or something.
thomas Aylott — subtleGradient — CrazyEgg — bundleForge
On Aug 16, 2007, at 4:01 AM, Tony Crockford wrote:
P.S. on SVN, anyone got a simple walkthrough link/tutorial for setting up and using (in a workflow with TM preferably) a local SVN system - for file bundles (such as websites) rather than application code, with revisions, branches and suchlike)
My advice: Don't use subversion if you're a single developer. Unless it's really easy to use. (I use Dreamhost[1] and they have unlimited instant subversion repo creation, so I use that)
Setting up a local subversion repo is not worth the effort, just use Mercurial instead. Git it lovely, but totally overkill for a website.
I'm probly going to be switching to Mercurial for everything soon. I'm just too used to subversion to really need to upgrade yet. And since I can make an http hosted repo in a few seconds, it's really easy still.
so, my advice:
Subversion, no Mercurial, yes
[1] http://www.dreamhost.com/r.cgi?14273 use promo code: SUBTLEGRADIENT to save tons of money and make me filthy rich!
thomas Aylott — subtleGradient — CrazyEgg — bundleForge
On Aug 16, 2007, at 3:59 AM, Gaby Vanhegan wrote:
On 16 Aug 2007, at 08:12, Tony Crockford wrote:
I'd only want full files available to revert to though, the one character at a time undo is a pain at the best of times.
Is it possible to have a checkbox somewhere in the preferences pane that toggles between 1-char undo and 1-word undo? If the checkbox is ticked then when you undo something it keeps doing undo steps until the undo that was just undone matches either of these criteria:
- The next undo and this undo are on different lines in the document
- The next undo is a whitespace character (tab, space, newline)
That's the simplest way I can think of to use a single-char undo to do word-level undo with not much coding required.
Gaby
Junkets for bunterish lickspittles since 1998! http://www.playr.co.uk/
That makes good sense, but it might be beyond my abilities with a simple textmate bundle. I'd probly haveto make that a separate part of the whole history management thing.
for the first version I was thinking of only archiving a history item when you manually save the file with the command-s shortcut.
If someone could figure out the technical side of doing that, I'm all for it.
thomas Aylott — subtleGradient — CrazyEgg — bundleForge
On 16 Aug 2007, at 11:53, Thomas Aylott (subtleGradient) wrote:
Subversion, no Mercurial, yes
well setting mercurial up seemed painless.
I init'd my Sites directory (where everything gets put) and managed to install the TM mercurial bundle, make a change, commit it, then revert to the previous version, but mostly by trial and error.
is there a good workflow tutorial for the solo developer using Mercurial with TextMate for managing website builds and changes?
if I learn about it and write one, will anyone be interested in reading it, or are we mostly team developers?
On 8/16/07, Tony Crockford tonyc@boldfish.co.uk wrote:
On 16 Aug 2007, at 11:53, Thomas Aylott (subtleGradient) wrote:
Subversion, no Mercurial, yes
well setting mercurial up seemed painless.
I init'd my Sites directory (where everything gets put) and managed to install the TM mercurial bundle, make a change, commit it, then revert to the previous version, but mostly by trial and error.
is there a good workflow tutorial for the solo developer using Mercurial with TextMate for managing website builds and changes?
Not with TextMate particularly, but there is the [tutorial][1] and the [hgbook][2].
[1]: http://www.selenic.com/mercurial/wiki/index.cgi/Tutorial [2]: http://hgbook.red-bean.com/
-- FredB
On 8/16/07, Thomas Aylott (subtleGradient) oblivious@subtlegradient.com wrote:
On Aug 16, 2007, at 3:50 AM, Alexey Blinov wrote:
What I'm talking about with this feature is handling all the in between steps that aren't good enough to commit, but nothing as tiny as a few characters.
And also getting SCM used by people on single-developer projects and individual random files.
But, yes. This system would have to be optional.
to really do this right it would have to be a part of TextMate itself instead of just a textmate bundle. And since I have no clue how to program textmate plugins and don't have the source code for textmate handy, I'm going to have to settle for making this as a textmate bundle and overwriting command-s or something.
So... i think it will be good if TM saves undo history in hidden file (with history deep as an option) and load it with file. For ex. if i edit something called uber-function.rb TM creates file .uber-function.rb[.tmhistory] and write undo there. I open file and TM loads undo history for it... Am i right?
On Aug 15, 2007, at 3:38 PM, Thomas Aylott (subtleGradient) wrote:
Ahoy me TextMateys, I just had a kindof a neat idea.
TextMateHistoryManagement
Sorry, coming into this kind of late (my file server got killed by lightning... Twice!!!). Note that you can overwrite 'Save' (eg Cmd-S) with your own command. So it would be quite possible to use some kind of VCS to do something time-machine like. Not quite what you were looking for, but quite do-able with similar results.
Gerd
I like this idea a lot. Please implement it (and someone please fix the brutal character-by-character undo).
Eclipse (http://www.eclipse.org/) does a compromise here by storing entries for every file you are editing in something it calls Local History. It lets you diff/merge against the Local History or load the content of any previous entry. You don't get the entire undo/redo history, but you do get major changes that occurred.
I strongly recommend looking at the design used by Eclipse for this.
On 8/15/07, Thomas Aylott (subtleGradient) oblivious@subtlegradient.com wrote:
Ahoy me TextMateys, I just had a kindof a neat idea.
TextMateHistoryManagement
Currently, when you do a thousand changes in textmate and then close your document, all your changes are totally lost :(
What if every time you saved your document, I caught that action, backed up your original version and the new one and then archived it away in a magical forrest for safekeeping. Then when you open that document up again you have the option to undo every previous save you've ever made to the document? And you can even see how many changes were made every time you saved with a timestamp and a full diff and all kinds of crazy stuff?
I know tons of people use some kind of SCM like subversion or mercurial or something, but you normally only commit working changes and projects that you're working on. Instead, this TextMateHistoryManagement would keep track of every single change you make to every single document you ever save, good changes or bad ones, who cares, just everything.
Personally, I think this would be stinking awesome to the power of infinity -1 squared! (aka, it'd be nifty)
So, as far as UI goes…
I want a new history to be saved every time I save the document. I want to have a nice GUI palette like photoshop to see a list of changes. That list shows the filename, hide-able full file path, timestamp and the number of lines added, removed or changed in that version. There should be a hide-able diff drawer or area with a tabbed safari-esque view with tabs for each diff available. Diff that version to it's parent, the selected items to eachother, or the selected item with your open version.
There are some obvious technical hurdles to leap, but it's all totally doable. The purpose of this poll is to see if anyone would be interested in this from a fronend user interface level. I already know how I'm likely going to actually build this thing, and we can talk more about that later.
What I'm most interested in is workflow. I'd like us all to come up with the best and most genericly usable workflow for everyone. Maybe some advanced stuff for the nerds, but I want this as mostly a noob feature and for people who don't want to have to care about version control or whatever.
For example, with the implementation that I just suggested, you could do this…
You're working on a version of some random webpage, then someone emails you a changed version. You could just replace your current file with that one and open it up and check your history palette to see the changes. (assuming you had opened and saved the original file in textmate at some point)
You'd never had to install or configure or set up anything. It should all just work™
Thoughts?
thomas Aylott — subtleGradient — CrazyEgg — bundleForge
For new threads USE THIS: textmate@lists.macromates.com (threading gets destroyed and the universe will collapse if you don't) http://lists.macromates.com/mailman/listinfo/textmate
On 15-aug-2007, at 22:38, Thomas Aylott (subtleGradient) wrote:
Ahoy me TextMateys, I just had a kindof a neat idea.
TextMateHistoryManagement [...] What I'm most interested in is workflow. I'd like us all to come up with the best and most genericly usable workflow for everyone. Maybe some advanced stuff for the nerds, but I want this as mostly a noob feature and for people who don't want to have to care about version control or whatever.
I really would like this a lot!
A suggestion for the workflow: Of course you should have the possibility to revert to a pervious state in one simple step. (I like the idea of annotating such a previous state with a rev number or maybe with some other useful name). If you apply this revert, I would like when it would append it to the history, not roll back the history to that point. I.e. Photoshop gets it wrong, to my opinion. When you do A, B, C, D, E. Then you want to roll back to C and save, Photoshop makes the history A, B, C so you lost the possibility to go back to D or E. My preference would be a history that would hold A, B, C, D, E, C. You will get a long history of reverts if you want to test between two versions: A, B, C, D, E, C, E, C, E, C, E. But this would be way better than 'forgetting the future'.
Also there should be a way for pro-users to see the diffs and make their own combination of a previous version AND apply the latest changes.
If you could implement this without much overhead in cpu or harddisk resources, please do ;-)
Best, dirk
----------------------------- Dirk van Oosterbosch de Wittenstraat 225 1052 AT Amsterdam the Netherlands
http://labs.ixopusada.com -----------------------------
Dirk's suggestion sounds a lot like Eclipse's Local History because it allows you to go back and forth along it without losing the future (ie. it's not part of the Undo/Redo Stack).
Adding Local Revision... to the Diff bundle would allow pro users to merge in old changes selectively.
On 8/18/07, Alain O'Dea alain.odea@gmail.com wrote:
I like this idea a lot. Please implement it (and someone please fix the brutal character-by-character undo).
Eclipse (http://www.eclipse.org/) does a compromise here by storing entries for every file you are editing in something it calls Local History. It lets you diff/merge against the Local History or load the content of any previous entry. You don't get the entire undo/redo history, but you do get major changes that occurred.
I strongly recommend looking at the design used by Eclipse for this.
I second this. I mention it on this list every now and then, when the quarterly undo discussion occurs.
Allan expressed some interest in it once, but I don't know if he is actually considering it in anyway.
Ed