0
Votes
- Moritz Venn
- PowerBuilder
- Monday, 12 February 2018 04:29 PM UTC
Since I felt like none of the other git related topics fit without me hijacking them, please excuse me starting another one...
I've been testing the git implementation in PowerBuilder 2017 R2 for internal use, but have come across a number of issues we hope to see resolved by the time we use it:
Pull is not working after IDE restart:
This one is a bit strange and possibly related to initialization problems.
After the project is loaded executing a pull is not possible unless a push is performed (Git client error: Generic error..).
At this point there are no new commits on the local checkout and the push either fails (new commits on remote results in "Git client error: Reference was not fast-forwardable..") or "succeeds" (no new commits on remote). Afterwards the pull works (mostly, see next point) fine.
This one is a bit strange and possibly related to initialization problems.
After the project is loaded executing a pull is not possible unless a push is performed (Git client error: Generic error..).
At this point there are no new commits on the local checkout and the push either fails (new commits on remote results in "Git client error: Reference was not fast-forwardable..") or "succeeds" (no new commits on remote). Afterwards the pull works (mostly, see next point) fine.
Pull always starts a merge:
This error shows itself in two possible ways, let's start with the "no new commits" scenario.
If there are no changes upstream the local checkout will enter the merge state, but while the ui says everything is fine the repository enters an unfinished merge state between HEAD and HEAD. When a new changeset is committed, it will be associated with the merge potentially hiding that an actual change happened due to the way the development history is rearranged (visually an observer might expect a merge operation without major code changes when in fact this is a commit incorrectly marked as merge).
If there are changes upstream which could be fast forwarded the implementation forces a merge commit. This might be fine for a single developer mostly using this to preserve his change history, but in a multi-developer scenario, this will result in a large amount of unnecessary changes (expect at least one per day per developer) rearranging the history in unexpected ways which in a worst case scenario requires manual merges with an external tool to resolve the base and source commit.
This error shows itself in two possible ways, let's start with the "no new commits" scenario.
If there are no changes upstream the local checkout will enter the merge state, but while the ui says everything is fine the repository enters an unfinished merge state between HEAD and HEAD. When a new changeset is committed, it will be associated with the merge potentially hiding that an actual change happened due to the way the development history is rearranged (visually an observer might expect a merge operation without major code changes when in fact this is a commit incorrectly marked as merge).
If there are changes upstream which could be fast forwarded the implementation forces a merge commit. This might be fine for a single developer mostly using this to preserve his change history, but in a multi-developer scenario, this will result in a large amount of unnecessary changes (expect at least one per day per developer) rearranging the history in unexpected ways which in a worst case scenario requires manual merges with an external tool to resolve the base and source commit.
This can both be worked around by executing the pull and then manually resetting the tree to HEAD^ (or HEAD for the unfinished merge), but you can expect people to forget this easily and this is nothing a novice version control user should be expected to know and/or do.
Only in case a merge is required one should appear in the commit history. While I personally would prefer to rebase local changes before committing, there is no immediate need for PowerBuilder to do this automatically.
Another minor grievance related to merging is the commit message which differs from upstream git default. It would be nice if it a variant of "Merge branch ''" instead of the static "remote pull commit" as it would be closer to the upstream message and stand out less.
Another minor grievance related to merging is the commit message which differs from upstream git default. It would be nice if it a variant of "Merge branch ''" instead of the static "remote pull commit" as it would be closer to the upstream message and stand out less.
How strange an apparent single developer development graph can look can be seen in multiple of the "AppeonTest" repositories on github, e.g. https://github.com/AppeonTest/pbexamples/network
The final minor issue thus far is that PowerBuilder appears to keep some file references active, meaning a "git gc" on a workspace opened in PowerBuilder might fail since pack files and the respective indexes can't be modified.
Since one can assume the next time git gc is run there is a new PowerBuilder instance running, the effect is minimal as long as external tools handle this correctly or this behavior should be fixed on their end.
This happens for regular as well as for "pull" commits. Changing to a git enabled workspace in an existing PowerBuilder instance shows similar behavior and changing to another workspace releases the resources.
Since one can assume the next time git gc is run there is a new PowerBuilder instance running, the effect is minimal as long as external tools handle this correctly or this behavior should be fixed on their end.
This happens for regular as well as for "pull" commits. Changing to a git enabled workspace in an existing PowerBuilder instance shows similar behavior and changing to another workspace releases the resources.
Regards
Moritz
Responses (1)
Loading...
Find Questions by Tag
.EXE
.NET 6.0
.NET Assembly
.NET Core 3.1
.NET Core Framework
.NET DataStore
.NET Std Framework
32-bit
64-bit
ADO.NET
AEM
AI
Algorithm
Amazon AWS
Android
Apache
API
APK
App Store
App Store (Apple)
Appeon Workspace
Appeon Xcelerator Plug-in
Architecture
Array
ASE
Asynchronous Methods
Authentication
AutoBuild
AutoCompiler
Automated Testing
Automation
AutoScript
Azure
Barcode
Base64
Batch
BigData
BLOB
Branch & Merge
Browser
Bug
Build
Button
C#
C# Class Importer
C# Editor
C# Model generator
Calendar
Camera
Certificate
Chrome
Citrix
Class
Client
Client/Server
Cloud
Cluster
Collection
COM
Command Line
Compiler
Compression
Computed Field
Configuration
Controls
Cookies
Cordova
Crash
Cross-Platform
Crosstab
CSharpAssembly
CSharpObject
CSS
CSV
Cursor
Data
Database
Database Driver
Database Painter
Database Profile
Database Provider
DataObject
DataSource
DataStore
DataStore (C#)
DataStore (PS)
DataType
DataWindow
DATE
DATETIME
DB2
Debug
Debugger
Debugging
Deployment
Design
DLL
DO-WHILE
Dockable
Docker
Documentation
DOUBLE
Download
DragDrop
Edge
Edit Style
Editor
Elevate Conference
Email
Embedded SQL
Emulator
Encoding
Encryption
Enhancement Request
Entity
Entity Framework
ERP
Error
Event
Event Handler
Event Handling
Excel
Exception
Export
Expression
External Functions
F#
Field
File
File Access
Filter
Firefox
Firewall
Font
FOR-NEXT
Foreground
Format
Function
Garbage Collection
GeoLocation
Git
Graph
HANA
Hash
Header
HTML/5
HTTP/S
HTTPClient
Icon
IDE
Identity
IIS
IMAPI
Import
InfoMaker
Inheritance
Installation
Integer
IntelliSense
Interface
Internet
Internet Explorer
iOS
IPA
iPad
iPhone
IWA
J#
Java
JavaScript
JBoss
JDBC
JOIN
JSON
JSONGenerator
JSONParser
Kestrel
Label
Lambda
Large File
LDAP
Library
License
LINQ
Linux OS
Load Balancing
Localization
Localized PBVM
Log In
Log Out
Logging
LONG
LONGLONG
macOS
MAPI
Maps
MDI
Memory
Memory Leak
Menu
Merge
MessageBox
Messagging
Method
Migration
MIME TYPE
Mobile
Model
ModelStore
ModelStore (C#)
MSOLEDBSQL
Multi Threading
MVC
MySQL
n-Tier
Namespace
NativePDF
NVO
OAuth
ODATA
ODBC
Office
Offline
OLE
OLEDB
Online
Open Source
OpenAPI
OpenSSL
Oracle
OrcaScript
Other
Outlook
Output
Package
Parameter
Patch
PayPal
PB Classic
PB Native
PB.NET
PBC
PBD
PBDOM
PBG
PBJVM
PBL
PBNI
PBORCA
PBVM
PBX
PDF
Performance
Permission
PFC
Picture
Pipeline
Play Store (Google)
Plugin
Popup
Port
POST
PostgreSQL
PowerBuilder
PowerBuilder (Appeon)
PowerBuilder (SAP)
PowerBuilder Compiler
PowerBuilder Runtime
PowerClient
PowerScript (PS)
PowerScript IDE
PowerScript Migrator
PowerServer
PowerServer Mobile
PowerServer Toolkit
PowerServer Web
PowerServerLabel
Print
Properties
Proxy
Publish
PULL
PUSH
Query
Regression
Release
Renew
Resize
Response
REST
Retrieve
RibbonBar
RibbonBar Builder
Rich Text
Roadmap
RPC
Runtime Packager
SaaS
Scaffolding
Script
SDI
SDK
Security
Server
Service
Session
Single Sign-on
Size
SMTP
SMTPClient
SnapDevelop
SOAP
Sort
Source Code
Speech Recognition
SQL
SQL Anywhere
SQL Server
SqlBuilder
SqlExecutor
SQLite
SqlModelMapper
Storage
Stored Procedure
Subscription
SVN
Swagger
Syntax
TabbedBar
TabbedView
Tablet
TabPage
Target
TE Control
Testing
Text
TFS
Theme
TIME
Timer
TLS/SSL
Tomcat
TortoiseGit
TortoiseSVN
Transaction
Transparency
Trial
Trigger
TRY-CATCH
TX Control
Type
UI
ULONG
UltraLite
Uninstall
Unit Test
Unit Testing
UNIX OS
Update
Upgrade
Upload
URL
User Center
User Object
UWP
Validation
VARCHAR
Variable
Versioning
Visual Studio
Visual Studio Code
VM
Voice
Warning
WCF
Web API
Web Extensions
Web Service
WebBrowser
WebForms
WebLogic
WebSphere
WildFly
WinAPI
Window
Windows OS
WinForms
Wizard
Workgroup
Workspace
WPF
XCODE
XHTML
XML
Zoom
✖
Helpful?
If a reply or comment is helpful for you, please don’t hesitate to click the Helpful button. This action is further confirmation of their invaluable contribution to the Appeon Community.