I've heard in several places "Don't make large commits" but I've never actually understood whats a "large" commit. Is it large if you work on a bunch of files even if there related? How many parts of a project should you be working on at once?
To me, I have trouble trying to make "small commits" since I forget or create something that creates something else that creates something else. You then end up with stuff like this:
Made custom outgoing queue Bot -New field msgQueue which is nothing more than a SingleThreadExecutor -sendMsg blocks until message is sent, and adds wait between when messages get sent -adminExist calls updated (see controller) -Removed calles to sendMessage Controller -New field msgWait denotes time to wait between messages -Starting of service plugins moved to reloadPlugins -adminExists moved from Server because of Global admins. Checks at the channel, server, and global level Admin -New methods getServer and getChannel that get the appropiate object Admin belongs to BotEvent -toString() also show's extra and extra1 Channel -channel field renamed to name -Fixed typo in channel(int) Server -Moved adminExists to Controller PluginExecutor -Minor testing added, will be removed later JS Plugins -Updated to framework changes -Replaced InstanceTracker.getController() with Controller.instance -VLC talk now in own file Various NB project updates and changes --- Affected files Modify /trunk/Quackbot-Core/dist/Quackbot-Core.jar Modify /trunk/Quackbot-Core/dist/README.TXT Modify /trunk/Quackbot-Core/nbproject/private/private.properties Modify /trunk/Quackbot-Core/nbproject/private/private.xml Modify /trunk/Quackbot-Core/src/Quackbot/Bot.java Modify /trunk/Quackbot-Core/src/Quackbot/Controller.java Modify /trunk/Quackbot-Core/src/Quackbot/PluginExecutor.java Modify /trunk/Quackbot-Core/src/Quackbot/info/Admin.java Modify /trunk/Quackbot-Core/src/Quackbot/info/BotEvent.java Modify /trunk/Quackbot-Core/src/Quackbot/info/Channel.java Modify /trunk/Quackbot-Core/src/Quackbot/info/Server.java Modify /trunk/Quackbot-GUI/dist/Quackbot-GUI.jar Modify /trunk/Quackbot-GUI/dist/README.TXT Modify /trunk/Quackbot-GUI/dist/lib/Quackbot-Core.jar Modify /trunk/Quackbot-GUI/nbproject/private/private.properties Modify /trunk/Quackbot-GUI/nbproject/private/private.xml Modify /trunk/Quackbot-GUI/src/Quackbot/GUI.java Modify /trunk/Quackbot-GUI/src/Quackbot/log/ControlAppender.java Delete /trunk/Quackbot-GUI/src/Quackbot/log/WriteOutput.java Modify /trunk/Quackbot-Impl/dist/Quackbot-Impl.jar Modify /trunk/Quackbot-Impl/dist/README.TXT Modify /trunk/Quackbot-Impl/dist/lib/Quackbot-Core.jar Modify /trunk/Quackbot-Impl/dist/lib/Quackbot-GUI.jar Modify /trunk/Quackbot-Impl/dist/lib/Quackbot-Plugins.jar Modify /trunk/Quackbot-Impl/lib/javarebel.stats Add /trunk/Quackbot-Impl/lib/jrebel.info Modify /trunk/Quackbot-Impl/nbproject/private/private.properties Modify /trunk/Quackbot-Impl/nbproject/private/private.xml Modify /trunk/Quackbot-Impl/nbproject/project.properties Modify /trunk/Quackbot-Impl/plugins/CMDs/Admin/reload.js Add /trunk/Quackbot-Impl/plugins/CMDs/Operator/hostBan Modify /trunk/Quackbot-Impl/plugins/CMDs/Operator/mute.js Modify /trunk/Quackbot-Impl/plugins/CMDs/lyokofreak/curPlaying.js Modify /trunk/Quackbot-Impl/plugins/CMDs/lyokofreak/lfautomode.js Modify /trunk/Quackbot-Impl/plugins/listeners/onJoin.js Modify /trunk/Quackbot-Impl/plugins/listeners/onQuit.js Modify /trunk/Quackbot-Impl/plugins/testCase.js Add /trunk/Quackbot-Impl/plugins/utils/whatsPlaying.js Modify /trunk/Quackbot-Impl/src/Quackbot/impl/SandBox.java Add /trunk/Quackbot-Impl/vlc_http Add /trunk/Quackbot-Impl/vlc_http/current.html Modify /trunk/Quackbot-Plugins/dist/Quackbot-Plugins.jar Modify /trunk/Quackbot-Plugins/dist/README.TXT Modify /trunk/Quackbot-Plugins/dist/lib/Quackbot-Core.jar Modify /trunk/Quackbot-Plugins/nbproject/private/private.properties Modify /trunk/Quackbot-Plugins/nbproject/private/private.xml Modify /trunk/Quackbot-Plugins/src/Quackbot/plugins/JSPlugin.java Add /trunk/Quackbot-Plugins/vlc_http Add /trunk/global-lib/jrebel.jar
Yea....
So for questions:
- What are some factors for when a commit becomes too large (non-obvious stuff)?
- How can you prevent such commits? Please give specifics
- What about when your in semi-early stages of development when things are moving quickly? Are huge commits still okay?