-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path_jlf_diary.txt
522 lines (429 loc) · 23.8 KB
/
_jlf_diary.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
ooRexx5 has too many changes, compared to ooRexx4.
Not possible to merge the changes for ooRexx5 into the Github repository Executor.
Hence the creation of a new Github repository Executor5...
===============================================================================
2022 aug 13
Concurrency trace:
Apply to executor5 the changes made in executor4 to display trace informations
related to SysSemaphore and SysMutex.
The code is compiled only in debug mode, the trace infos are sent to stderr
when the environment variable RXTRACE_CONCURRENCY=on.
A new method SysProcess::concurrencyTrace is used to test if the display is
activated. The old method InterpreterInstance::concurrencyTrace is still there
but should be removed.
The column T has alway a value.
It's either the thread of the current activity, or the current system thread.
The other columns can be empty.
The script tracer.rex has been adapted to support an empty R or A.
Example of output (simplified):
RXTRACE_CONCURRENCY=on rexx -e "nop"
...<cut>...
T1 ...... ... (SysMutex)Interpreter::dispatchLock.release : before pthread_mutex_unlock(0x357e470) from DispatchSection lock in ActivityManager::releaseAccess (0x0)
T1 ...... ... (SysMutex)Interpreter::dispatchLock.release : after pthread_mutex_unlock(0x357e470) from DispatchSection lock in ActivityManager::releaseAccess (0x0)
R2 T1 A7 1 *-* nop
T1 ...... ... (SysMutex)ActivityManager::kernelSemaphore.requestImmediate : before pthread_mutex_trylock(0x357ccf8) from ActivityManager::lockKernelImmediate (0x0)
T1 ...... ... (SysMutex)ActivityManager::kernelSemaphore.requestImmediate : after pthread_mutex_trylock(0x357ccf8) from ActivityManager::lockKernelImmediate (0x0)
R2 T1 A8 V4 ...... ... (SysMutex)Interpreter::dispatchLock.release : before pthread_mutex_unlock(0x357e470) from DispatchSection lock in Activity::setupCurrentActivity (0x0)
R2 T1 A8 V4 ...... ... (SysMutex)Interpreter::dispatchLock.release : after pthread_mutex_unlock(0x357e470) from DispatchSection lock in Activity::setupCurrentActivity (0x0)
...<cut>...
It's possible to have lines like that:
*** traceMutexPtr is NULL:...<cut>...
It's an indication that some traces are displayed before the pointer to the trace
function is set (rely on the initialization of static variables).
===============================================================================
2021 aug 31
Concurrency trace:
Before the change to use global counters, the identifiers in the column Thread
were system thread identifiers. Since this change, they are activities identifiers.
When running the JavaFX "address book" application from the BSF4ooRexx samples
directory "samples\JavaFX\fxml_99", it appears that the count of activities is
way bigger than the count of system threads (197 activities for 2 system threads).
Implementation modified to display again system thread identifiers.
For that, I use a collection to associate short ids with system threads.
It’s a C++ collection, not an ooRexx collection. Always-growing, this is not a
problem, because the number of system threads is limited (a few thousands).
===============================================================================
2021 aug 26
Concurrency trace:
Simplified integration, no need to get the value of RXTRACE_CONCURRENCY the earliest
possible, no need to collect concurrency informations from several places (contrary
to Executor where the concurrency trace is displayed for each semaphore in debug mode).
Impacted files:
.\cmakelists.txt
.\interpreter\concurrency\activity.cpp
.\interpreter\concurrency\activity.hpp
.\interpreter\execution\rexxactivation.cpp
.\interpreter\execution\rexxactivation.hpp
.\interpreter\execution\variabledictionary.cpp
.\interpreter\execution\variabledictionary.hpp
.\interpreter\platform\unix\sysinterpreterinstance.cpp
.\interpreter\platform\unix\sysinterpreterinstance.hpp
.\interpreter\platform\windows\sysinterpreterinstance.cpp
.\interpreter\platform\windows\sysinterpreterinstance.hpp
.\interpreter\runtime\interpreterinstance.cpp
.\interpreter\runtime\interpreterinstance.hpp
New file:
.\samples\tracer.rex
===============================================================================
2021 aug 25
Concurrency trace:
- Give up the integration in rexx.img. Now, the interpreter creates directly the
human-readable identifiers using global counters (Rony's suggestion).
- The classes for parsing the trace output are moved back to the script tracer.rex.
- The script tracer.rex no longer supports hexadecimal pointers as input.
- The script tracer.rex supports a new option -removePrefix to remove any text
up to (including) ">" in the first word of each input line. If spaces follow
the prefix, they are removed too.
Prefix removed, parsing starts at R3:
REXXtrc>R3 T7 A9 V4 1* 9 *-* if a > 10 then
MyPrefix> R3 T7 A9 V4 1* 9 *-* if a > 10 then
MyPrefix> R3 T7 A9 V4 1* 9 *-* if a > 10 then
Nothing removed, parsing starts at the 1st character:
My Prefix> R3 T7 A9 V4 1* 9 *-* if a > 10 then
R3 T7 A9 V4 1* 9 *-* if a > 10 then
R3 T7 A9 V4 1* 9 *-* if a > 10 then
===============================================================================
2021 aug 23
Concurrency trace:
- add a column for the interpreter instance (Rony's suggestion)
- enlarge the human-readable identifiers:
6 characters for interpreter and task ids: R or T followed by 0..99999
8 characters for activation and variable dictionary ids: A or V followed by 0..9999999
5 characters for reserve count
Tested with Code 13 and Code 19 described in 201202-CreatingOoRexxInterpreterInstances-article.pdf
- Interpreter1 declares a Command Handler TEST1
- Interpreter1 delegates to Interpreter2 the execution of the routine testSampleCommandHandler.rex
- testSampleCommandHandler addresses 3 times a command to TEST1
R1 R2
create R2
declare Command Handler TEST1
add Command Handler TEST1 to R2
delegate testSampleCommandHandler to R2
call testSampleCommandHandler
address test1 "hi"
SampleCommandHandler~handleCommand
return "Hi, who are you?"
RC => "Hi, who are you?"
address test1 "one plus two"
SampleCommandHandler~handleCommand
return 3
RC => "3"
address test1 "please panic a little bit"
SampleCommandHandler~handleCommand
raise syntax 35.900
condition caught
address test1 "nothing to do?"
SampleCommandHandler~handleCommand
return "Undefined command #" counter
RC => "Undefined command # 1"
return
terminate R2
R1 T1 A1 12 *-* rexxEngine~apply("from_rexSampleCommandHandler.rex", 0, 0, rexxCode, .nil, .nil)
R1 T1 A1 >V> REXXENGINE => "org.rexxla.bsf.engines.rexx.RexxEngine@6c474e40"
R1 T1 A1 >V> REXXCODE => "call 'testSampleCommandHandler.rex' "
R2 T1 A3 >I> Routine "/local/rexx/oorexx/scripts/CommandHandler/testSampleCommandHandler.rex" in package "/local/rexx/oorexx/scripts/CommandHandler/testSampleCommandHandler.rex".
R2 T1 A3 1 *-* address test1 "hi"
R1 T1 A4 V1 >I> Method "HANDLECOMMAND" with scope "SAMPLECOMMANDHANDLER" in package "/local/rexx/oorexx/scripts/CommandHandler/rexSampleCommandHandler.rxj".
R1 T1 A4 V1 1* 26 *-* use arg slot, address, command
R1 T1 A4 V1 1* >=> SLOT <= "[Ljava.lang.Object;@7a0f1664"
R1 T1 A4 V1 1* >=> ADDRESS <= "TEST1"
R1 T1 A4 V1 1* >=> COMMAND <= "hi"
R1 T1 A4 V1 1* 28 *-* if command~caselessEquals("Hi")
R1 T1 A4 V1 1* 28 *-* then
R1 T1 A4 V1 1* 28 *-* return "Hi, who are you?"
R2 T1 A3 2 *-* say "rc="pp2(rc)
R2 T1 A3 >V> RC => "Hi, who are you?"
===============================================================================
2021 aug 14
Rony implemented a class "humanizeTraceOutput" which transforms on the fly a
raw trace line into a human-readable trace line with concurrency infos. This
class is intended to be used with The TRACE OUTPUT monitor.
This class is now incorporated in rexx.img and automatically used by the TRACE
OUPUT monitor when the environment variable RXTRACE_ENVIRONMENT="on".
Remember:
The class Interpreter defines
static RexxObject *localServer; // local environment initialization server
This a variable common to ALL the interpreter instances.
Interpreter::startInterpreter creates the singleton instance of LOCALSERVER:
RexxClass *server_class = TheRexxPackage->findClass(new_string("LOCALSERVER"), t);
server_class->messageSend(GlobalNames::NEW, OREF_NULL, 0, result);
localServer = (RexxObject *)result;
Interpreter::initLocal sends the message "INITINSTANCE" to the singleton LOCALSERVER.
localServer->messageSend(new_string("INITINSTANCE"), OREF_NULL, 0, result);
So, each time a new interpreter instance is created, the message "INITINSTANCE"
is sent to the singleton LOCALSERVER.
See InterpreterInstance::initialize
The class LOCALSERVER is implemented in CoreClasses.orx.
Its "initInstance" method adds these entries in .local.
This .local is local to the current interpreter instance.
STDIN, INPUT, DEBUGINPUT
STDOUT, OUTPUT
STDERR, ERROR, TRACEOUTPUT
STDQUEUE
This method has been modified to set the destination of TRACEOUTPUT to an instance
of ConcurrencyTraceOutput (was humanizeTraceOutput) when
value('RXTRACE_CONCURRENCY', , 'ENVIRONMENT')~caselessEquals('on')
An interpreter instance is also initialized when shutdown.
Interpreter::initLocal
localServer->messageSend(new_string("INITINSTANCE"), OREF_NULL, 0, result);
InterpreterInstance::initialize
Interpreter::initLocal();
Interpreter::createInterpreterInstance
instance->initialize(rootActivity, options);
Interpreter::createInterpreterInstance
{ return createInterpreterInstance(NULL); }
InstanceBlock::InstanceBlock
instance = Interpreter::createInterpreterInstance();
InstanceBlock::InstanceBlock
<call constructor>
Interpreter::terminateInterpreter
// this may seem funny, but we need to create an instance
// to shut down so that the package manager can unload
// the libraries (it needs to pass a RexxThreadContext
// pointer out to package unloaders, if they are defined)
InstanceBlock instance;
// run whatever uninits we can before we start releasing the libraries
memoryObject.lastChanceUninit();
::Terminate
Interpreter::terminateInterpreter();
RexxInstance_::Terminate
functions->Terminate(this);
main
pgmInst->Terminate();
TODO:
See if it's possible to keep private the classes in ConcurrencyTraceClasses.orx
Currently, I must declare all of them public, otherwise they are not found when
the method "INITINSTANCE" is running, and the interpreter crashes (because of an
uncaught exception NOMETHOD).
[later]
I tried very hard to make it work with private classes...
Impossible!
Either exception NOMETHOD because the class is not found, and replaced by its .name
or crash for strange reasons like behaviour null.
===============================================================================
2021 aug 10
Concurrency trace backported from Executor.
The interpreter has been modified to add thread id, activation id, variable's dictionnary id,
lock counter and lock flag in the lines printed by trace.
Concurrency trace is displayed only when env variable RXTRACE_CONCURRENCY=ON
Informations that are displayed.
RexxActivity::traceOutput(RexxActivation *activation, ...
T1 SysCurrentThreadId(),
A2 (unsigned int)activation,
V1 (activation) ? activation->getVariableDictionary() : NULL // settings.object_variables
1 (activation) ? activation->getReserveCount() : 0 // settings.object_variables->getReserveCount()
* (activation && activation->isObjectScopeLocked()) ? '*' : ' ') // object_scope == SCOPE_RESERVED
-- Raw output, not easy to read
RXTRACE_CONCURRENCY=ON rexx concurrency_trace.rex
0000000092c58380 000000000466de00 0000000000000000 00000 1 *-* .demo~new~exec(1)
0000000092c58380 000000000466de00 0000000000000000 00000 >E> .DEMO => "The DEMO class"
0000000092c58380 000000000466de00 0000000000000000 00000 >M> "NEW" => "a DEMO"
0000000092c58380 000000000466de00 0000000000000000 00000 >L> "1"
0000000092c58380 000000000466de00 0000000000000000 00000 >A> "1"
0000000092c58380 0000000004679750 0000000004679980 00000 >I> Method "EXEC" with scope "DEMO" in package "/local/rexx/oorexx/executor/sandbox/jlf/demos/concurrency_trace.rex".
0000000092c58380 0000000004679750 0000000004679980 00001* 8 *-* use arg id
0000000092c58380 0000000004679750 0000000004679980 00001* >>> "1"
0000000092c58380 0000000004679750 0000000004679980 00001* >=> ID <= "1"
0000000092c58380 0000000004679750 0000000004679980 00001* 9 *-* reply
0000000092c58380 000000000466de00 0000000000000000 00000 2 *-* .demo~new~exec(2)
0000000092c58380 000000000466de00 0000000000000000 00000 >E> .DEMO => "The DEMO class"
0000000092c58380 000000000466de00 0000000000000000 00000 >M> "NEW" => "a DEMO"
0000000092c58380 000000000466de00 0000000000000000 00000 >L> "2"
0000000092c58380 000000000466de00 0000000000000000 00000 >A> "2"
0000000092c58380 0000000004681590 00000000046817c0 00000 >I> Method "EXEC" with scope "DEMO" in package "/local/rexx/oorexx/executor/sandbox/jlf/demos/concurrency_trace.rex".
0000000092c58380 0000000004681590 00000000046817c0 00001* 8 *-* use arg id
0000000092c58380 0000000004681590 00000000046817c0 00001* >>> "2"
0000000092c58380 0000000004681590 00000000046817c0 00001* >=> ID <= "2"
0000000092c58380 0000000004681590 00000000046817c0 00001* 9 *-* reply
000000000240c000 0000000004679750 0000000004679980 00001* >I> Method "EXEC" with scope "DEMO" in package "/local/rexx/oorexx/executor/sandbox/jlf/demos/concurrency_trace.rex".
000000000240c000 0000000004679750 0000000004679980 00001* 10 *-* do 2
etc...
-- Human-readable output, generated by piping the output through tracer.rex
RXTRACE_CONCURRENCY=ON rexx concurrency_trace.rex 2>&1 | rexx trace/tracer.rex
T1 A1 1 *-* .demo~new~exec(1)
T1 A1 >E> .DEMO => "The DEMO class"
T1 A1 >M> "NEW" => "a DEMO"
T1 A1 >L> "1"
T1 A1 >A> "1"
T1 A2 V1 >I> Method "EXEC" with scope "DEMO" in package "/local/rexx/oorexx/executor/sandbox/jlf/demos/concurrency_trace.rex".
T1 A2 V1 1* 8 *-* use arg id
T1 A2 V1 1* >>> "1"
T1 A2 V1 1* >=> ID <= "1"
T1 A2 V1 1* 9 *-* reply
T1 A1 2 *-* .demo~new~exec(2)
T1 A1 >E> .DEMO => "The DEMO class"
T1 A1 >M> "NEW" => "a DEMO"
T1 A1 >L> "2"
T1 A1 >A> "2"
T1 A3 V2 >I> Method "EXEC" with scope "DEMO" in package "/local/rexx/oorexx/executor/sandbox/jlf/demos/concurrency_trace.rex".
T1 A3 V2 1* 8 *-* use arg id
T1 A3 V2 1* >>> "2"
T1 A3 V2 1* >=> ID <= "2"
T1 A3 V2 1* 9 *-* reply
T2 A2 V1 1* >I> Method "EXEC" with scope "DEMO" in package "/local/rexx/oorexx/executor/sandbox/jlf/demos/concurrency_trace.rex".
T2 A2 V1 1* 10 *-* do 2
etc...
Program used for testing the concurrency trace:
/~https://github.com/jlfaucher/executor/blob/master/sandbox/jlf/demos/concurrency_trace.rex
Script tracer.rex:
/~https://github.com/jlfaucher/executor/blob/master/sandbox/jlf/samples/trace/tracer.rex
===============================================================================
2021 aug 09
6 years have passed...
A Mail from Rony gave me the idea to apply the changes for the concurrency trace.
First, an update of this repository to the latest SVN version.
===============================================================================
2015 aug 09
Review the warnings raised by AppleClang 6.1.0
main/trunk/interpreter/classes/NumberStringMath.cpp:374:14: warning: comparison of array
'this->numberDigits' equal to a null pointer is always false [-Wtautological-pointer-compare]
else if (numberDigits == 0 && digitsCount == 1)
^~~~~~~~~~~~ ~
-->
replace by numberDigits[0] == '\0'
main/trunk/interpreter/parser/LanguageParser.cpp:3547:23: warning: case value not in enumerated type
'TokenClass' [-Wswitch]
case OPERATOR_BACKSLASH:
^
-->
case TOKEN_OPERATOR:
{
replace switch (token->type())
by switch (token->subtype())
main/trunk/interpreter/platform/unix/TimeSupport.cpp:167:1: warning: control reaches end of non-void
-->
add return 0;
main/trunk/testbinaries/orxexits.hpp:37:9: warning: 'orxexits_included' is used as a header guard
here, followed by #define of a different macro [-Wheader-guard]
-->
replace #define orsexits_included
by #define orxexits_included
===============================================================================
2015 aug 08
Continue working on the build error "sized deallocation..."
A possible solution is to add a parameter to the operator new function of the class NumberArray:
void *operator new(size_t base, size_t entries, bool placement=true);
Another solution is to add this declaration to the class NumberArray:
inline void operator delete(void *) {;}
--> I choose the second solution because this is what's already in place for other classes.
Other build errors...
main\trunk\interpreter\api\InterpreterAPI.cpp(245):
error C3688: invalid literal suffix 'OOREXX_COPY_YEAR'; literal operator or literal operator template 'operator ""OOREXX_COPY_YEAR' not found
--> fixed by adding spaces before & after OOREXX_COPY_YEAR.
main\trunk\interpreter\platform\windows\SysInterpreterInstance.cpp(117):
error C2039: '_file': is not a member of '_iobuf'
--> fixed by replacing
if ((stdin->_file == -1)
by
if ((_fileno(stdin) < 0)
C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt\stdio.h(1927):
fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration
main\trunk\extensions\platform\windows\oodialog\APICommon.hpp(44):
note: see previous definition of 'snprintf'
--> fixed by no longer defining snprintf
#if _MSC_VER < 1900
#define snprintf _snprintf
#endif
Now build 100% with Visual Studio 2015 Community.
===============================================================================
2015 aug 02
Building with Visual Studio 2015 Community (cl 19.00.23026).
ClientMessage.cpp
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\stdint.h(17):
error C2371: 'int8_t': redefinition; different basic types
main\trunk\api\platform\windows\rexxapitypes.h(70): note: see declaration of 'int8_t'
...
and several others.
--> fixed by modifying CMakeLists.txt to have these checks under WIN32 too :
check_include_file(inttypes.h HAVE_INTTYPES_H)
check_include_file(stdint.h HAVE_STDINT_H)
and then including config.h in api\platform\windows\rexxapitypes.h
and testing HAVE_INTTYPES_H to let include inttypes.h (from Windows Kits\10) which includes stdint.h
main\trunk\interpreter\classes\ArrayClass.cpp(123):
error C2956: sized deallocation function 'operator delete(void*, size_t)' would be chosen as placement deallocation function.
predefined C++ types (compiler internal)(30): note: see declaration of 'operator delete'
https://llvm.org/bugs/show_bug.cgi?id=23513
https://connect.microsoft.com/VisualStudio/feedback/details/1351894
--> Current build error not yet fixed.
===============================================================================
2014 nov 11
Creation of the Github repository Executor5.
Procedure :
Using SmartGit, clone svn://svn.code.sf.net/p/oorexx/code-0/main (svn)
Add the remote git@github.com:jlfaucher/executor5.git (origin)
Push svn to origin
Remember, don't use
svn+ssh://jfaucher@svn.code.sf.net/p/oorexx/code-0/main
to avoid any accidental update of SVN repository.
2015 apr 26
Attempt to reclone because the history of revisions has a "hole" before rev 10464 "promote sandbox version to trunk".
But... see below, does not work.
Not a big problem, I can stay like that.
I keep the procedure, for the records.
Follow the procedure described here :
https://www.syntevo.com/smartgit/howtos/5/show?page=config.svn-clone-custom-branch-layout
because ooRexx SVN repository has not a standard branch layout.
Repository, Clone.
Check the box "Just initialize clone".
Click finish.
--> The repository is in state <incomplete>
Close the repository.
Edit the file .git/svn/.svngit/svngitkit.config
Replace the section [svn-git-remote "svn"] by :
[svn-git-remote "svn"]
url = svn://svn.code.sf.net/p/oorexx/code-0/main/trunk
fetch = trunk:refs/remotes/svn/trunk
branches = branches/*:refs/remotes/svn/branches/*
tags = releases/*:refs/remotes/svn/releases/*
additional-branches = "sandbox/rick/*:refs/remotes/sandbox/rick/*"
[svn-git-remote "svn"]
url = svn://svn.code.sf.net/p/oorexx/code-0/main
fetch = trunk:refs/remotes/svn/trunk
branches = branches/*:refs/remotes/svn/branches/*
tags = releases/*:refs/remotes/svn/releases/*
Reopen the repository in SmartGit.
Remote, Pull, Fetch only (rebase).
--> Display "Fetch".
When done, the repository is still in state <incomplete>.
Again : Remote, pull
--> Display "Restarting clone", and work in background (you see the progression in the bottom bar).
and... BOOM !
Repository is inconsistent (remote reference "refs/remotes/svn/branches/4.1 corresponds to SVN
remote "svn", but has no fetched SVN commit).
Please reclone the repository from scratch.
===============================================================================
History of merges.
rev 12506
rev 12500
rev 12486
rev 12286
rev 12283
rev 11510
rev 11410
rev 11306
rev 11184
rev 11110
rev 11051
rev 10999
rev 10958
rev 10950
rev 10924
rev 10916
rev 10897
rev 10881
rev 10880
rev 10839
rev 10835
rev 10688
Remember, to merge the last changes from SVN:
pull from SVN
open log
select most recent commit from SVN
Right clic: merge...
Select create merge commit (Merge remote-tracking branch 'svn/trunk')
Manage the conflicts, if any.
When all the conflict have been fixed, the status is still "merging-state". Will be reset by a commit.
Update the section History of merges in this file.
Commit the changes with message "Merged from branch 'trunk' svn rev <REV>"
push to Github: in log file, select most recent commit, right clic & choose push...
select the right repository : gihub