Well, maybe my ideas are wrong for you, but I assure you, to me they always 
seem very right! :)  Just like programming styles, mine *may* be very wrong to 
many, but it's the best there is to me, and has never let me down!

But at least we agree on committing those work-in-progress files on some 
branch, other than trunk, to be eventually merged in the main trunk.  OK, my 
problem is not so much with the committing act per se (of non-working code,) -- 
besides, you do have to have a mechanism of adding your changes, even WIP ones, 
in the repo -- it's with ending up with a history / timeline that is full of 
'incomplete attempts', instead of clean code commits, and (for now, at least) 
no way to filter by, say, tag, so you have to see every little silly 
modification to any (yet) useless file.  If you could filter by tag, for 
example, or if you could, by default, see the timeline of only the currently 
active branch, it would be very good, as all those 'noise' changes would 
disappear.

As for your example, there's nothing new about it.  Of course, you can put 
anything anywhere and mark it with an appropriate comment, and feel happy about 
it.  But, imagine ten thousand commits later, where only 1% is working code, 
and the rest is temporary garbage that not only doesn't even compile in its 
entirety but may also never be incorporated into working code.  Isn't it 
frustrating to look at such a long timeline with very little good value?  It is 
to me!

Thanks for your comments, anyway!

P.S. to the ‘often opposing’ list.

(Hmm, maybe I subconsciously have a way to bring out the ‘evil’ in people!)

Look, I'm not on this list to get popularity votes, I'm only writing to either 
figure out ways how to do my work better – granted, the way *I* define 'better' 
– or to 'complain' on hopefully accepting ears, about things that I feel need 
improving.  Maybe I’m often the only one facing certain problems because of how 
I organize my work.  In that case, I don’t expect anyone’s sympathy for my very 
unique problems.  In that case, I would probably spend less time if I wrote my 
own SCM system than trying to improve the existing one by convincing everyone 
else about the necessities I see.  Hey, why not, I’ve done it before with 
compilers, assemblers, and MCU operating systems that didn’t work they way I 
expected them, and I couldn’t ‘bring’ the ones available closer to my needs.  I 
suppose that’s the same reason there are as many different SCMs – too many 
conflicting opinions.

But my own approach has been different, and I thought I wasn’t so ‘unique’ in 
that, as well!  Some of my work became publically available for free, and as a 
result I got many requests over the years from random users, which I felt I had 
a ‘moral’ obligation to at least consider, and so I accepted (and in most cases 
implemented – actually always, except when there was an unquestionable conflict 
with or misunderstanding of existing features) everyone’s ideas for improvement 
even when I felt those were not something that affected my own work or 
programming style, and knowing I would be the one to do all the programming for 
them.  But, you know what?  In the end, I had a much better product for myself, 
too!

Don’t get me wrong, FOSSIL is admittedly a great piece of software (and many 
thanks are due to its main authors), but it still has many shortcomings when 
used in ways other than envisioned.  I often get the impression, however, some 
would like [me], instead of talking about what seems wrong, to start writing 
how FOSSIL is so great, and please don't improve anything besides bugs because 
there's always a group of people who will be bothered by any change (even 
though most of the time it doesn't even directly affect them – they simply 
‘resist change’ – psychology 101), and things are fine they way they are!

BTW, I didn’t voice my position on the ‘no initial empty commit’ issue, 
although I strongly felt it was a genuine waste of programming effort, with a 
high risk of ‘bug-gage’.  But, at the same time, I accepted the possibility for 
this issue being important to others, so it’s none of my business to try to 
‘block’ it.  I do appreciate the work of all those involved in maintaining any 
piece of software, be it open source, or commercial, but I also think if you’re 
not interested in opinions from those not directly involved in the programming 
effort, then maybe it should be a closed project dedicated solely to those who 
contribute code to it.

In conclusion, I’ll let you all draw your own conclusions, and try to agree on 
them! :)

-----Original Message----- 
From: John Found 
Sent: Sunday, June 15, 2014 9:54 PM 
To: fossil-users@lists.fossil-scm.org 
Subject: Re: [fossil-users] How to deal with incomplete code? 

I think you are wrong with your ideas. Committing not working code is not a bad 
practice at all. Commit often, commit always. I am committing not working code 
all the time and it works great for me. :)
 
I am only trying to keep the trunk branch working (notice: only "trying"). 
Create new branch for every feature you want to experiment and when it is 
ready, simply merge it with the trunk.

You can see how it look in practice, on one of my repositories: 
http://fresh.flatassembler.net/fossil/repo/fresh/timeline

You can see for example: 2014-06-14:  

[42504ecb33] Leaf: Partially fixed (compiles, but not working properly) 
TScrollWindow and TFreshEdit. (user: johnfound, tags: FreshLibGUI) 


On Sat, 14 Jun 2014 17:15:12 +0300
<to...@acm.org> wrote:

> Hi all,
> 
> It seems to me that commits are best (from a logical point of view) when they 
> refer to completed work, not for work-in-progress (WIP).  Besides, it’s not 
> nice to see a timeline filled with incomplete non-working code.  For example, 
> I create a new library code file that is under initial development, but it 
> may take many days/weeks to bring out the initial version, which will become 
> the first commit for this file.  After that, each completed/tested update 
> (bug fixes, new features, etc.) will become another commit.  But, how do I 
> save the WIP file in the repo in a ‘temporary’ state so that it doesn’t keep 
> track of all incomplete work in the history.  
> 
> You could say, do not add it until it’s completed.  Problem 1: Clean would 
> kill it, Problem 2: Working on multiple computers, taking changes along to 
> continue work in other location.
> 
> Another possible solution is to make a new branch for each new file that is 
> WIP but that still doesn’t seem the best way, let alone after a while the 
> repo will be filled with a whole bunch of temp branches.  And what if the new 
> code depends on many of the trunk files?  The ‘trunk’ code could be making 
> significant changes (perhaps, some incompatible ones), and the ‘temporary’ 
> branch will have the version of the time the new files started, unless every 
> time ‘trunk’ changes everything is merged into the branch.  Besides, making a 
> branch, merging, ... also has the same problem of ‘polluting’ the timeline 
> with unnecessary history.
> 
> I would like to somehow temporarily store the file in the repo (like with a 
> STASH) but in a way that it will stay there even if I close the repo.
> 
> Any ideas or suggestions how to deal with this issue?
> 
> TIA.


-- 
asm32.info <johnfo...@asm32.info>
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to